diff --git a/Disco.BI/BI/Extensions/DocumentTemplateExtensions.cs b/Disco.BI/BI/Extensions/DocumentTemplateExtensions.cs index 0e8db1d4..53740fd9 100644 --- a/Disco.BI/BI/Extensions/DocumentTemplateExtensions.cs +++ b/Disco.BI/BI/Extensions/DocumentTemplateExtensions.cs @@ -10,6 +10,7 @@ using iTextSharp.text.pdf; using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.IO; using System.Linq; namespace Disco.BI.Extensions @@ -45,15 +46,15 @@ namespace Disco.BI.Extensions return dt.PdfExpressionsFromCache(Database).Values.OrderBy(e => e.Ordinal).ToList(); } - public static System.IO.Stream GeneratePdfBulk(this DocumentTemplate dt, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, params string[] DataObjectsIds) + public static Stream GeneratePdfBulk(this DocumentTemplate dt, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, bool InsertBlankPages, params string[] DataObjectsIds) { - return Interop.Pdf.PdfGenerator.GenerateBulkFromTemplate(dt, Database, CreatorUser, Timestamp, DataObjectsIds); + return Interop.Pdf.PdfGenerator.GenerateBulkFromTemplate(dt, Database, CreatorUser, Timestamp, InsertBlankPages, DataObjectsIds); } - public static System.IO.Stream GeneratePdfBulk(this DocumentTemplate dt, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, params IAttachmentTarget[] DataObjects) + public static Stream GeneratePdfBulk(this DocumentTemplate dt, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, bool InsertBlankPages, params IAttachmentTarget[] DataObjects) { - return Interop.Pdf.PdfGenerator.GenerateBulkFromTemplate(dt, Database, CreatorUser, Timestamp, DataObjects); + return Interop.Pdf.PdfGenerator.GenerateBulkFromTemplate(dt, Database, CreatorUser, Timestamp, InsertBlankPages, DataObjects); } - public static System.IO.Stream GeneratePdf(this DocumentTemplate dt, DiscoDataContext Database, IAttachmentTarget Target, User CreatorUser, DateTime TimeStamp, DocumentState State, bool FlattenFields = false) + public static Stream GeneratePdf(this DocumentTemplate dt, DiscoDataContext Database, IAttachmentTarget Target, User CreatorUser, DateTime TimeStamp, DocumentState State, bool FlattenFields = false) { bool generateExpression = !string.IsNullOrEmpty(dt.OnGenerateExpression); string generateExpressionResult = null; @@ -70,7 +71,37 @@ namespace Disco.BI.Extensions return pdfStream; } - + public static Stream GeneratePdfPackage(this DocumentTemplatePackage package, DiscoDataContext Database, IAttachmentTarget Target, User CreatorUser, DateTime TimeStamp, DocumentState State) + { + return Interop.Pdf.PdfGenerator.GenerateFromPackage(package, Database, Target, CreatorUser, TimeStamp, State); + } + public static Stream GeneratePdfPackageBulk(this DocumentTemplatePackage package, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, bool InsertBlankPages, List DataObjectsIds) + { + return Interop.Pdf.PdfGenerator.GenerateBulkFromPackage(package, Database, CreatorUser, Timestamp, InsertBlankPages, DataObjectsIds); + } + public static Stream GeneratePdfPackageBulk(this DocumentTemplatePackage package, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, bool InsertBlankPages, List DataObjects) + { + return Interop.Pdf.PdfGenerator.GenerateBulkFromPackage(package, Database, CreatorUser, Timestamp, InsertBlankPages, DataObjects); + } + + public static List PdfPageHasAttachmentId(this DocumentTemplate dt, DiscoDataContext Database) + { + string templateFilename = dt.RepositoryFilename(Database); + if (!File.Exists(templateFilename)) + throw new FileNotFoundException("PDF template not found", templateFilename); + + PdfReader pdfReader = new PdfReader(templateFilename); + var result = new bool[pdfReader.NumberOfPages]; + var fieldNames = pdfReader.AcroFields.Fields.Keys.Where(key => key.Equals("DiscoAttachmentId", StringComparison.OrdinalIgnoreCase)).ToList(); + var fieldPositions = fieldNames.SelectMany(name => pdfReader.AcroFields.GetFieldPositions(name)); + foreach (var fieldPosition in fieldPositions) + { + result[fieldPosition.page - 1] = true; + } + pdfReader.Close(); + return result.ToList(); + } + public static void Delete(this DocumentTemplate dt, DiscoDataContext Database) { // Find & Rename all references diff --git a/Disco.BI/BI/Interop/Pdf/PdfGenerator.cs b/Disco.BI/BI/Interop/Pdf/PdfGenerator.cs index d1a664e5..178be17c 100644 --- a/Disco.BI/BI/Interop/Pdf/PdfGenerator.cs +++ b/Disco.BI/BI/Interop/Pdf/PdfGenerator.cs @@ -21,8 +21,106 @@ namespace Disco.BI.Interop.Pdf { public static class PdfGenerator { + public static Stream GenerateBulkFromPackage(DocumentTemplatePackage package, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, bool InsertBlankPages, List DataObjects) + { + if (DataObjects.Count > 0) + { + List generatedPdfs = new List(DataObjects.Count); + using (var state = DocumentState.DefaultState()) + { + foreach (var d in DataObjects) + { + generatedPdfs.Add(package.GeneratePdfPackage(Database, d, CreatorUser, Timestamp, state)); + state.SequenceNumber++; + state.FlushScopeCache(); + } + } + if (generatedPdfs.Count == 1) + { + return generatedPdfs[0]; + } + else + { + Stream bulkPdf = Utilities.JoinPdfs(InsertBlankPages, generatedPdfs); + foreach (Stream singlePdf in generatedPdfs) + singlePdf.Dispose(); + return bulkPdf; + } + } + return null; + } - public static Stream GenerateBulkFromTemplate(DocumentTemplate dt, DiscoDataContext Database, User CreatorUser, System.DateTime Timestamp, params IAttachmentTarget[] DataObjects) + public static Stream GenerateBulkFromPackage(DocumentTemplatePackage package, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, bool InsertBlankPages, List DataObjectsIds) + { + List DataObjects; + + switch (package.Scope) + { + case AttachmentTypes.Device: + DataObjects = Database.Devices.Where(d => DataObjectsIds.Contains(d.SerialNumber)).ToList(); + break; + case AttachmentTypes.Job: + int[] intDataObjectsIds = DataObjectsIds.Select(i => int.Parse(i)).ToArray(); + DataObjects = Database.Jobs.Where(j => intDataObjectsIds.Contains(j.Id)).ToList(); + break; + case AttachmentTypes.User: + DataObjects = new List(DataObjectsIds.Count); + for (int idIndex = 0; idIndex < DataObjectsIds.Count; idIndex++) + { + string dataObjectId = DataObjectsIds[idIndex]; + var user = UserService.GetUser(ActiveDirectory.ParseDomainAccountId(dataObjectId), Database, true); + if (user == null) + throw new Exception($"Unknown Username specified: {dataObjectId}"); + DataObjects.Add(user); + } + break; + default: + throw new InvalidOperationException("Invalid DocumentType Scope"); + } + + return GenerateBulkFromPackage(package, Database, CreatorUser, Timestamp, InsertBlankPages, DataObjects); + } + + public static Stream GenerateFromPackage(DocumentTemplatePackage package, DiscoDataContext Database, IAttachmentTarget Data, User CreatorUser, DateTime Timestamp, DocumentState State) + { + var templates = package.GetDocumentTemplates(Database); + + if (templates.Count == 0) + return null; + + bool generateExpression = !string.IsNullOrEmpty(package.OnGenerateExpression); + string generateExpressionResult = null; + + if (generateExpression) + generateExpressionResult = package.EvaluateOnGenerateExpression(Data, Database, CreatorUser, Timestamp, State); + + List generatedPdfs = new List(templates.Count); + foreach (var template in templates) + { + generatedPdfs.Add(template.GeneratePdf(Database, Data, CreatorUser, Timestamp, State, true)); + + State.SequenceNumber++; + State.FlushScopeCache(); + } + + if (generateExpression) + DocumentsLog.LogDocumentPackageGenerated(package, Data, CreatorUser, generateExpressionResult); + else + DocumentsLog.LogDocumentPackageGenerated(package, Data, CreatorUser); + + if (generatedPdfs.Count == 1) + { + return generatedPdfs[0]; + } + else + { + Stream bulkPdf = Utilities.JoinPdfs(package.InsertBlankPages, generatedPdfs); + foreach (Stream singlePdf in generatedPdfs) + singlePdf.Dispose(); + return bulkPdf; + } + } + public static Stream GenerateBulkFromTemplate(DocumentTemplate dt, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, bool InsertBlankPages, params IAttachmentTarget[] DataObjects) { if (DataObjects.Length > 0) { @@ -42,7 +140,7 @@ namespace Disco.BI.Interop.Pdf } else { - Stream bulkPdf = Utilities.JoinPdfs(generatedPdfs.ToArray()); + Stream bulkPdf = Utilities.JoinPdfs(InsertBlankPages, generatedPdfs); foreach (Stream singlePdf in generatedPdfs) singlePdf.Dispose(); return bulkPdf; @@ -51,7 +149,7 @@ namespace Disco.BI.Interop.Pdf return null; } - public static Stream GenerateBulkFromTemplate(DocumentTemplate dt, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, params string[] DataObjectsIds) + public static Stream GenerateBulkFromTemplate(DocumentTemplate dt, DiscoDataContext Database, User CreatorUser, DateTime Timestamp, bool InsertBlankPages, params string[] DataObjectsIds) { IAttachmentTarget[] DataObjects; @@ -72,14 +170,14 @@ namespace Disco.BI.Interop.Pdf DataObjects[idIndex] = UserService.GetUser(ActiveDirectory.ParseDomainAccountId(dataObjectId), Database, true); if (DataObjects[idIndex] == null) - throw new Exception(string.Format("Unknown Username specified: {0}", dataObjectId)); + throw new Exception($"Unknown Username specified: {dataObjectId}"); } break; default: throw new InvalidOperationException("Invalid DocumentType Scope"); } - return GenerateBulkFromTemplate(dt, Database, CreatorUser, Timestamp, DataObjects); + return GenerateBulkFromTemplate(dt, Database, CreatorUser, Timestamp, InsertBlankPages, DataObjects); } public static Stream GenerateFromTemplate(DocumentTemplate dt, DiscoDataContext Database, IAttachmentTarget Data, User CreatorUser, DateTime TimeStamp, DocumentState State, bool FlattenFields = false) diff --git a/Disco.BI/BI/Interop/Pdf/Utilities.cs b/Disco.BI/BI/Interop/Pdf/Utilities.cs index 3a46edbf..e2e4c8bd 100644 --- a/Disco.BI/BI/Interop/Pdf/Utilities.cs +++ b/Disco.BI/BI/Interop/Pdf/Utilities.cs @@ -1,41 +1,50 @@ using iTextSharp.text; using iTextSharp.text.pdf; +using System.Collections.Generic; +using System.IO; namespace Disco.BI.Interop.Pdf { public static class Utilities { - public static System.IO.Stream JoinPdfs(params System.IO.Stream[] Pdfs) + public static Stream JoinPdfs(bool InsertBlankPages, List Pdfs) { - if (Pdfs.Length == 0) - throw new System.ArgumentNullException("Pdfs"); + if (Pdfs.Count == 0) + throw new System.ArgumentNullException(nameof(Pdfs)); // Only One PDF - Possible Reference Bug v's Memory/Speed (Returning Param Memory Stream) - if (Pdfs.Length == 1) + if (Pdfs.Count == 1) return Pdfs[0]; // Join Pdfs - System.IO.MemoryStream msBuilder = new System.IO.MemoryStream(); - - Document pdfDoc = new Document(); - PdfCopy pdfCopy = new PdfCopy(pdfDoc, msBuilder); + var msBuilder = new MemoryStream(); + + var pdfLastPageSize = PageSize.A4; + var pdfDoc = new Document(); + var pdfCopy = new PdfSmartCopy(pdfDoc, msBuilder); pdfDoc.Open(); pdfCopy.CloseStream = false; - for (int i = 0; i < Pdfs.Length; i++) + for (int i = 0; i < Pdfs.Count; i++) { - System.IO.Stream pdf = Pdfs[i]; - PdfReader pdfReader = new PdfReader(pdf); + var pdf = Pdfs[i]; + var pdfReader = new PdfReader(pdf); for (int indexPage = 1; indexPage <= pdfReader.NumberOfPages; indexPage++) { - iTextSharp.text.Rectangle pageSize = pdfReader.GetPageSizeWithRotation(indexPage); - PdfImportedPage page = pdfCopy.GetImportedPage(pdfReader, indexPage); - pdfDoc.SetPageSize(pageSize); + pdfLastPageSize = pdfReader.GetPageSizeWithRotation(indexPage); + var page = pdfCopy.GetImportedPage(pdfReader, indexPage); + pdfDoc.SetPageSize(pdfLastPageSize); pdfDoc.NewPage(); pdfCopy.AddPage(page); } + if (InsertBlankPages && (pdfCopy.PageNumber % 2) != 0) + { + pdfDoc.NewPage(); + pdfCopy.AddPage(pdfLastPageSize, 0); + } + pdfReader.Close(); } diff --git a/Disco.Data/Configuration/Modules/DocumentsConfiguration.cs b/Disco.Data/Configuration/Modules/DocumentsConfiguration.cs new file mode 100644 index 00000000..e8cd960c --- /dev/null +++ b/Disco.Data/Configuration/Modules/DocumentsConfiguration.cs @@ -0,0 +1,19 @@ +using Disco.Data.Repository; +using Disco.Models.Services.Documents; +using System.Collections.Generic; + +namespace Disco.Data.Configuration.Modules +{ + public class DocumentsConfiguration : ConfigurationBase + { + public DocumentsConfiguration(DiscoDataContext Database) : base(Database) { } + + public override string Scope { get { return "Documents"; } } + + public List Packages + { + get { return Get>(null); } + set { Set(value); } + } + } +} diff --git a/Disco.Data/Configuration/SystemConfiguration.cs b/Disco.Data/Configuration/SystemConfiguration.cs index 60b6d7e1..8b2bb1f9 100644 --- a/Disco.Data/Configuration/SystemConfiguration.cs +++ b/Disco.Data/Configuration/SystemConfiguration.cs @@ -11,12 +11,13 @@ namespace Disco.Data.Configuration : base(Database) { // Init Modules - this.moduleBootstrapperConfiguration = new Lazy(() => new Modules.BootstrapperConfiguration(Database)); - this.moduleDeviceProfilesConfiguration = new Lazy(() => new Modules.DeviceProfilesConfiguration(Database)); - this.moduleOrganisationAddressesConfiguration = new Lazy(() => new Modules.OrganisationAddressesConfiguration(Database)); - this.moduleJobPreferencesConfiguration = new Lazy(() => new Modules.JobPreferencesConfiguration(Database)); - this.moduleActiveDirectoryConfiguration = new Lazy(() => new Modules.ActiveDirectoryConfiguration(Database)); - this.moduleDevicesConfiguration = new Lazy(() => new Modules.DevicesConfiguration(Database)); + moduleBootstrapperConfiguration = new Lazy(() => new Modules.BootstrapperConfiguration(Database)); + moduleDeviceProfilesConfiguration = new Lazy(() => new Modules.DeviceProfilesConfiguration(Database)); + moduleOrganisationAddressesConfiguration = new Lazy(() => new Modules.OrganisationAddressesConfiguration(Database)); + moduleJobPreferencesConfiguration = new Lazy(() => new Modules.JobPreferencesConfiguration(Database)); + moduleActiveDirectoryConfiguration = new Lazy(() => new Modules.ActiveDirectoryConfiguration(Database)); + moduleDevicesConfiguration = new Lazy(() => new Modules.DevicesConfiguration(Database)); + moduleDocumentsConfiguration = new Lazy(() => new Modules.DocumentsConfiguration(Database)); } #region Configuration Modules @@ -27,6 +28,7 @@ namespace Disco.Data.Configuration private Lazy moduleJobPreferencesConfiguration; private Lazy moduleActiveDirectoryConfiguration; private Lazy moduleDevicesConfiguration; + private Lazy moduleDocumentsConfiguration; public Modules.BootstrapperConfiguration Bootstrapper { @@ -71,6 +73,14 @@ namespace Disco.Data.Configuration } } + public Modules.DocumentsConfiguration Documents + { + get + { + return moduleDocumentsConfiguration.Value; + } + } + #endregion public override string Scope { get { return "System"; } } @@ -79,7 +89,7 @@ namespace Disco.Data.Configuration { get { - var result = this.Get(null); + var result = Get(null); if (result == null) { var appDataPath = System.Web.HttpContext.Current.Server.MapPath("~/App_Data"); @@ -102,7 +112,7 @@ namespace Disco.Data.Configuration storePath = value; else storePath = string.Concat(value, '\\'); - this.Set(storePath); + Set(storePath); } } @@ -110,7 +120,7 @@ namespace Disco.Data.Configuration { get { - return this.Get("Domain Admins,Disco Admins"); + return Get("Domain Admins,Disco Admins"); } set { @@ -123,21 +133,21 @@ namespace Disco.Data.Configuration { get { - return System.IO.Path.Combine(this.DataStoreLocation, @"Plugins\"); + return System.IO.Path.Combine(DataStoreLocation, @"Plugins\"); } } public string PluginStorageLocation { get { - return System.IO.Path.Combine(this.DataStoreLocation, @"PluginStorage\"); + return System.IO.Path.Combine(DataStoreLocation, @"PluginStorage\"); } } public string PluginPackagesLocation { get { - return System.IO.Path.Combine(this.DataStoreLocation, @"PluginPackages\"); + return System.IO.Path.Combine(DataStoreLocation, @"PluginPackages\"); } } #endregion @@ -155,7 +165,7 @@ namespace Disco.Data.Configuration { get { - var path = this.OrganisationLogoPath; + var path = OrganisationLogoPath; if (File.Exists(path)) return File.GetLastWriteTimeUtc(path).ToBinary().ToString(); else @@ -166,7 +176,7 @@ namespace Disco.Data.Configuration { get { - var path = this.OrganisationLogoPath; + var path = OrganisationLogoPath; if (File.Exists(path)) return new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read); else @@ -174,7 +184,7 @@ namespace Disco.Data.Configuration } set { - string organisationLogoPath = this.OrganisationLogoPath; + string organisationLogoPath = OrganisationLogoPath; if (value == null) { if (System.IO.File.Exists(organisationLogoPath)) @@ -194,22 +204,22 @@ namespace Disco.Data.Configuration { get { - return this.Get(null); + return Get(null); } set { - this.Set(value); + Set(value); } } public bool MultiSiteMode { get { - return this.Get(false); + return Get(false); } set { - this.Set(value); + Set(value); } } #endregion @@ -219,44 +229,44 @@ namespace Disco.Data.Configuration { get { - return this.Get(null); + return Get(null); } set { - this.Set(value); + Set(value); } } public int ProxyPort { get { - return this.Get(8080); + return Get(8080); } set { - this.Set(value); + Set(value); } } public string ProxyUsername { get { - return this.Get(null); + return Get(null); } set { - this.Set(value); + Set(value); } } public string ProxyPassword { get { - return this.GetDeobsfucated(null); + return GetDeobsfucated(null); } set { - this.SetObsfucated(value); + SetObsfucated(value); } } #endregion @@ -266,14 +276,14 @@ namespace Disco.Data.Configuration { get { - return this.Get(null); + return Get(null); } } public string DeploymentSecret { get { - return this.Get(null); + return Get(null); } } public short DeploymentChecksum @@ -296,25 +306,25 @@ namespace Disco.Data.Configuration { get { - return this.Get(null); + return Get(null); } set { - this.Set(value); + Set(value); } } public bool UpdateBetaDeployment { get { - return this.Get(false); + return Get(false); } } public Version InstalledDatabaseVersion { get { - var versionString = this.Get(null); + var versionString = Get(null); if (string.IsNullOrEmpty(versionString)) return null; else @@ -322,7 +332,7 @@ namespace Disco.Data.Configuration } set { - this.Set(value.ToString(4)); + Set(value.ToString(4)); } } #endregion diff --git a/Disco.Data/Disco.Data.csproj b/Disco.Data/Disco.Data.csproj index f1445a74..338ae8b6 100644 --- a/Disco.Data/Disco.Data.csproj +++ b/Disco.Data/Disco.Data.csproj @@ -77,6 +77,7 @@ + diff --git a/Disco.Models/Disco.Models.csproj b/Disco.Models/Disco.Models.csproj index c1d8b420..82d54838 100644 --- a/Disco.Models/Disco.Models.csproj +++ b/Disco.Models/Disco.Models.csproj @@ -60,6 +60,7 @@ + @@ -157,10 +158,12 @@ + + diff --git a/Disco.Models/Repository/DocumentTemplate/DocumentTemplate.cs b/Disco.Models/Repository/DocumentTemplate/DocumentTemplate.cs index cdc2cdf6..9e2611bf 100644 --- a/Disco.Models/Repository/DocumentTemplate/DocumentTemplate.cs +++ b/Disco.Models/Repository/DocumentTemplate/DocumentTemplate.cs @@ -1,7 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/Disco.Models/Services/Documents/DocumentTemplatePackage.cs b/Disco.Models/Services/Documents/DocumentTemplatePackage.cs new file mode 100644 index 00000000..15c6c1e3 --- /dev/null +++ b/Disco.Models/Services/Documents/DocumentTemplatePackage.cs @@ -0,0 +1,31 @@ +using Disco.Models.Repository; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace Disco.Models.Services.Documents +{ + public class DocumentTemplatePackage + { + [Key, StringLength(30), Required] + public string Id { get; set; } + [StringLength(250), Required] + public string Description { get; set; } + [Required] + public AttachmentTypes Scope { get; set; } + public List JobSubTypes { get; set; } + + public List DocumentTemplateIds { get; set; } + + [DataType(DataType.MultilineText)] + public string FilterExpression { get; set; } + [DataType(DataType.MultilineText)] + public string OnGenerateExpression { get; set; } + + public bool IsHidden { get; set; } + + /// + /// Indicates blank pages should be added so that documents will be separated when duplex printed. + /// + public bool InsertBlankPages { get; set; } + } +} diff --git a/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateCreateModel.cs b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateCreateModel.cs index bede3e76..68fb7615 100644 --- a/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateCreateModel.cs +++ b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateCreateModel.cs @@ -1,24 +1,20 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; namespace Disco.Models.UI.Config.DocumentTemplate { public interface ConfigDocumentTemplateCreateModel : BaseUIModel { - Disco.Models.Repository.DocumentTemplate DocumentTemplate { get; set; } + Repository.DocumentTemplate DocumentTemplate { get; set; } List Types { get; set; } List SubTypes { get; set; } - List JobTypes { get; set; } - List JobSubTypes { get; set; } + List JobTypes { get; set; } + List JobSubTypes { get; set; } List Scopes { get; } - List GetJobTypes { get; } - List GetJobSubTypes { get; } + List GetJobTypes { get; } + List GetJobSubTypes { get; } } } diff --git a/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateCreatePackageModel.cs b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateCreatePackageModel.cs new file mode 100644 index 00000000..86f1c795 --- /dev/null +++ b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateCreatePackageModel.cs @@ -0,0 +1,12 @@ +using Disco.Models.Services.Documents; +using System.Collections.Generic; + +namespace Disco.Models.UI.Config.DocumentTemplate +{ + public interface ConfigDocumentTemplateCreatePackageModel : BaseUIModel + { + DocumentTemplatePackage Package { get; set; } + + List Scopes { get; } + } +} diff --git a/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateIndexModel.cs b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateIndexModel.cs index 25502fe6..14580800 100644 --- a/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateIndexModel.cs +++ b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateIndexModel.cs @@ -1,9 +1,12 @@ -using System.Collections.Generic; +using Disco.Models.Services.Documents; +using System.Collections.Generic; namespace Disco.Models.UI.Config.DocumentTemplate { public interface ConfigDocumentTemplateIndexModel : BaseUIModel { Dictionary DocumentTemplates { get; set; } + + List Packages { get; set; } } } diff --git a/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateShowModel.cs b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateShowModel.cs index e91fe8b5..70c41456 100644 --- a/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateShowModel.cs +++ b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateShowModel.cs @@ -1,17 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; namespace Disco.Models.UI.Config.DocumentTemplate { public interface ConfigDocumentTemplateShowModel : BaseUIModel { - Disco.Models.Repository.DocumentTemplate DocumentTemplate { get; set; } + Repository.DocumentTemplate DocumentTemplate { get; set; } int StoredInstanceCount { get; set; } + List TemplatePagesHaveAttachmentId { get; set; } + int TemplatePageCount { get; } - List JobTypes { get; set; } + List JobTypes { get; set; } List Scopes { get; } } diff --git a/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateShowPackageModel.cs b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateShowPackageModel.cs new file mode 100644 index 00000000..d0f722ea --- /dev/null +++ b/Disco.Models/UI/Config/DocumentTemplate/ConfigDocumentTemplateShowPackageModel.cs @@ -0,0 +1,18 @@ +using Disco.Models.Repository; +using Disco.Models.Services.Documents; +using System.Collections.Generic; + +namespace Disco.Models.UI.Config.DocumentTemplate +{ + public interface ConfigDocumentTemplateShowPackageModel : BaseUIModel + { + DocumentTemplatePackage Package { get; set; } + List JobSubTypesSelected { get; set; } + List DocumentTemplates { get; set; } + List DocumentTemplatesSelected { get; set; } + + List JobTypes { get; set; } + + List Scopes { get; } + } +} diff --git a/Disco.Models/UI/Device/DeviceShowModel.cs b/Disco.Models/UI/Device/DeviceShowModel.cs index 3a7abaab..bfa52840 100644 --- a/Disco.Models/UI/Device/DeviceShowModel.cs +++ b/Disco.Models/UI/Device/DeviceShowModel.cs @@ -1,4 +1,5 @@ using Disco.Models.BI.Config; +using Disco.Models.Services.Documents; using Disco.Models.Services.Jobs.JobLists; using System.Collections.Generic; @@ -18,5 +19,6 @@ namespace Disco.Models.UI.Device List Certificates { get; set; } List DocumentTemplates { get; set; } + List DocumentTemplatePackages { get; set; } } } diff --git a/Disco.Models/UI/Job/JobShowModel.cs b/Disco.Models/UI/Job/JobShowModel.cs index 229a3002..ab20c850 100644 --- a/Disco.Models/UI/Job/JobShowModel.cs +++ b/Disco.Models/UI/Job/JobShowModel.cs @@ -1,4 +1,5 @@ -using Disco.Models.Services.Job; +using Disco.Models.Services.Documents; +using Disco.Models.Services.Job; using Disco.Models.Services.Jobs.JobLists; using System; using System.Collections.Generic; @@ -10,6 +11,7 @@ namespace Disco.Models.UI.Job Repository.Job Job { get; set; } TimeSpan? LongRunning { get; set; } List AvailableDocumentTemplates { get; set; } + List AvailableDocumentTemplatePackages { get; set; } List UpdatableJobSubTypes { get; set; } List AvailableQueues { get; set; } diff --git a/Disco.Models/UI/User/UserShowModel.cs b/Disco.Models/UI/User/UserShowModel.cs index fbd7c607..acd25af8 100644 --- a/Disco.Models/UI/User/UserShowModel.cs +++ b/Disco.Models/UI/User/UserShowModel.cs @@ -1,5 +1,6 @@ using Disco.Models.Repository; using Disco.Models.Services.Authorization; +using Disco.Models.Services.Documents; using Disco.Models.Services.Jobs.JobLists; using System.Collections.Generic; @@ -10,6 +11,7 @@ namespace Disco.Models.UI.User Disco.Models.Repository.User User { get; set; } JobTableModel Jobs { get; set; } List DocumentTemplates { get; set; } + List DocumentTemplatePackages { get; set; } List AvailableUserFlags { get; set; } diff --git a/Disco.Services/Devices/DeviceExtensions.cs b/Disco.Services/Devices/DeviceExtensions.cs index 69ef9714..d330f5f7 100644 --- a/Disco.Services/Devices/DeviceExtensions.cs +++ b/Disco.Services/Devices/DeviceExtensions.cs @@ -2,6 +2,7 @@ using Disco.Models.Repository; using Disco.Models.Services.Documents; using Disco.Services.Authorization; +using Disco.Services.Documents; using Disco.Services.Expressions; using Disco.Services.Interop.ActiveDirectory; using Disco.Services.Users; @@ -54,6 +55,10 @@ namespace Disco.Services return ats.Where(at => at.FilterExpressionMatches(d, Database, User, TimeStamp, DocumentState.DefaultState())).ToList(); } + public static List AvailableDocumentTemplatePackages(this Device d, DiscoDataContext Database, User TechnicianUser) + { + return DocumentTemplatePackages.AvailablePackages(d, Database, TechnicianUser); + } public static bool UpdateLastNetworkLogonDate(this Device Device) { diff --git a/Disco.Services/Disco.Services.csproj b/Disco.Services/Disco.Services.csproj index 6764e439..d42a2af0 100644 --- a/Disco.Services/Disco.Services.csproj +++ b/Disco.Services/Disco.Services.csproj @@ -281,9 +281,11 @@ + + diff --git a/Disco.Services/Documents/DocumentTemplateExpressionExtensions.cs b/Disco.Services/Documents/DocumentTemplateExpressionExtensions.cs index 3bf5c757..9a8d2f0e 100644 --- a/Disco.Services/Documents/DocumentTemplateExpressionExtensions.cs +++ b/Disco.Services/Documents/DocumentTemplateExpressionExtensions.cs @@ -4,7 +4,6 @@ using Disco.Models.Services.Documents; using Disco.Services.Documents; using Disco.Services.Expressions; using System; -using System.Collections; using System.Collections.Generic; namespace Disco.Services @@ -27,11 +26,11 @@ namespace Disco.Services { if (!string.IsNullOrEmpty(dt.FilterExpression)) { - Expression compiledExpression = dt.FilterExpressionFromCache(); - System.Collections.IDictionary evaluatorVariables = Expression.StandardVariables(dt, Database, User, TimeStamp, State); + var compiledExpression = dt.FilterExpressionFromCache(); + var evaluatorVariables = Expression.StandardVariables(dt, Database, User, TimeStamp, State); try { - object er = compiledExpression.EvaluateFirst(Data, evaluatorVariables); + var er = compiledExpression.EvaluateFirst(Data, evaluatorVariables); if (er is bool) { return (bool)er; @@ -60,25 +59,18 @@ namespace Disco.Services ExpressionCache.InvalidateKey("DocumentTemplate_OnImportExpression", dt.Id); } - public static string EvaluateOnAttachmentImportExpression(this DocumentTemplate dt, object Data, DiscoDataContext Database, User User, DateTime TimeStamp, List PageIdentifiers) + public static string EvaluateOnAttachmentImportExpression(this DocumentTemplate dt, IAttachment Data, DiscoDataContext Database, User User, DateTime TimeStamp, List PageIdentifiers) { if (!string.IsNullOrEmpty(dt.OnImportAttachmentExpression)) { - Expression compiledExpression = dt.OnImportAttachmentExpressionFromCache(); - IDictionary evaluatorVariables = Expression.StandardVariables(dt, Database, User, TimeStamp, null); + var compiledExpression = dt.OnImportAttachmentExpressionFromCache(); + var evaluatorVariables = Expression.StandardVariables(dt, Database, User, TimeStamp, null); evaluatorVariables.Add("PageIdentifiers", PageIdentifiers); - try - { - object result = compiledExpression.EvaluateFirst(Data, evaluatorVariables); - if (result == null) - return null; - else - return result.ToString(); - } - catch - { - throw; - } + var result = compiledExpression.EvaluateFirst(Data, evaluatorVariables); + if (result == null) + return null; + else + return result.ToString(); } return null; } @@ -97,17 +89,11 @@ namespace Disco.Services { 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; - } + var compiledExpression = dt.OnGenerateExpressionFromCache(); + var evaluatorVariables = Expression.StandardVariables(dt, Database, User, TimeStamp, State); + + var result = compiledExpression.EvaluateFirst(Data, evaluatorVariables); + return result.ToString(); } return null; } diff --git a/Disco.Services/Documents/DocumentTemplateExtensions.cs b/Disco.Services/Documents/DocumentTemplateExtensions.cs index 0c2a7984..2b9c2b12 100644 --- a/Disco.Services/Documents/DocumentTemplateExtensions.cs +++ b/Disco.Services/Documents/DocumentTemplateExtensions.cs @@ -1,16 +1,13 @@ using Disco.Data.Repository; using Disco.Models.Repository; using System; -using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Disco.Services { - public static class DocumentTemplateActionExtensions + public static class DocumentTemplateExtensions { public static Bitmap GenerateTemplatePreview(this DocumentTemplate DocumentTemplate, DiscoDataContext Database, int Width, int PageGapHeight, bool DrawPageBorder) diff --git a/Disco.Services/Documents/DocumentTemplatePackageExtensions.cs b/Disco.Services/Documents/DocumentTemplatePackageExtensions.cs new file mode 100644 index 00000000..c09a3278 --- /dev/null +++ b/Disco.Services/Documents/DocumentTemplatePackageExtensions.cs @@ -0,0 +1,143 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Documents; +using Disco.Services.Expressions; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Disco.Services +{ + public static class DocumentTemplatePackageExtensions + { + public static List GetJobSubTypes(this DocumentTemplatePackage package, IEnumerable JobSubTypes) + { + var result = new List(); + + if (package.JobSubTypes != null && package.JobSubTypes.Count > 0) + { + foreach (var jobSubTypeRefId in package.JobSubTypes) + { + var jobTypeId = jobSubTypeRefId.Substring(0, jobSubTypeRefId.IndexOf('_')); + var jobSubTypeId = jobSubTypeRefId.Substring(jobTypeId.Length + 1); + result.Add(JobSubTypes.First(jst => jst.JobTypeId == jobTypeId && jst.Id == jobSubTypeId)); + } + } + + return result; + } + + public static List GetDocumentTemplates(this DocumentTemplatePackage package, DiscoDataContext Database) + { + var result = new List(); + + if (package.DocumentTemplateIds != null && package.DocumentTemplateIds.Count > 0) + { + var dbScope = package.Scope.ToString(); + var dbTemplates = Database.DocumentTemplates + .Where(dt => package.DocumentTemplateIds.Contains(dt.Id) && dt.Scope == dbScope) + .ToList(); + + foreach (var id in package.DocumentTemplateIds) + { + var template = dbTemplates.FirstOrDefault(t => t.Id.Equals(id, StringComparison.OrdinalIgnoreCase)); + if (template != null) + { + result.Add(template); + } + } + } + + return result; + } + + public static List GetDocumentTemplates(this DocumentTemplatePackage package, IEnumerable DocumentTemplates) + { + var result = new List(); + + if (package.DocumentTemplateIds != null && package.DocumentTemplateIds.Count > 0) + { + var dbScope = package.Scope.ToString(); + foreach (var id in package.DocumentTemplateIds) + { + var template = DocumentTemplates.FirstOrDefault(t => t.Id == id && t.Scope == dbScope); + if (template != null) + { + result.Add(template); + } + } + } + + return result; + } + + public static Expression FilterExpressionFromCache(this DocumentTemplatePackage package) + { + return ExpressionCache.GetValue("DocumentTemplatePackage_FilterExpression", package.Id, () => { return Expression.TokenizeSingleDynamic(null, package.FilterExpression, 0); }); + } + + public static void FilterExpressionInvalidateCache(this DocumentTemplatePackage package) + { + ExpressionCache.InvalidateKey("DocumentTemplatePackage_FilterExpression", package.Id); + } + + public static bool FilterExpressionMatches(this DocumentTemplatePackage package, object Data, DiscoDataContext Database, User User, DateTime TimeStamp, DocumentState State) + { + if (!string.IsNullOrEmpty(package.FilterExpression)) + { + var compiledExpression = package.FilterExpressionFromCache(); + var evaluatorVariables = Expression.StandardVariables(null, Database, User, TimeStamp, State); + evaluatorVariables.Add("Package", package); + try + { + object er = compiledExpression.EvaluateFirst(Data, evaluatorVariables); + if (er is bool) + { + return (bool)er; + } + bool erBool; + if (bool.TryParse(er.ToString(), out erBool)) + { + return erBool; + } + } + catch + { + return false; + } + } + return true; + } + + public static Expression OnGenerateExpressionFromCache(this DocumentTemplatePackage package) + { + return ExpressionCache.GetValue("DocumentTemplatePackage_OnGenerateExpression", package.Id, () => { return Expression.TokenizeSingleDynamic(null, package.OnGenerateExpression, 0); }); + } + + public static void OnGenerateExpressionInvalidateCache(this DocumentTemplatePackage package) + { + ExpressionCache.InvalidateKey("DocumentTemplatePackage_OnGenerateExpression", package.Id); + } + + public static string EvaluateOnGenerateExpression(this DocumentTemplatePackage package, object Data, DiscoDataContext Database, User User, DateTime TimeStamp, DocumentState State) + { + if (!string.IsNullOrEmpty(package.OnGenerateExpression)) + { + Expression compiledExpression = package.OnGenerateExpressionFromCache(); + System.Collections.IDictionary evaluatorVariables = Expression.StandardVariables(null, Database, User, TimeStamp, State); + evaluatorVariables.Add("Package", package); + try + { + object result = compiledExpression.EvaluateFirst(Data, evaluatorVariables); + return result.ToString(); + } + catch + { + throw; + } + } + return null; + } + + } +} diff --git a/Disco.Services/Documents/DocumentTemplatePackages.cs b/Disco.Services/Documents/DocumentTemplatePackages.cs new file mode 100644 index 00000000..59c4550b --- /dev/null +++ b/Disco.Services/Documents/DocumentTemplatePackages.cs @@ -0,0 +1,187 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Documents; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; + +namespace Disco.Services.Documents +{ + public static class DocumentTemplatePackages + { + private static ConcurrentDictionary cache; + + static DocumentTemplatePackages() + { + using (var database = new DiscoDataContext()) + { + var packages = database.DiscoConfiguration.Documents.Packages; + if (packages == null) + { + cache = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); + } + else + { + cache = new ConcurrentDictionary( + packages.Select(p => new KeyValuePair(p.Id, p)), + StringComparer.OrdinalIgnoreCase); + } + } + } + + public static List GetPackages() + => cache.Values.ToList(); + + public static DocumentTemplatePackage GetPackage(string Id) + { + DocumentTemplatePackage package; + if (cache.TryGetValue(Id, out package)) + return package; + else + return null; + } + + public static IEnumerable AvailablePackages(DiscoDataContext Database, AttachmentTypes Scope) + { + var packages = cache.Values.Where(p => p.Scope == Scope).ToList(); + if (packages.Count > 0) + { + var dbScope = Scope.ToString(); + var validTemplateIds = Database.DocumentTemplates + .Where(dt => dt.Scope == dbScope) + .Select(dt => dt.Id).ToList(); + + return packages.Where(p => + !p.IsHidden && + p.DocumentTemplateIds != null && p.DocumentTemplateIds.Count > 0 && + p.DocumentTemplateIds.Count(id => validTemplateIds.Contains(id)) > 0); + } + return Enumerable.Empty(); + } + + public static List AvailablePackages(this Device device, DiscoDataContext Database, User TechnicianUser) + { + var packages = new List(); + + foreach (var package in AvailablePackages(Database, AttachmentTypes.Device)) + { + if (package.FilterExpressionMatches(device, Database, TechnicianUser, DateTime.Now, DocumentState.DefaultState())) + { + packages.Add(package); + } + } + + return packages; + } + + public static List AvailablePackages(this Job job, DiscoDataContext Database, User TechnicianUser) + { + var packages = new List(); + + foreach (var package in AvailablePackages(Database, AttachmentTypes.Job)) + { + bool subTypeMatch = true; // default match + if (package.JobSubTypes != null && package.JobSubTypes.Count > 0) + { + subTypeMatch = false; // enforce match + foreach (var subType in job.JobSubTypes) + { + if (package.JobSubTypes.Contains($"{subType.JobTypeId}_{subType.Id}", StringComparer.OrdinalIgnoreCase)) + { + subTypeMatch = true; + break; + } + } + } + + if (subTypeMatch) + { + if (package.FilterExpressionMatches(job, Database, TechnicianUser, DateTime.Now, DocumentState.DefaultState())) + { + packages.Add(package); + } + } + } + + return packages; + } + + public static List AvailablePackages(this User user, DiscoDataContext Database, User TechnicianUser) + { + var packages = new List(); + + foreach (var package in AvailablePackages(Database, AttachmentTypes.User)) + { + if (package.FilterExpressionMatches(user, Database, TechnicianUser, DateTime.Now, DocumentState.DefaultState())) + { + packages.Add(package); + } + } + + return packages; + } + + public static DocumentTemplatePackage CreatePackage(DocumentTemplatePackage Package) + { + if (string.IsNullOrWhiteSpace(Package.Id)) + throw new ArgumentNullException(nameof(Package), "The Package Id is required"); + if (cache.ContainsKey(Package.Id)) // Name Unique + throw new ArgumentException("Another Package already exists with that Id", nameof(Package)); + if (string.IsNullOrWhiteSpace(Package.Description)) + throw new ArgumentNullException(nameof(Package), "The Package Description is required"); + + if (cache.TryAdd(Package.Id, Package)) + { + PersistCache(); + return Package; + } + else + throw new Exception("Unable to add the Package to the Cache, check the Package Id and try again"); + } + + public static DocumentTemplatePackage UpdatePackage(DocumentTemplatePackage Package) + { + DocumentTemplatePackage existingPackage; + + if (string.IsNullOrWhiteSpace(Package.Id)) + throw new ArgumentNullException(nameof(Package), "The Package Id is required"); + if (!cache.TryGetValue(Package.Id, out existingPackage)) // Name Unique + throw new ArgumentException("The Package Id does not exist", nameof(Package)); + if (string.IsNullOrWhiteSpace(Package.Description)) + throw new ArgumentNullException(nameof(Package), "The Package Description is required"); + + if (cache.TryUpdate(Package.Id, Package, existingPackage)) + { + PersistCache(); + return Package; + } + else + throw new Exception("Unable to update the Package in the Cache, there were concurrent updates to the same package"); + } + + public static void RemovePackage(string Id) + { + DocumentTemplatePackage existingPackage; + if (cache.TryRemove(Id, out existingPackage)) + { + PersistCache(); + } + } + + private static void PersistCache() + { + var packages = cache.Values.ToList(); + if (packages.Count == 0) + packages = null; + + using (var database = new DiscoDataContext()) + { + database.DiscoConfiguration.Documents.Packages = packages; + + database.SaveChanges(); + } + } + + } +} diff --git a/Disco.Services/Documents/DocumentsLog.cs b/Disco.Services/Documents/DocumentsLog.cs index 66c0343f..62d5a8da 100644 --- a/Disco.Services/Documents/DocumentsLog.cs +++ b/Disco.Services/Documents/DocumentsLog.cs @@ -1,4 +1,5 @@ using Disco.Models.Repository; +using Disco.Models.Services.Documents; using Disco.Services.Logging; using Disco.Services.Logging.Models; @@ -23,7 +24,9 @@ namespace Disco.Services.Documents ImportPageError = 120, ImportPageUndetectedStored = 150, DocumentGenerated = 500, - DocumentGeneratedWithExpression + DocumentGeneratedWithExpression, + DocumentPackageGenerated = 600, + DocumentPackageGeneratedWithExpression, } private const int _ModuleId = 40; @@ -175,93 +178,41 @@ namespace Disco.Services.Documents 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, IAttachmentTarget 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[] + Log(EventTypeIds.DocumentGeneratedWithExpression, new object[] { Template.Id, - "UNKNOWN", + Data.AttachmentReferenceId, Author.UserId, ExpressionResult }); } - public static void LogDocumentGenerated(DocumentTemplate Template, Device Device, User Author) + public static void LogDocumentPackageGenerated(DocumentTemplatePackage Package, IAttachmentTarget Data, User Author, string ExpressionResult) { - DocumentsLog.Log(DocumentsLog.EventTypeIds.DocumentGenerated, new object[] - { - Template.Id, - Device.SerialNumber, - Author.UserId - }); + Log(EventTypeIds.DocumentPackageGeneratedWithExpression, new object[] + { + Package.Id, + Data.AttachmentReferenceId, + Author.UserId, + ExpressionResult + }); } - public static void LogDocumentGenerated(DocumentTemplate Template, Job Job, User Author) + public static void LogDocumentGenerated(DocumentTemplate Template, IAttachmentTarget Data, 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[] + Log(EventTypeIds.DocumentGenerated, new object[] { Template.Id, - "UNKNOWN", + Data.AttachmentReferenceId, + Author.UserId + }); + } + public static void LogDocumentPackageGenerated(DocumentTemplatePackage Package, IAttachmentTarget Data, User Author) + { + Log(EventTypeIds.DocumentPackageGenerated, new object[] + { + Package.Id, + Data.AttachmentReferenceId, Author.UserId }); } @@ -433,6 +384,28 @@ namespace Disco.Services.Documents UseLive = true, UsePersist = true, UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.DocumentPackageGenerated, + ModuleId = _ModuleId, + Name = "Document Package Generated", + Format = "A '{0}' document package was generated for '{1}' by '{2}'", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.DocumentPackageGeneratedWithExpression, + ModuleId = _ModuleId, + Name = "Document Package Generated with Expression", + Format = "A '{0}' document package 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.Services/Jobs/JobExtensions.cs b/Disco.Services/Jobs/JobExtensions.cs index 350aec7c..29f6ae75 100644 --- a/Disco.Services/Jobs/JobExtensions.cs +++ b/Disco.Services/Jobs/JobExtensions.cs @@ -3,6 +3,7 @@ using Disco.Models.Repository; using Disco.Models.Services.Documents; using Disco.Models.Services.Jobs.JobLists; using Disco.Services.Authorization; +using Disco.Services.Documents; using Disco.Services.Expressions; using Disco.Services.Interop.ActiveDirectory; using Disco.Services.Plugins; @@ -230,6 +231,10 @@ namespace Disco.Services return dts; } + public static List AvailableDocumentTemplatePackages(this Job j, DiscoDataContext Database, User TechnicianUser) + { + return DocumentTemplatePackages.AvailablePackages(j, Database, TechnicianUser); + } public static DateTime ValidateDateAfterOpened(this Job j, DateTime d) { diff --git a/Disco.Services/Users/UserExtensions.cs b/Disco.Services/Users/UserExtensions.cs index 8e482cf2..445b59e6 100644 --- a/Disco.Services/Users/UserExtensions.cs +++ b/Disco.Services/Users/UserExtensions.cs @@ -1,6 +1,7 @@ using Disco.Data.Repository; using Disco.Models.Repository; using Disco.Models.Services.Documents; +using Disco.Services.Documents; using Disco.Services.Interop.ActiveDirectory; using System; using System.Collections.Generic; @@ -35,6 +36,11 @@ namespace Disco.Services return dts; } + public static List AvailableDocumentTemplatePackages(this User u, DiscoDataContext Database, User TechnicianUser) + { + return DocumentTemplatePackages.AvailablePackages(u, Database, TechnicianUser); + } + public static List CurrentDeviceUserAssignments(this User u) { return u.DeviceUserAssignments.Where(dua => !dua.UnassignedDate.HasValue).ToList(); diff --git a/Disco.Web.Extensions/DataModelExtension/DocumentTemplateExtensions.cs b/Disco.Web.Extensions/DataModelExtension/DocumentTemplateExtensions.cs index 0ca2ae54..94d95ea9 100644 --- a/Disco.Web.Extensions/DataModelExtension/DocumentTemplateExtensions.cs +++ b/Disco.Web.Extensions/DataModelExtension/DocumentTemplateExtensions.cs @@ -1,9 +1,8 @@ -using System; +using Disco.Models.Repository; +using Disco.Models.Services.Documents; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Web.Mvc; -using Disco.Models.Repository; namespace Disco.Web.Extensions { @@ -16,5 +15,13 @@ namespace Disco.Web.Extensions else return documentTemplates.Select(dt => new SelectListItem { Value = dt.Id, Text = dt.Description, Selected = (SelectedId == dt.Id) }).ToList(); } + + public static IEnumerable ToSelectListItems(this IEnumerable documentTemplatePackages, string SelectedId = null) + { + if (SelectedId == null) + return documentTemplatePackages.Select(dt => new SelectListItem { Value = $"Package:{dt.Id}", Text = $"Package: {dt.Description}" }).ToList(); + else + return documentTemplatePackages.Select(dt => new SelectListItem { Value = $"Package:{dt.Id}", Text = $"Package: {dt.Description}", Selected = (SelectedId == dt.Id) }).ToList(); + } } } diff --git a/Disco.Web/Areas/API/Controllers/DeviceController.cs b/Disco.Web/Areas/API/Controllers/DeviceController.cs index e43a274c..46662c5c 100644 --- a/Disco.Web/Areas/API/Controllers/DeviceController.cs +++ b/Disco.Web/Areas/API/Controllers/DeviceController.cs @@ -6,6 +6,7 @@ using Disco.Services; using Disco.Services.Authorization; using Disco.Services.Devices.Exporting; using Disco.Services.Devices.Importing; +using Disco.Services.Documents; using Disco.Services.Interop; using Disco.Services.Interop.ActiveDirectory; using Disco.Services.Users; @@ -380,9 +381,10 @@ namespace Disco.Web.Areas.API.Controllers public virtual ActionResult GeneratePdf(string id, string DocumentTemplateId) { if (string.IsNullOrEmpty(id)) - throw new ArgumentNullException("id"); + throw new ArgumentNullException(nameof(id)); if (string.IsNullOrEmpty(DocumentTemplateId)) - throw new ArgumentNullException("AttachmentTypeId"); + throw new ArgumentNullException(nameof(DocumentTemplateId)); + var device = Database.Devices.Find(id); if (device != null) { @@ -400,12 +402,49 @@ namespace Disco.Web.Areas.API.Controllers } else { - throw new ArgumentException("Invalid Document Template Id", "id"); + throw new ArgumentException("Invalid Document Template Id", nameof(DocumentTemplateId)); } } else { - throw new ArgumentException("Invalid Serial Number", "id"); + throw new ArgumentException("Invalid Serial Number", nameof(id)); + } + } + + [DiscoAuthorize(Claims.Device.Actions.GenerateDocuments)] + public virtual ActionResult GeneratePdfPackage(string id, string DocumentTemplatePackageId) + { + if (string.IsNullOrEmpty(id)) + throw new ArgumentNullException(nameof(id)); + if (string.IsNullOrEmpty(DocumentTemplatePackageId)) + throw new ArgumentNullException(nameof(DocumentTemplatePackageId)); + + var device = Database.Devices.Find(id); + if (device != null) + { + var package = DocumentTemplatePackages.GetPackage(DocumentTemplatePackageId); + if (package != null) + { + if (package.Scope != AttachmentTypes.Device) + throw new ArgumentException("This package cannot be generated from the Device Scope", nameof(DocumentTemplatePackageId)); + + var timeStamp = DateTime.Now; + Stream pdf; + using (var generationState = DocumentState.DefaultState()) + { + pdf = package.GeneratePdfPackage(Database, device, UserService.CurrentUser, timeStamp, generationState); + } + Database.SaveChanges(); + return File(pdf, "application/pdf", string.Format("{0}_{1}_{2:yyyyMMdd-HHmmss}.pdf", package.Id, device.SerialNumber, timeStamp)); + } + else + { + throw new ArgumentException("Invalid Document Template Package Id", nameof(DocumentTemplatePackageId)); + } + } + else + { + throw new ArgumentException("Invalid Serial Number", nameof(id)); } } diff --git a/Disco.Web/Areas/API/Controllers/DocumentTemplateController.cs b/Disco.Web/Areas/API/Controllers/DocumentTemplateController.cs index 8d032909..76dd87dd 100644 --- a/Disco.Web/Areas/API/Controllers/DocumentTemplateController.cs +++ b/Disco.Web/Areas/API/Controllers/DocumentTemplateController.cs @@ -568,7 +568,7 @@ namespace Disco.Web.Areas.API.Controllers } [DiscoAuthorize(Claims.Config.DocumentTemplate.UndetectedPages)] - public virtual ActionResult ImporterUndetectedFile(string id, Nullable Source, Nullable Thumbnail) + public virtual ActionResult ImporterUndetectedFile(string id, bool? Source, bool? Thumbnail) { if (!string.IsNullOrEmpty(id)) { @@ -659,7 +659,7 @@ namespace Disco.Web.Areas.API.Controllers } [DiscoAuthorize(Claims.Config.DocumentTemplate.BulkGenerate)] - public virtual ActionResult BulkGenerate(string id, string DataIds = null) + public virtual ActionResult BulkGenerate(string id, string DataIds = null, bool InsertBlankPage = false) { if (string.IsNullOrEmpty(id)) throw new ArgumentNullException("id"); @@ -686,13 +686,13 @@ namespace Disco.Web.Areas.API.Controllers var dataIds = DataIds.Split(new string[] { Environment.NewLine, ",", ";" }, StringSplitOptions.RemoveEmptyEntries).Select(d => d.Trim()).Where(d => !string.IsNullOrEmpty(d)).ToArray(); var timeStamp = DateTime.Now; - var pdf = documentTemplate.GeneratePdfBulk(Database, UserService.CurrentUser, timeStamp, dataIds); + var pdf = documentTemplate.GeneratePdfBulk(Database, UserService.CurrentUser, timeStamp, InsertBlankPage, dataIds); return File(pdf, "application/pdf", string.Format("{0}_Bulk_{1:yyyyMMdd-HHmmss}.pdf", documentTemplate.Id, timeStamp)); } [DiscoAuthorize(Claims.Config.DocumentTemplate.Delete)] - public virtual ActionResult Delete(string id, Nullable redirect = false) + public virtual ActionResult Delete(string id, bool? redirect = false) { try { diff --git a/Disco.Web/Areas/API/Controllers/DocumentTemplatePackageController.cs b/Disco.Web/Areas/API/Controllers/DocumentTemplatePackageController.cs new file mode 100644 index 00000000..03cef637 --- /dev/null +++ b/Disco.Web/Areas/API/Controllers/DocumentTemplatePackageController.cs @@ -0,0 +1,422 @@ +using Disco.BI.Extensions; +using Disco.Models.Repository; +using Disco.Models.Services.Documents; +using Disco.Services; +using Disco.Services.Authorization; +using Disco.Services.Documents; +using Disco.Services.Users; +using Disco.Services.Web; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace Disco.Web.Areas.API.Controllers +{ + public partial class DocumentTemplatePackageController : AuthorizedDatabaseController + { + const string pDescription = "description"; + const string pScope = "scope"; + const string pFilterExpression = "filterexpression"; + const string pOnGenerateExpression = "ongenerateexpression"; + const string pIsHidden = "ishidden"; + const string pInsertBlankPages = "insertblankpages"; + + [DiscoAuthorize(Claims.Config.DocumentTemplate.Configure)] + public virtual ActionResult Update(string id, string key, string value = null, bool redirect = false) + { + try + { + if (string.IsNullOrEmpty(id)) + throw new ArgumentNullException("id"); + if (string.IsNullOrEmpty(key)) + throw new ArgumentNullException("key"); + + var package = DocumentTemplatePackages.GetPackage(id); + + if (package != null) + { + switch (key.ToLower()) + { + case pDescription: + UpdateDescription(package, value); + break; + case pScope: + UpdateScope(package, value); + break; + case pFilterExpression: + Authorization.Require(Claims.Config.DocumentTemplate.ConfigureFilterExpression); + UpdateFilterExpression(package, value); + break; + case pOnGenerateExpression: + UpdateOnGenerateExpression(package, value); + break; + case pIsHidden: + UpdateIsHidden(package, value); + break; + case pInsertBlankPages: + UpdateInsertBlankPages(package, value); + break; + default: + throw new Exception("Invalid Update Key"); + } + } + else + { + throw new Exception("Invalid Document Template Package Id"); + } + if (redirect) + return RedirectToAction(MVC.Config.DocumentTemplate.ShowPackage(package.Id)); + else + return Json("OK", JsonRequestBehavior.AllowGet); + } + catch (Exception ex) + { + if (redirect) + throw; + else + return Json(string.Format("Error: {0}", ex.Message), JsonRequestBehavior.AllowGet); + } + } + + #region Update Shortcut Methods + [DiscoAuthorize(Claims.Config.DocumentTemplate.Configure)] + public virtual ActionResult UpdateDescription(string id, string Description = null, bool redirect = false) + { + return Update(id, pDescription, Description, redirect); + } + [DiscoAuthorize(Claims.Config.DocumentTemplate.Configure)] + public virtual ActionResult UpdateDocumentTemplates(string id, List DocumentTemplates = null, bool redirect = false) + { + try + { + if (string.IsNullOrEmpty(id)) + throw new ArgumentNullException("id"); + + var package = DocumentTemplatePackages.GetPackage(id); + + if (package == null) + throw new ArgumentException("Invalid Document Template Package Id", nameof(id)); + + UpdateDocumentTemplates(package, DocumentTemplates); + + if (redirect) + return RedirectToAction(MVC.Config.DocumentTemplate.ShowPackage(package.Id)); + else + return Json("OK", JsonRequestBehavior.AllowGet); + } + catch (Exception ex) + { + if (redirect) + throw; + else + return Json(string.Format("Error: {0}", ex.Message), JsonRequestBehavior.AllowGet); + } + + } + [DiscoAuthorizeAll(Claims.Config.DocumentTemplate.Configure, Claims.Config.DocumentTemplate.ConfigureFilterExpression)] + public virtual ActionResult UpdateFilterExpression(string id, string FilterExpression = null, bool redirect = false) + { + 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); + } + [DiscoAuthorize(Claims.Config.DocumentTemplate.Configure)] + public virtual ActionResult UpdateIsHidden(string id, string IsHidden = null, bool redirect = false) + { + return Update(id, pIsHidden, IsHidden, redirect); + } + [DiscoAuthorize(Claims.Config.DocumentTemplate.Configure)] + public virtual ActionResult UpdateInsertBlankPages(string id, string InsertBlankPages = null, bool redirect = false) + { + return Update(id, pInsertBlankPages, InsertBlankPages, redirect); + } + [DiscoAuthorize(Claims.Config.DocumentTemplate.Configure)] + public virtual ActionResult UpdateScope(string id, string Scope = null, bool redirect = false) + { + return Update(id, pScope, Scope, redirect); + } + [DiscoAuthorize(Claims.Config.DocumentTemplate.Configure)] + public virtual ActionResult UpdateJobSubTypes(string id, List JobSubTypes = null, bool redirect = false) + { + try + { + if (string.IsNullOrEmpty(id)) + throw new ArgumentNullException("id"); + + var package = DocumentTemplatePackages.GetPackage(id); + + if (package == null) + throw new ArgumentException("Invalid Document Template Package Id", nameof(id)); + + UpdateJobSubTypes(package, JobSubTypes); + + if (redirect) + return RedirectToAction(MVC.Config.DocumentTemplate.ShowPackage(package.Id)); + else + return Json("OK", JsonRequestBehavior.AllowGet); + } + catch (Exception ex) + { + if (redirect) + throw; + else + return Json(string.Format("Error: {0}", ex.Message), JsonRequestBehavior.AllowGet); + } + + } + #endregion + + #region Update Properties + private void UpdateDescription(DocumentTemplatePackage Package, string Description) + { + if (!string.IsNullOrWhiteSpace(Description)) + { + var description = Description.Trim(); + if (Package.Description != description) + { + Package.Description = description; + DocumentTemplatePackages.UpdatePackage(Package); + } + } + throw new Exception("Invalid Description"); + } + private void UpdateDocumentTemplates(DocumentTemplatePackage Package, List DocumentTemplates) + { + List documentTemplateIds = null; + + if (DocumentTemplates != null && DocumentTemplates.Count > 0) + { + var packageScope = Package.Scope.ToString(); + + // Collect Valid from Database (maintain order) + documentTemplateIds = new List(DocumentTemplates.Count); + foreach (var templateId in DocumentTemplates) + { + var dbId = Database.DocumentTemplates + .Where(dt => dt.Scope == packageScope && dt.Id == templateId) + .Select(dt => dt.Id).FirstOrDefault(); + if (dbId != null) + { + documentTemplateIds.Add(dbId); + } + } + } + + if (documentTemplateIds == null) + { + if (Package.DocumentTemplateIds != null) + { + Package.DocumentTemplateIds = null; + DocumentTemplatePackages.UpdatePackage(Package); + } + } + else + { + if (Package.DocumentTemplateIds == null || Package.DocumentTemplateIds.Count != documentTemplateIds.Count) + { + Package.DocumentTemplateIds = documentTemplateIds; + DocumentTemplatePackages.UpdatePackage(Package); + } + else + { + if (Package.DocumentTemplateIds.Zip(documentTemplateIds, (a, b) => a != b).Any(r => r)) + { + Package.DocumentTemplateIds = documentTemplateIds; + DocumentTemplatePackages.UpdatePackage(Package); + } + } + } + + } + private void UpdateScope(DocumentTemplatePackage Package, string Scope) + { + AttachmentTypes scope; + if (!Enum.TryParse(Scope, true, out scope)) + throw new ArgumentException("Invalid Scope", nameof(Scope)); + + if (Package.Scope != scope) + { + Package.Scope = scope; + + // Remove all Templates (none can be of the same scope) + Package.DocumentTemplateIds = null; + + DocumentTemplatePackages.UpdatePackage(Package); + } + } + private void UpdateFilterExpression(DocumentTemplatePackage Package, string FilterExpression) + { + string expression; + if (string.IsNullOrWhiteSpace(FilterExpression)) + expression = null; + else + expression = FilterExpression.Trim(); + + if (Package.FilterExpression != expression) + { + Package.FilterExpression = expression; + DocumentTemplatePackages.UpdatePackage(Package); + Package.FilterExpressionInvalidateCache(); + } + } + private void UpdateOnGenerateExpression(DocumentTemplatePackage Package, string OnGenerateExpression) + { + string expression; + if (string.IsNullOrWhiteSpace(OnGenerateExpression)) + expression = null; + else + expression = OnGenerateExpression.Trim(); + + if (Package.OnGenerateExpression != expression) + { + Package.OnGenerateExpression = expression; + DocumentTemplatePackages.UpdatePackage(Package); + Package.OnGenerateExpressionInvalidateCache(); + } + } + private void UpdateIsHidden(DocumentTemplatePackage Package, string IsHidden) + { + var isHidden = false; + + if (!string.IsNullOrWhiteSpace(IsHidden) && !bool.TryParse(IsHidden, out isHidden)) + throw new ArgumentOutOfRangeException(nameof(IsHidden)); + + if (Package.IsHidden != isHidden) + { + Package.IsHidden = isHidden; + DocumentTemplatePackages.UpdatePackage(Package); + } + } + private void UpdateInsertBlankPages(DocumentTemplatePackage Package, string InsertBlankPages) + { + var insertBlankPages = false; + + if (!string.IsNullOrWhiteSpace(InsertBlankPages) && !bool.TryParse(InsertBlankPages, out insertBlankPages)) + throw new ArgumentOutOfRangeException(nameof(InsertBlankPages)); + + if (Package.InsertBlankPages != insertBlankPages) + { + Package.InsertBlankPages = insertBlankPages; + DocumentTemplatePackages.UpdatePackage(Package); + } + } + private void UpdateJobSubTypes(DocumentTemplatePackage Package, List JobSubTypes) + { + List jobSubTypes = null; + + if (JobSubTypes != null && JobSubTypes.Count > 0) + { + var subTypeIds = Database.JobSubTypes.Select(jst => jst.JobTypeId + "_" + jst.Id).ToList(); + + jobSubTypes = subTypeIds + .Where(id => JobSubTypes.Contains(id, StringComparer.OrdinalIgnoreCase)) + .OrderBy(id => id) + .ToList(); + } + + if (jobSubTypes == null) + { + if (Package.JobSubTypes != null) + { + Package.JobSubTypes = null; + DocumentTemplatePackages.UpdatePackage(Package); + } + } + else + { + if (Package.JobSubTypes == null || Package.JobSubTypes.Count != jobSubTypes.Count) + { + Package.JobSubTypes = jobSubTypes; + DocumentTemplatePackages.UpdatePackage(Package); + } + else + { + if (Package.JobSubTypes.Zip(jobSubTypes, (a, b) => a != b).Any(r => r)) + { + Package.JobSubTypes = jobSubTypes; + DocumentTemplatePackages.UpdatePackage(Package); + } + } + } + + } + #endregion + + #region Actions + + [DiscoAuthorize(Claims.Config.DocumentTemplate.BulkGenerate)] + public virtual ActionResult BulkGenerate(string id, string DataIds = null, bool InsertBlankPage = false) + { + if (string.IsNullOrEmpty(id)) + throw new ArgumentNullException(nameof(id)); + if (string.IsNullOrEmpty(DataIds)) + throw new ArgumentNullException(nameof(DataIds)); + + var package = DocumentTemplatePackages.GetPackage(id); + + if (package == null) + throw new ArgumentException("Invalid Document Template Package Id", "id"); + + switch (package.Scope) + { + case AttachmentTypes.Device: + Authorization.Require(Claims.Device.Actions.GenerateDocuments); + break; + case AttachmentTypes.Job: + Authorization.Require(Claims.Job.Actions.GenerateDocuments); + break; + case AttachmentTypes.User: + Authorization.Require(Claims.User.Actions.GenerateDocuments); + break; + default: + throw new InvalidOperationException("Unknown DocumentType Scope"); + } + + var dataIds = DataIds.Split(new string[] { Environment.NewLine, ",", ";" }, StringSplitOptions.RemoveEmptyEntries).Select(d => d.Trim()).Where(d => !string.IsNullOrEmpty(d)).ToList(); + var timeStamp = DateTime.Now; + var pdf = package.GeneratePdfPackageBulk(Database, UserService.CurrentUser, timeStamp, InsertBlankPage, dataIds); + + return File(pdf, "application/pdf", string.Format("{0}_Bulk_{1:yyyyMMdd-HHmmss}.pdf", package.Id, timeStamp)); + } + + [DiscoAuthorize(Claims.Config.DocumentTemplate.Delete)] + public virtual ActionResult Delete(string id, bool? redirect = false) + { + try + { + if (string.IsNullOrEmpty(id)) + throw new ArgumentNullException("id"); + + var package = DocumentTemplatePackages.GetPackage(id); + + if (package == null) + throw new ArgumentException("Invalid Document Template Package Id", nameof(id)); + + if (package != null) + { + DocumentTemplatePackages.RemovePackage(package.Id); + + if (redirect.HasValue && redirect.Value) + return RedirectToAction(MVC.Config.DocumentTemplate.Index(null)); + else + return Json("OK", JsonRequestBehavior.AllowGet); + } + throw new Exception("Invalid Document Template Package Id"); + } + catch (Exception ex) + { + if (redirect.HasValue && redirect.Value) + throw; + else + return Json(string.Format("Error: {0}", ex.Message), JsonRequestBehavior.AllowGet); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Disco.Web/Areas/API/Controllers/JobController.cs b/Disco.Web/Areas/API/Controllers/JobController.cs index 733c127f..9dabb08a 100644 --- a/Disco.Web/Areas/API/Controllers/JobController.cs +++ b/Disco.Web/Areas/API/Controllers/JobController.cs @@ -5,6 +5,7 @@ using Disco.Models.Services.Job; using Disco.Models.Services.Jobs.JobLists; using Disco.Services; using Disco.Services.Authorization; +using Disco.Services.Documents; using Disco.Services.Interop; using Disco.Services.Jobs.JobLists; using Disco.Services.Jobs.Statistics; @@ -2086,13 +2087,13 @@ namespace Disco.Web.Areas.API.Controllers #endregion [DiscoAuthorize(Claims.Job.Actions.GenerateDocuments)] - public virtual ActionResult GeneratePdf(string id, string DocumentTemplateId) + public virtual ActionResult GeneratePdf(int id, string DocumentTemplateId) { - if (string.IsNullOrEmpty(id)) - throw new ArgumentNullException("id"); + if (id <= 0) + throw new ArgumentOutOfRangeException(nameof(id)); if (string.IsNullOrEmpty(DocumentTemplateId)) - throw new ArgumentNullException("AttachmentTypeId"); - var job = Database.Jobs.Find(int.Parse(id)); + throw new ArgumentNullException(nameof(DocumentTemplateId)); + var job = Database.Jobs.Find(id); if (job != null) { var documentTemplate = Database.DocumentTemplates.Find(DocumentTemplateId); @@ -2118,6 +2119,44 @@ namespace Disco.Web.Areas.API.Controllers } } + [DiscoAuthorize(Claims.Job.Actions.GenerateDocuments)] + public virtual ActionResult GeneratePdfPackage(int id, string DocumentTemplatePackageId) + { + if (id <= 0) + throw new ArgumentOutOfRangeException(nameof(id)); + if (string.IsNullOrEmpty(DocumentTemplatePackageId)) + throw new ArgumentNullException(nameof(DocumentTemplatePackageId)); + + var job = Database.Jobs.Find(id); + + if (job != null) + { + var package = DocumentTemplatePackages.GetPackage(DocumentTemplatePackageId); + if (package != null) + { + if (package.Scope != AttachmentTypes.Job) + throw new ArgumentException("This package cannot be generated from the Job Scope", nameof(DocumentTemplatePackageId)); + + var timeStamp = DateTime.Now; + Stream pdf; + using (var generationState = DocumentState.DefaultState()) + { + pdf = package.GeneratePdfPackage(Database, job, UserService.CurrentUser, timeStamp, generationState); + } + Database.SaveChanges(); + return File(pdf, "application/pdf", string.Format("{0}_{1}_{2:yyyyMMdd-HHmmss}.pdf", package.Id, job.Id, timeStamp)); + } + else + { + throw new ArgumentException("Invalid Document Template Package Id", nameof(DocumentTemplatePackageId)); + } + } + else + { + throw new ArgumentException("Invalid Job Id", nameof(id)); + } + } + [DiscoAuthorize(Claims.Job.Properties.DeviceHeldLocation)] public virtual ActionResult DeviceHeldLocations() { diff --git a/Disco.Web/Areas/API/Controllers/UserController.cs b/Disco.Web/Areas/API/Controllers/UserController.cs index 7ffac47d..329eb8fe 100644 --- a/Disco.Web/Areas/API/Controllers/UserController.cs +++ b/Disco.Web/Areas/API/Controllers/UserController.cs @@ -1,7 +1,9 @@ using Disco.BI.Extensions; +using Disco.Models.Repository; using Disco.Models.Services.Documents; using Disco.Services; using Disco.Services.Authorization; +using Disco.Services.Documents; using Disco.Services.Interop; using Disco.Services.Interop.ActiveDirectory; using Disco.Services.Users; @@ -160,9 +162,9 @@ namespace Disco.Web.Areas.API.Controllers public virtual ActionResult GeneratePdf(string id, string Domain, string DocumentTemplateId) { if (string.IsNullOrEmpty(id)) - throw new ArgumentNullException("id"); + throw new ArgumentNullException(nameof(id)); if (string.IsNullOrEmpty(DocumentTemplateId)) - throw new ArgumentNullException("AttachmentTypeId"); + throw new ArgumentNullException(nameof(DocumentTemplateId)); id = ActiveDirectory.ParseDomainAccountId(id, Domain); @@ -191,6 +193,44 @@ namespace Disco.Web.Areas.API.Controllers throw new ArgumentException("Invalid User Id", "id"); } } + [DiscoAuthorize(Claims.User.Actions.GenerateDocuments)] + public virtual ActionResult GeneratePdfPackage(string id, string Domain, string DocumentTemplatePackageId) + { + if (string.IsNullOrEmpty(id)) + throw new ArgumentNullException(nameof(id)); + if (string.IsNullOrEmpty(DocumentTemplatePackageId)) + throw new ArgumentNullException(nameof(DocumentTemplatePackageId)); + + id = ActiveDirectory.ParseDomainAccountId(id, Domain); + + var user = Database.Users.Find(id); + if (user != null) + { + var package = DocumentTemplatePackages.GetPackage(DocumentTemplatePackageId); + if (package != null) + { + if (package.Scope != AttachmentTypes.User) + throw new ArgumentException("This package cannot be generated from the User Scope", nameof(DocumentTemplatePackageId)); + + var timeStamp = DateTime.Now; + Stream pdf; + using (var generationState = DocumentState.DefaultState()) + { + pdf = package.GeneratePdfPackage(Database, user, UserService.CurrentUser, timeStamp, generationState); + } + Database.SaveChanges(); + return File(pdf, "application/pdf", string.Format("{0}_{1}_{2:yyyyMMdd-HHmmss}.pdf", package.Id, user.UserId, timeStamp)); + } + else + { + throw new ArgumentException("Invalid Document Template Package Id", nameof(DocumentTemplatePackageId)); + } + } + else + { + throw new ArgumentException("Invalid User Id", nameof(id)); + } + } } } diff --git a/Disco.Web/Areas/Config/ConfigAreaRegistration.cs b/Disco.Web/Areas/Config/ConfigAreaRegistration.cs index 4e6bea48..783c1534 100644 --- a/Disco.Web/Areas/Config/ConfigAreaRegistration.cs +++ b/Disco.Web/Areas/Config/ConfigAreaRegistration.cs @@ -72,7 +72,12 @@ namespace Disco.Web.Areas.Config context.MapRoute( "Config_DocumentTemplate_Create", "Config/DocumentTemplate/Create", - new { controller = "DocumentTemplate", action = "Create", id = UrlParameter.Optional } + new { controller = "DocumentTemplate", action = "Create" } + ); + context.MapRoute( + "Config_DocumentTemplate_CreatePackage", + "Config/DocumentTemplate/CreatePackage", + new { controller = "DocumentTemplate", action = "CreatePackage" } ); context.MapRoute( "Config_DocumentTemplate_ImportStatus", @@ -89,6 +94,11 @@ namespace Disco.Web.Areas.Config "Config/DocumentTemplate/ExpressionBrowser", new { controller = "DocumentTemplate", action = "ExpressionBrowser", id = UrlParameter.Optional } ); + context.MapRoute( + "Config_DocumentTemplate_ShowPackage", + "Config/DocumentTemplate/Package/{id}", + new { controller = "DocumentTemplate", action = "ShowPackage" } + ); context.MapRoute( "Config_DocumentTemplate", "Config/DocumentTemplate/{id}", diff --git a/Disco.Web/Areas/Config/Controllers/DocumentTemplateController.cs b/Disco.Web/Areas/Config/Controllers/DocumentTemplateController.cs index 539267d7..8ba972e1 100644 --- a/Disco.Web/Areas/Config/Controllers/DocumentTemplateController.cs +++ b/Disco.Web/Areas/Config/Controllers/DocumentTemplateController.cs @@ -1,7 +1,9 @@ using Disco.BI.Extensions; +using Disco.Models.Repository; using Disco.Models.UI.Config.DocumentTemplate; using Disco.Services; using Disco.Services.Authorization; +using Disco.Services.Documents; using Disco.Services.Documents.ManagedGroups; using Disco.Services.Expressions; using Disco.Services.Plugins.Features.UIExtension; @@ -20,7 +22,8 @@ namespace Disco.Web.Areas.Config.Controllers { if (string.IsNullOrEmpty(id)) { - var m = new Models.DocumentTemplate.IndexModel() { + var m = new Models.DocumentTemplate.IndexModel() + { DocumentTemplates = Database.DocumentTemplates .Select(dt => new { @@ -30,7 +33,8 @@ namespace Disco.Web.Areas.Config.Controllers Database.JobAttachments.Count(a => a.DocumentTemplateId == dt.Id) + Database.UserAttachments.Count(a => a.DocumentTemplateId == dt.Id) }) - .ToDictionary(i => i.documentTemplate, i => i.storedInstances) + .ToDictionary(i => i.documentTemplate, i => i.storedInstances), + Packages = DocumentTemplatePackages.GetPackages() }; // UI Extensions @@ -40,10 +44,15 @@ namespace Disco.Web.Areas.Config.Controllers } else { + // Normal Document Template var m = new Models.DocumentTemplate.ShowModel() { DocumentTemplate = Database.DocumentTemplates.Include("JobSubTypes").FirstOrDefault(at => at.Id == id) }; + if (m.DocumentTemplate == null) + throw new ArgumentException("Invalid Document Template Id", nameof(id)); + + m.TemplatePagesHaveAttachmentId = m.DocumentTemplate.PdfPageHasAttachmentId(Database); m.TemplateExpressions = m.DocumentTemplate.ExtractPdfExpressions(Database); m.UpdateModel(Database); @@ -61,6 +70,32 @@ namespace Disco.Web.Areas.Config.Controllers } } + public virtual ActionResult ShowPackage(string id) + { + // Document Template Package + var m = new Models.DocumentTemplate.ShowPackageModel() + { + Package = DocumentTemplatePackages.GetPackage(id) + }; + if (m.Package == null) + throw new ArgumentException("Invalid Document Template Package Id", nameof(id)); + + if (m.Package.Scope == AttachmentTypes.Job) + { + m.JobTypes = Database.JobTypes.Include("JobSubTypes").ToList(); + m.JobSubTypesSelected = m.Package.GetJobSubTypes(m.JobTypes.SelectMany(jt => jt.JobSubTypes)); + } + var packageScopeString = m.Package.Scope.ToString(); + + m.DocumentTemplates = Database.DocumentTemplates.Where(dt => dt.Scope == packageScopeString).ToList(); + m.DocumentTemplatesSelected = m.Package.GetDocumentTemplates(m.DocumentTemplates); + + // UI Extensions + UIExtensions.ExecuteExtensions(this.ControllerContext, m); + + return View(MVC.Config.DocumentTemplate.Views.ShowPackage, m); + } + [DiscoAuthorize(Claims.Config.DocumentTemplate.ShowStatus)] public virtual ActionResult ImportStatus() { @@ -130,7 +165,7 @@ namespace Disco.Web.Areas.Config.Controllers } else { - ModelState.AddModelError("Name", "A Document Template with this Name already exists."); + ModelState.AddModelError("Id", "A Document Template with this Id already exists."); } } @@ -140,6 +175,42 @@ namespace Disco.Web.Areas.Config.Controllers return View(model); } + [DiscoAuthorizeAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure)] + public virtual ActionResult CreatePackage() + { + var m = new Models.DocumentTemplate.CreatePackageModel(); + + // UI Extensions + UIExtensions.ExecuteExtensions(this.ControllerContext, m); + + return View(m); + } + + [DiscoAuthorizeAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure), HttpPost] + public virtual ActionResult CreatePackage(Models.DocumentTemplate.CreatePackageModel model) + { + if (ModelState.IsValid) + { + // Check for Existing + var existing = DocumentTemplatePackages.GetPackage(model.Package.Id); + if (existing == null) + { + DocumentTemplatePackages.CreatePackage(model.Package); + + return RedirectToAction(MVC.Config.DocumentTemplate.ShowPackage(model.Package.Id)); + } + else + { + ModelState.AddModelError("Id", "A Document Template Package with this Id already exists."); + } + } + + // UI Extensions + UIExtensions.ExecuteExtensions(this.ControllerContext, model); + + return View(model); + } + [DiscoAuthorize(Claims.Config.Show)] public virtual ActionResult ExpressionBrowser(string type, bool StaticDeclaredMembersOnly = false) { diff --git a/Disco.Web/Areas/Config/Models/DocumentTemplate/CreatePackageModel.cs b/Disco.Web/Areas/Config/Models/DocumentTemplate/CreatePackageModel.cs new file mode 100644 index 00000000..9f79be0d --- /dev/null +++ b/Disco.Web/Areas/Config/Models/DocumentTemplate/CreatePackageModel.cs @@ -0,0 +1,21 @@ +using Disco.Models.Services.Documents; +using Disco.Models.UI.Config.DocumentTemplate; +using System.Collections.Generic; + +namespace Disco.Web.Areas.Config.Models.DocumentTemplate +{ + public class CreatePackageModel : ConfigDocumentTemplateCreatePackageModel + { + public DocumentTemplatePackage Package { get; set; } + + public List Scopes + { + get + { + return Disco.Models.Repository.DocumentTemplate.DocumentTemplateScopes.ToList(); + } + } + + } + +} \ No newline at end of file diff --git a/Disco.Web/Areas/Config/Models/DocumentTemplate/IndexModel.cs b/Disco.Web/Areas/Config/Models/DocumentTemplate/IndexModel.cs index 36e77310..d7040f13 100644 --- a/Disco.Web/Areas/Config/Models/DocumentTemplate/IndexModel.cs +++ b/Disco.Web/Areas/Config/Models/DocumentTemplate/IndexModel.cs @@ -1,4 +1,5 @@ -using Disco.Models.UI.Config.DocumentTemplate; +using Disco.Models.Services.Documents; +using Disco.Models.UI.Config.DocumentTemplate; using System.Collections.Generic; namespace Disco.Web.Areas.Config.Models.DocumentTemplate @@ -6,5 +7,7 @@ namespace Disco.Web.Areas.Config.Models.DocumentTemplate public class IndexModel : ConfigDocumentTemplateIndexModel { public Dictionary DocumentTemplates { get; set; } + + public List Packages { get; set; } } } \ No newline at end of file diff --git a/Disco.Web/Areas/Config/Models/DocumentTemplate/ShowModel.cs b/Disco.Web/Areas/Config/Models/DocumentTemplate/ShowModel.cs index 54aec2c3..2f82094b 100644 --- a/Disco.Web/Areas/Config/Models/DocumentTemplate/ShowModel.cs +++ b/Disco.Web/Areas/Config/Models/DocumentTemplate/ShowModel.cs @@ -14,7 +14,9 @@ namespace Disco.Web.Areas.Config.Models.DocumentTemplate public int StoredInstanceCount { get; set; } + public List TemplatePagesHaveAttachmentId { get; set; } public List TemplateExpressions { get; set; } + public int TemplatePageCount { get { return TemplatePagesHaveAttachmentId?.Count() ?? 0; } } public List JobTypes { get; set; } diff --git a/Disco.Web/Areas/Config/Models/DocumentTemplate/ShowPackageModel.cs b/Disco.Web/Areas/Config/Models/DocumentTemplate/ShowPackageModel.cs new file mode 100644 index 00000000..e8b5c896 --- /dev/null +++ b/Disco.Web/Areas/Config/Models/DocumentTemplate/ShowPackageModel.cs @@ -0,0 +1,24 @@ +using Disco.Models.Repository; +using Disco.Models.Services.Documents; +using Disco.Models.UI.Config.DocumentTemplate; +using System.Collections.Generic; + +namespace Disco.Web.Areas.Config.Models.DocumentTemplate +{ + public class ShowPackageModel : ConfigDocumentTemplateShowPackageModel + { + public DocumentTemplatePackage Package { get; set; } + public List JobSubTypesSelected { get; set; } + public List DocumentTemplates { get; set; } + public List DocumentTemplatesSelected { get; set; } + public List JobTypes { get; set; } + public List Scopes + { + get + { + return Disco.Models.Repository.DocumentTemplate.DocumentTemplateScopes.ToList(); + } + } + + } +} \ No newline at end of file diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/CreatePackage.cshtml b/Disco.Web/Areas/Config/Views/DocumentTemplate/CreatePackage.cshtml new file mode 100644 index 00000000..ee81cac7 --- /dev/null +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/CreatePackage.cshtml @@ -0,0 +1,38 @@ +@model Disco.Web.Areas.Config.Models.DocumentTemplate.CreatePackageModel +@{ + Authorization.RequireAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure); + + ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Create Package"); +} +@using (Html.BeginForm(MVC.Config.DocumentTemplate.CreatePackage())) +{ +
+ + + + + + + + + + + + + +
+ Id: + @Html.TextBoxFor(model => model.Package.Id)
@Html.ValidationMessageFor(model => model.Package.Id) +
+ Description: + @Html.TextBoxFor(model => model.Package.Description)
@Html.ValidationMessageFor(model => model.Package.Description) +
+ Scope: + + @Html.DropDownListFor(model => model.Package.Scope, Model.Scopes.ToSelectListItems(null)) +
+

+ +

+
+} \ No newline at end of file diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/CreatePackage.generated.cs b/Disco.Web/Areas/Config/Views/DocumentTemplate/CreatePackage.generated.cs new file mode 100644 index 00000000..320e3916 --- /dev/null +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/CreatePackage.generated.cs @@ -0,0 +1,146 @@ +#pragma warning disable 1591 +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Disco.Web.Areas.Config.Views.DocumentTemplate +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Linq; + using System.Net; + using System.Text; + using System.Web; + using System.Web.Helpers; + using System.Web.Mvc; + using System.Web.Mvc.Ajax; + using System.Web.Mvc.Html; + using System.Web.Routing; + using System.Web.Security; + using System.Web.UI; + using System.Web.WebPages; + using Disco; + using Disco.Models.Repository; + using Disco.Services; + using Disco.Services.Authorization; + using Disco.Services.Web; + using Disco.Web; + using Disco.Web.Extensions; + + [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")] + [System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/CreatePackage.cshtml")] + public partial class CreatePackage : Disco.Services.Web.WebViewPage + { + public CreatePackage() + { + } + public override void Execute() + { + + #line 2 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml" + + Authorization.RequireAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure); + + ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Create Package"); + + + #line default + #line hidden +WriteLiteral("\r\n"); + + + #line 7 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml" + using (Html.BeginForm(MVC.Config.DocumentTemplate.CreatePackage())) +{ + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Description:\r\n \r\n \r\n \r\n \r\n \r\n Scope:\r\n \r\n \r\n \r\n
\r\n I" + +"d:\r\n "); + + + #line 15 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml" + Write(Html.TextBoxFor(model => model.Package.Id)); + + + #line default + #line hidden +WriteLiteral("
"); + + + #line 15 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml" + Write(Html.ValidationMessageFor(model => model.Package.Id)); + + + #line default + #line hidden +WriteLiteral("\r\n
" + +""); + + + #line 22 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml" + Write(Html.TextBoxFor(model => model.Package.Description)); + + + #line default + #line hidden +WriteLiteral("
"); + + + #line 22 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml" + Write(Html.ValidationMessageFor(model => model.Package.Description)); + + + #line default + #line hidden +WriteLiteral("\r\n
\r\n"); + +WriteLiteral(" "); + + + #line 30 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml" + Write(Html.DropDownListFor(model => model.Package.Scope, Model.Scopes.ToSelectListItems(null))); + + + #line default + #line hidden +WriteLiteral("\r\n
\r\n \r\n \r\n

\r\n \r\n"); + + + #line 38 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml" +} + + #line default + #line hidden + } + } +} +#pragma warning restore 1591 diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/Index.cshtml b/Disco.Web/Areas/Config/Views/DocumentTemplate/Index.cshtml index c9c13d77..9bb50f8a 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/Index.cshtml +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/Index.cshtml @@ -3,8 +3,9 @@ Authorization.Require(Claims.Config.DocumentTemplate.Show); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates"); - var showTags = Model.DocumentTemplates.Keys.Any(i => i.DevicesLinkedGroup != null || i.UsersLinkedGroup != null || - i.FilterExpression != null || i.OnGenerateExpression != null || i.OnImportAttachmentExpression != null); + var showTags = Model.DocumentTemplates.Keys.Any(i => i.IsHidden || i.DevicesLinkedGroup != null || i.UsersLinkedGroup != null || + i.FilterExpression != null || i.OnGenerateExpression != null || i.OnImportAttachmentExpression != null) || + Model.Packages.Any(i => i.IsHidden || i.FilterExpression != null || i.OnGenerateExpression != null); } @if (Model.DocumentTemplates.Count == 0) { @@ -14,18 +15,19 @@ } else { - if (Model.DocumentTemplates.Keys.Any(dt => dt.IsHidden)) + if (Model.DocumentTemplates.Keys.Any(dt => dt.IsHidden) || Model.Packages.Any(p => p.IsHidden)) { - Show Hidden (@(Model.DocumentTemplates.Keys.Count(dt => dt.IsHidden))) - + Show Hidden (@(Model.DocumentTemplates.Keys.Count(dt => dt.IsHidden) + Model.Packages.Count(p => p.IsHidden))) + } @@ -67,6 +69,43 @@ else }
+ if (Model.Packages.Count > 0) + { +

Document Template Packages

+ + + + + + + @if (showTags) + { + + } + + @foreach (var package in Model.Packages.OrderBy(p => p.Id)) + { + + + + + @if (showTags) + { + + } + + } +
IdDescriptionScopeDocument Templates 
@Html.ActionLink(package.Id.ToString(), MVC.Config.DocumentTemplate.ShowPackage(package.Id))@Html.DisplayFor(modelItem => package.Description)@Html.DisplayFor(modelItem => package.Scope) + @if (package.FilterExpression != null || package.OnGenerateExpression != null) + { + + } + @if (package.IsHidden) + { + + } +
+ } }
@if (Authorization.Has(Claims.Config.DocumentTemplate.UndetectedPages)) @@ -81,6 +120,10 @@ else { @Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser()) } + @if (Model.DocumentTemplates.Count > 2 && Authorization.HasAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure)) + { + @Html.ActionLinkButton("Create Package", MVC.Config.DocumentTemplate.CreatePackage()) + } @if (Authorization.HasAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure)) { @Html.ActionLinkButton("Create Document Template", MVC.Config.DocumentTemplate.Create()) diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/Index.generated.cs b/Disco.Web/Areas/Config/Views/DocumentTemplate/Index.generated.cs index 13793836..3cf35de2 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/Index.generated.cs +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/Index.generated.cs @@ -49,8 +49,9 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate Authorization.Require(Claims.Config.DocumentTemplate.Show); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates"); - var showTags = Model.DocumentTemplates.Keys.Any(i => i.DevicesLinkedGroup != null || i.UsersLinkedGroup != null || - i.FilterExpression != null || i.OnGenerateExpression != null || i.OnImportAttachmentExpression != null); + var showTags = Model.DocumentTemplates.Keys.Any(i => i.IsHidden || i.DevicesLinkedGroup != null || i.UsersLinkedGroup != null || + i.FilterExpression != null || i.OnGenerateExpression != null || i.OnImportAttachmentExpression != null) || + Model.Packages.Any(i => i.IsHidden || i.FilterExpression != null || i.OnGenerateExpression != null); #line default @@ -58,7 +59,7 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate WriteLiteral("\r\n"); - #line 9 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 10 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (Model.DocumentTemplates.Count == 0) { @@ -74,11 +75,11 @@ WriteLiteral(" style=\"width: 450px; padding: 100px 0;\""); WriteLiteral(">\r\n

No document templates are configured

\r\n
\r\n"); - #line 14 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 15 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } else { - if (Model.DocumentTemplates.Keys.Any(dt => dt.IsHidden)) + if (Model.DocumentTemplates.Keys.Any(dt => dt.IsHidden) || Model.Packages.Any(p => p.IsHidden)) { @@ -95,27 +96,28 @@ WriteLiteral(" class=\"button small\""); WriteLiteral(">Show Hidden ("); - #line 19 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" - Write(Model.DocumentTemplates.Keys.Count(dt => dt.IsHidden)); + #line 20 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + Write(Model.DocumentTemplates.Keys.Count(dt => dt.IsHidden) + Model.Packages.Count(p => p.IsHidden)); #line default #line hidden WriteLiteral(")\r\n"); -WriteLiteral(@" +WriteLiteral(@" "); - #line 29 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 31 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -131,13 +133,13 @@ WriteLiteral(">\r\n \r\n Id\r\n De " Scope\r\n Stored Instances\r\n"); - #line 36 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 38 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" #line default #line hidden - #line 36 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 38 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (showTags) { @@ -147,7 +149,7 @@ WriteLiteral(">\r\n \r\n Id\r\n De WriteLiteral("  \r\n"); - #line 39 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 41 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -156,13 +158,13 @@ WriteLiteral("  \r\n"); WriteLiteral(" \r\n"); - #line 41 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 43 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" #line default #line hidden - #line 41 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 43 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" foreach (var pair in Model.DocumentTemplates) { var item = pair.Key; @@ -173,20 +175,20 @@ WriteLiteral(" \r\n"); #line hidden WriteLiteral(" (item.IsHidden ? "hidden" : null + #line 47 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" +, Tuple.Create(Tuple.Create("", 2065), Tuple.Create(item.IsHidden ? "hidden" : null #line default #line hidden -, 1806), false) +, 2065), false) ); WriteLiteral(">\r\n "); - #line 46 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 48 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" Write(Html.ActionLink(item.Id.ToString(), MVC.Config.DocumentTemplate.Index(item.Id))); @@ -195,7 +197,7 @@ WriteLiteral(">\r\n "); WriteLiteral("\r\n "); - #line 47 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 49 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" Write(Html.DisplayFor(modelItem => item.Description)); @@ -204,7 +206,7 @@ WriteLiteral("\r\n "); WriteLiteral("\r\n "); - #line 48 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 50 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" Write(Html.DisplayFor(modelItem => item.Scope)); @@ -213,7 +215,7 @@ WriteLiteral("\r\n "); WriteLiteral("\r\n "); - #line 49 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 51 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" Write(storedCount.ToString("N0")); @@ -222,13 +224,13 @@ WriteLiteral("\r\n "); WriteLiteral("\r\n"); - #line 50 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 52 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" #line default #line hidden - #line 50 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 52 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (showTags) { @@ -238,13 +240,13 @@ WriteLiteral("\r\n"); WriteLiteral(" \r\n"); - #line 53 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 55 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" #line default #line hidden - #line 53 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 55 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (item.DevicesLinkedGroup != null || item.UsersLinkedGroup != null) { @@ -260,7 +262,7 @@ WriteLiteral(" title=\"Is Linked\""); WriteLiteral(">\r\n"); - #line 56 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 58 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -269,7 +271,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 57 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 59 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (item.FilterExpression != null || item.OnGenerateExpression != null || item.OnImportAttachmentExpression != null) { @@ -285,7 +287,7 @@ WriteLiteral(" title=\"Has Expressions\""); WriteLiteral(">\r\n"); - #line 60 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 62 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -294,7 +296,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 61 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 63 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (item.IsHidden) { @@ -310,7 +312,7 @@ WriteLiteral(" title=\"Is Hidden\""); WriteLiteral(">\r\n"); - #line 64 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 66 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -319,7 +321,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" \r\n"); - #line 66 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 68 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -328,7 +330,7 @@ WriteLiteral(" \r\n"); WriteLiteral(" \r\n"); - #line 68 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 70 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -337,7 +339,202 @@ WriteLiteral(" \r\n"); WriteLiteral(" \r\n"); - #line 70 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 72 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + if (Model.Packages.Count > 0) + { + + + #line default + #line hidden +WriteLiteral(" Document Template Packages\r\n"); + +WriteLiteral(" \r\n \r\n Id\r\n Description" + +"\r\n Scope\r\n Document Templates\r\n"); + + + #line 81 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + + + #line default + #line hidden + + #line 81 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + if (showTags) + { + + + #line default + #line hidden +WriteLiteral("  \r\n"); + + + #line 84 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 86 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + + + #line default + #line hidden + + #line 86 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + foreach (var package in Model.Packages.OrderBy(p => p.Id)) + { + + + #line default + #line hidden +WriteLiteral(" (package.IsHidden ? "hidden" : null + + #line default + #line hidden +, 3897), false) +); + +WriteLiteral(">\r\n "); + + + #line 89 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + Write(Html.ActionLink(package.Id.ToString(), MVC.Config.DocumentTemplate.ShowPackage(package.Id))); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 90 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + Write(Html.DisplayFor(modelItem => package.Description)); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 91 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + Write(Html.DisplayFor(modelItem => package.Scope)); + + + #line default + #line hidden +WriteLiteral("\r\n"); + + + #line 92 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + + + #line default + #line hidden + + #line 92 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + if (showTags) + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 95 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + + + #line default + #line hidden + + #line 95 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + if (package.FilterExpression != null || package.OnGenerateExpression != null) + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 98 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 99 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + if (package.IsHidden) + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 102 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 104 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 106 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 108 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + } } @@ -350,13 +547,13 @@ WriteLiteral(" class=\"actionBar\""); WriteLiteral(">\r\n"); - #line 72 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 111 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" #line default #line hidden - #line 72 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 111 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (Authorization.Has(Claims.Config.DocumentTemplate.UndetectedPages)) { @@ -364,14 +561,14 @@ WriteLiteral(">\r\n"); #line default #line hidden - #line 74 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 113 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" Write(Html.ActionLinkButton("Undetected Pages", MVC.Config.DocumentTemplate.UndetectedPages())); #line default #line hidden - #line 74 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 113 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -381,7 +578,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 76 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 115 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (Authorization.Has(Claims.Config.DocumentTemplate.ShowStatus)) { @@ -389,14 +586,14 @@ WriteLiteral(" "); #line default #line hidden - #line 78 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 117 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" Write(Html.ActionLinkButton("Import Status", MVC.Config.DocumentTemplate.ImportStatus())); #line default #line hidden - #line 78 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 117 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -406,7 +603,7 @@ WriteLiteral(" "); WriteLiteral(" "); - #line 80 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 119 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (Authorization.Has(Claims.Config.Show)) { @@ -414,14 +611,14 @@ WriteLiteral(" "); #line default #line hidden - #line 82 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 121 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" Write(Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser())); #line default #line hidden - #line 82 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 121 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } @@ -431,7 +628,32 @@ WriteLiteral(" "); WriteLiteral(" "); - #line 84 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 123 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + if (Model.DocumentTemplates.Count > 2 && Authorization.HasAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure)) + { + + + #line default + #line hidden + + #line 125 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + Write(Html.ActionLinkButton("Create Package", MVC.Config.DocumentTemplate.CreatePackage())); + + + #line default + #line hidden + + #line 125 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + + } + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 127 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" if (Authorization.HasAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure)) { @@ -439,14 +661,14 @@ WriteLiteral(" "); #line default #line hidden - #line 86 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 129 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" Write(Html.ActionLinkButton("Create Document Template", MVC.Config.DocumentTemplate.Create())); #line default #line hidden - #line 86 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" + #line 129 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml" } diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.cshtml b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.cshtml index 9d320807..e4320c39 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.cshtml +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.cshtml @@ -52,7 +52,7 @@ Id: - @Html.DisplayFor(model => model.DocumentTemplate.Id) + @Html.DisplayFor(model => model.DocumentTemplate.Id) @@ -70,30 +70,30 @@ @if (canConfig) { - @Html.TextBoxFor(model => model.DocumentTemplate.Description) - @AjaxHelpers.AjaxSave() - @AjaxHelpers.AjaxLoader() - + @Html.TextBoxFor(model => model.DocumentTemplate.Description) + @AjaxHelpers.AjaxSave() + @AjaxHelpers.AjaxLoader() + } else { - if (string.IsNullOrEmpty(Model.DocumentTemplate.Description)) - { - <None Specified> - } - else - { - @Model.DocumentTemplate.Description - } + if (string.IsNullOrEmpty(Model.DocumentTemplate.Description)) + { + <None Specified> + } + else + { + @Model.DocumentTemplate.Description + } } @@ -105,24 +105,24 @@
@if (canConfig) { - - - @AjaxHelpers.AjaxLoader() - + + + @AjaxHelpers.AjaxLoader() + } else { - - + + }
@@ -148,150 +148,55 @@
@if (canConfig) { -
- @using (Html.BeginForm(MVC.API.DocumentTemplate.UpdateScope(Model.DocumentTemplate.Id, redirect: true))) - { -
- - -
- } -
-

- Expressions within the Template PDF may need to be updated to reflect any changes to the Document Template Scope. -

-
- @if (Model.DocumentTemplate.UsersLinkedGroup != null || Model.DocumentTemplate.DevicesLinkedGroup != null) - { -
-

- Warning: This Document Template contains Linked Groups, these will be automatically updated to reflect the new Document Template Scope which may result in undesired behaviour. -

-
- } -
- - } - @if (Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.Job) - { -
-

Job Type Filters:

-
-
- @if (Model.DocumentTemplate.JobSubTypes.Count > 0) +
+ @using (Html.BeginForm(MVC.API.DocumentTemplate.UpdateScope(Model.DocumentTemplate.Id, redirect: true))) { -
    - @foreach (var jobType in Model.DocumentTemplate.JobSubTypes.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) - { -
  • - @jobType.Key.Description -
      - @if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) +
      + + - -
      - @CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div") - @CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.DocumentTemplate.JobSubTypes), 2) +
      -
      } +
      +

      + Expressions within the Template PDF may need to be updated to reflect any changes to the Document Template Scope. +

      +
      + @if (Model.DocumentTemplate.UsersLinkedGroup != null || Model.DocumentTemplate.DevicesLinkedGroup != null) + { +
      +

      + Warning: This Document Template contains Linked Groups, these will be automatically updated to reflect the new Document Template Scope which may result in undesired behaviour. +

      +
      }
- - } -
+ } + @if (Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.Job) + { +
+

Job Type Filters:

+
+
+ @if (Model.DocumentTemplate.JobSubTypes.Count > 0) + { +
    + @foreach (var jobType in Model.DocumentTemplate.JobSubTypes.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) + { +
  • + @jobType.Key.Description +
      + @if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) + { +
    • [All Sub Types]
    • + } + else + { + foreach (var jobSubType in jobType) + { +
    • @jobSubType.Description
    • + } + } +
    +
  • + } +
+ } + else + { + <No Filter> + } +
+ @if (canConfig) + { + Update +
+ @using (Html.BeginForm(MVC.API.DocumentTemplate.UpdateJobSubTypes(Model.DocumentTemplate.Id, null, true))) + { + var selectedTypes = Model.DocumentTemplate.JobSubTypes.Select(jst => jst.JobType).Distinct().ToList(); + foreach (var jt in Model.JobTypes) + { +
+

+ +

+
+ @CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div") + @CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.DocumentTemplate.JobSubTypes), 2) +
+
+ } + } +
+ + } +
} @@ -343,14 +343,14 @@ @AjaxHelpers.AjaxLoader() } else @@ -383,62 +383,81 @@ @if (canConfig) { - - - @Html.ActionLinkSmallButton("Download Template", MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id)) - @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.Upload)) - { - -
-

Select a PDF Template to upload:

-
- @using (Html.BeginForm(MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" })) + + + @if (Model.TemplatePagesHaveAttachmentId.Any(i => !i)) + { +
+ @for (int i = 0; i < Model.TemplatePagesHaveAttachmentId.Count; i++) + { + if (!Model.TemplatePagesHaveAttachmentId[i]) + { +

+ Note: Page @(i + 1) does not have a DiscoAttachmentId field. +

+ } + } +

+ The DiscoAttachmentId field is replaced with a unique QR Code which identifies the page when it is imported back into Disco ICT. +

+
+ } +
+ @Html.ActionLinkSmallButton("Download Template", MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id)) + @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.Upload)) { - + +
+

Select a PDF Template to upload:

+
+ @using (Html.BeginForm(MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" })) + { + + } +
+
+ }
-
- - } - - + + } @@ -455,61 +474,61 @@ @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) { - @Html.EditorFor(model => model.DocumentTemplate.FilterExpression) - @AjaxHelpers.AjaxRemove() - @AjaxHelpers.AjaxSave() - @AjaxHelpers.AjaxLoader() - + } else { - if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.FilterExpression)) - { - <None Specified> - } - else - { -
- @Model.DocumentTemplate.FilterExpression -
- } + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.FilterExpression)) + { + <None Specified> + } + else + { +
+ @Model.DocumentTemplate.FilterExpression +
+ } }

@@ -525,61 +544,61 @@ @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 -
- } + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnGenerateExpression)) + { + <None Specified> + } + else + { +
+ @Model.DocumentTemplate.OnGenerateExpression +
+ } }

@@ -595,61 +614,61 @@ @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 -
- } + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnImportAttachmentExpression)) + { + <None Specified> + } + else + { +
+ @Model.DocumentTemplate.OnImportAttachmentExpression +
+ } }

@@ -665,26 +684,26 @@

@Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() - { - CanConfigure = canConfig, - CategoryDescription = DocumentTemplateUsersManagedGroup.GetCategoryDescription(Model.DocumentTemplate), - Description = DocumentTemplateUsersManagedGroup.GetDescription(Model.DocumentTemplate), - ManagedGroup = Model.UsersLinkedGroup, - IncludeFilterBeginDate = true, - UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateUsersLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) - }) + { + CanConfigure = canConfig, + CategoryDescription = DocumentTemplateUsersManagedGroup.GetCategoryDescription(Model.DocumentTemplate), + Description = DocumentTemplateUsersManagedGroup.GetDescription(Model.DocumentTemplate), + ManagedGroup = Model.UsersLinkedGroup, + IncludeFilterBeginDate = true, + UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateUsersLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) + }) @Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() - { - CanConfigure = canConfig, - CategoryDescription = DocumentTemplateDevicesManagedGroup.GetCategoryDescription(Model.DocumentTemplate), - Description = DocumentTemplateDevicesManagedGroup.GetDescription(Model.DocumentTemplate), - ManagedGroup = Model.DevicesLinkedGroup, - IncludeFilterBeginDate = true, - UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateDevicesLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) - }) + { + CanConfigure = canConfig, + CategoryDescription = DocumentTemplateDevicesManagedGroup.GetCategoryDescription(Model.DocumentTemplate), + Description = DocumentTemplateDevicesManagedGroup.GetDescription(Model.DocumentTemplate), + ManagedGroup = Model.DevicesLinkedGroup, + IncludeFilterBeginDate = true, + UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateDevicesLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) + }) @if (canConfig) { - @Html.Partial(MVC.Config.Shared.Views.LinkedGroupShared) + @Html.Partial(MVC.Config.Shared.Views.LinkedGroupShared) }
@@ -739,113 +758,119 @@
@if (hideAdvanced) { - - + } @if (Authorization.Has(Claims.Config.Show)) { - @Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser()) + @Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser()) } @if (canBulkGenerate) { - Bulk Generate -
-
- @switch (Model.DocumentTemplate.Scope) + Bulk Generate +
+
+ @switch (Model.DocumentTemplate.Scope) + { + case "Device": +
+ Enter multiple Device Serial Numbers separated by <new line>, commas (,) or semicolons (;). +
+
+

Examples:

+
+ 01234567
+ ABCD9876
+ 8VQ6G2R +
+
01234567,ABCD9876,8VQ6G2R
+
01234567;ABCD9876;8VQ6G2R
+
+ break; + case "Job": +
+ Enter multiple Job Ids separated by <new line>, commas (,) or semicolons (;). +
+
+

Examples:

+
+ 86
+ 99
+ 44 +
+
86,99,44
+
86;99;44
+
+ break; + case "User": +
+ Enter multiple User Ids separated by <new line>, commas (,) or semicolons (;). +
+
+

Examples:

+
+ user6
+ smi0099
@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith +
+
user6,smi0099,@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
+
user6;smi0099;@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
+
+ break; + } +
+ @using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id), FormMethod.Post)) { - case "Device": -
- Enter multiple Device Serial Numbers separated by <new line>, commas (,) or semicolons (;). -
-
-

Examples:

-
- 01234567
- ABCD9876
- 8VQ6G2R -
-
01234567,ABCD9876,8VQ6G2R
-
01234567;ABCD9876;8VQ6G2R
-
- break; - case "Job": -
- Enter multiple Job Ids separated by <new line>, commas (,) or semicolons (;). -
-
-

Examples:

-
- 86
- 99
- 44 -
-
86,99,44
-
86;99;44
-
- break; - case "User": -
- Enter multiple User Ids separated by <new line>, commas (,) or semicolons (;). -
-
-

Examples:

-
- user6
- smi0099
@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith -
-
user6,smi0099,@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
-
user6;smi0099;@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
-
- break; +
+ + if (Model.TemplatePageCount > 1 && Model.TemplatePageCount % 2 != 0) + { +
+ +
+ } }
- @using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id), FormMethod.Post)) - { -
- - } -
- + } @if (Authorization.Has(Claims.Config.DocumentTemplate.Delete)) { - @Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete") + @Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete") }
diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs index b1d8bad9..534588e4 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs @@ -129,20 +129,18 @@ WriteLiteral(" style=\"width: 650px; margin: 10px auto 20px;\""); WriteLiteral(">\r\n \r\n \r\n \r\n " + " \r\n " + -" \r\n \r\n \r\n " + -" \r\n \r\n \r\n" + +" \r\n \r\n \r\n #line 71 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { - + #line default #line hidden #line 73 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Html.TextBoxFor(model => model.DocumentTemplate.Description)); + Write(Html.TextBoxFor(model => model.DocumentTemplate.Description)); #line default #line hidden #line 73 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + + #line default #line hidden #line 74 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxSave()); + Write(AjaxHelpers.AjaxSave()); #line default #line hidden #line 74 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + + #line default #line hidden #line 75 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxLoader()); + Write(AjaxHelpers.AjaxLoader()); #line default #line hidden #line 75 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - + #line default #line hidden -WriteLiteral(" - $(function () { - document.DiscoFunctions.PropertyChangeHelper( - $('#DocumentTemplate_Description'), - 'Description', - '"); + $(function () { + document.DiscoFunctions.PropertyChangeHelper( + $('#DocumentTemplate_Description'), + 'Description', + '"); #line 81 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Url.Action(MVC.API.DocumentTemplate.UpdateDescription(Model.DocumentTemplate.Id))); + Write(Url.Action(MVC.API.DocumentTemplate.UpdateDescription(Model.DocumentTemplate.Id))); #line default #line hidden -WriteLiteral("\',\r\n \'Description\'\r\n " + -" );\r\n });\r\n \r\n"); +WriteLiteral("\',\r\n \'Description\'\r\n " + +" );\r\n });\r\n " + +" \r\n"); #line 86 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { - if (string.IsNullOrEmpty(Model.DocumentTemplate.Description)) - { + if (string.IsNullOrEmpty(Model.DocumentTemplate.Description)) + { #line default #line hidden -WriteLiteral(" <None Specified>\r\n"); #line 92 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - } - else - { - + } + else + { + #line default #line hidden #line 95 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Model.DocumentTemplate.Description); + Write(Model.DocumentTemplate.Description); #line default #line hidden #line 95 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - } + + } } @@ -301,7 +300,7 @@ WriteLiteral(" \r\n \r\n #line default #line hidden -WriteLiteral(" \r\n \r\n \r\n " + +" \r\n"); - #line 439 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - } - - - #line default - #line hidden -WriteLiteral(" \r\n \r\n"); - - - #line 442 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 461 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -1415,164 +1501,165 @@ WriteLiteral(">\r\n

Advanced Options

\r\n
\r\n Id:\r\n \r\n"); - -WriteLiteral(" "); +" \r\n "); #line 55 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Html.DisplayFor(model => model.DocumentTemplate.Id)); + Write(Html.DisplayFor(model => model.DocumentTemplate.Id)); #line default #line hidden -WriteLiteral("\r\n
\r\n Statistics:\r\n \r\n \r\n "); +WriteLiteral("\r\n
\r\n Statistics:\r\n " + +" \r\n "); #line 63 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" @@ -174,85 +172,86 @@ WriteLiteral("\r\n
\r\n"); + + + #line 388 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + #line default + #line hidden + + #line 388 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + if (Model.TemplatePagesHaveAttachmentId.Any(i => !i)) + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 391 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + #line default + #line hidden + + #line 391 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + for (int i = 0; i < Model.TemplatePagesHaveAttachmentId.Count; i++) + { + if (!Model.TemplatePagesHaveAttachmentId[i]) + { + + + #line default + #line hidden +WriteLiteral(" \r\n Note: Page "); + + + #line 396 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(i + 1); + + + #line default + #line hidden +WriteLiteral(" does not have a DiscoAttachmentId field.\r\n " + +"

\r\n"); + + + #line 398 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + } + + + #line default + #line hidden +WriteLiteral(" + The DiscoAttachmentId field is replaced with a unique QR Code which identifies the page when it is imported back into Disco ICT. +

+ +"); + + + #line 404 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); -WriteLiteral(" "); +WriteLiteral(" "); - #line 388 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Html.ActionLinkSmallButton("Download Template", MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id))); + #line 406 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Html.ActionLinkSmallButton("Download Template", MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id))); #line default @@ -1289,20 +1369,20 @@ WriteLiteral(" "); WriteLiteral("\r\n"); - #line 389 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - + #line 407 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line default #line hidden - #line 389 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.Upload)) - { + #line 407 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.Upload)) + { #line default #line hidden -WriteLiteral(" Replace Template\r\n"); -WriteLiteral(" \r\n

Select a PDF Template to upload:

\r\n " + -"
\r\n"); +WriteLiteral(">\r\n

Select a PDF Template to upload:\r\n
\r\n"); - #line 395 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - + #line 413 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line default #line hidden - #line 395 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - using (Html.BeginForm(MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" })) - { + #line 413 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + using (Html.BeginForm(MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" })) + { #line default #line hidden -WriteLiteral(" \r\n"); - #line 398 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 416 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + + + #line default + #line hidden +WriteLiteral("
\r\n " + +"

\r\n"); + +WriteLiteral(" \r\n $(function () {\r\n " + +" var dialog, template;\r\n\r\n " + +" function showDialog() {\r\n " + +" if (dialog == null) {\r\n " + +"template = $(\'#Config_DocumentTemplates_TemplatePdf_Template\');\r\n\r\n " + +" dialog = $(\'#Config_DocumentTemplates_Tem" + +"platePdf_Dialog\').dialog({\r\n " + +" width: 350,\r\n resizab" + +"le: false,\r\n modal: true," + +"\r\n autoOpen: false,\r\n " + +" buttons: {\r\n " + +" \'Upload\': function () {\r\n " + +" if (template.val() == \'\') {" + +"\r\n alert(\'A t" + +"emplate file is required to upload.\');\r\n " + +" } else {\r\n " + +" dialog.dialog(\'option\', \'buttons\', null);\r\n " + +" dialog.dialog(\'disable\');\r\n" + +" template.clo" + +"sest(\'form\').submit();\r\n " + +" }\r\n },\r\n " + +" \'Cancel\': function () {\r\n" + +" dialog.dialog(\'c" + +"lose\');\r\n }\r\n " + +" }\r\n " + +" });\r\n }\r\n\r" + +"\n dialog.dialog(\'open\');\r\n\r\n " + +" return false;\r\n " + +" }\r\n\r\n $(\'#Confi" + +"g_DocumentTemplates_TemplatePdf_Button\').click(showDialog);\r\n " + +" });\r\n \r\n"); + + + #line 457 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } #line default #line hidden -WriteLiteral(" \r\n \r\n"); - -WriteLiteral(" \r\n $(function () {\r\n v" + -"ar dialog, template;\r\n\r\n function showDialog() {\r" + -"\n if (dialog == null) {\r\n " + -" template = $(\'#Config_DocumentTemplates_TemplatePdf_Template" + -"\');\r\n\r\n dialog = $(\'#Config_DocumentTempl" + -"ates_TemplatePdf_Dialog\').dialog({\r\n " + -"width: 350,\r\n resizable: false,\r\n " + -" modal: true,\r\n " + -" autoOpen: false,\r\n " + -"buttons: {\r\n \'Upload\': function (" + -") {\r\n if (template.val() == \'" + -"\') {\r\n alert(\'A template " + -"file is required to upload.\');\r\n " + -" } else {\r\n dialog.dia" + -"log(\'option\', \'buttons\', null);\r\n " + -" dialog.dialog(\'disable\');\r\n " + -" template.closest(\'form\').submit();\r\n " + -" }\r\n },\r\n " + -" \'Cancel\': function () {\r\n " + -" dialog.dialog(\'close\');\r\n " + -" }\r\n " + -"}\r\n });\r\n " + -" }\r\n\r\n dialog.dialog(\'open\');\r\n\r\n " + -" return false;\r\n }\r\n\r\n " + -" $(\'#Config_DocumentTemplates_TemplatePdf_Button\')" + -".click(showDialog);\r\n });\r\n \r\n"); +WriteLiteral(" \r\n
\r\n "sion:\r\n \r\n + + + + + + + + + + + + + + + + + + +
\r\n"); - #line 456 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 475 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 456 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 475 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) { - + #line default #line hidden - #line 458 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Html.EditorFor(model => model.DocumentTemplate.FilterExpression)); + #line 477 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Html.EditorFor(model => model.DocumentTemplate.FilterExpression)); #line default #line hidden - #line 458 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + #line 477 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + #line default #line hidden - #line 459 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxRemove()); + #line 478 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxRemove()); #line default #line hidden - #line 459 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + #line 478 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + #line default #line hidden - #line 460 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxSave()); + #line 479 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 460 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + #line 479 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + #line default #line hidden - #line 461 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxLoader()); + #line 480 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 461 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - + #line 480 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line default #line hidden -WriteLiteral(" - $(function () { - var field = $('#DocumentTemplate_FilterExpression'); - var fieldRemove = field.next('.ajaxRemove'); - var fieldOriginalWidth, fieldOriginalHeight; + $(function () { + var field = $('#DocumentTemplate_FilterExpression'); + var fieldRemove = field.next('.ajaxRemove'); + var fieldOriginalWidth, fieldOriginalHeight; - document.DiscoFunctions.PropertyChangeHelper( - field, - 'None', - '"); + document.DiscoFunctions.PropertyChangeHelper( + field, + 'None', + '"); - #line 471 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Url.Action(MVC.API.DocumentTemplate.UpdateFilterExpression(Model.DocumentTemplate.Id))); + #line 490 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Url.Action(MVC.API.DocumentTemplate.UpdateFilterExpression(Model.DocumentTemplate.Id))); #line default #line hidden -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 " + +WriteLiteral("\',\r\n \'FilterExpression\'\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\').ani" + +"mate({ width: field.parent().width() - 42, height: 75 }, 200);\r\n " + +" }).blur(function () {\r\n " + +" field.css(\'overflow\', \'hidden\').animate({ width: fieldOriginalWidth, height: " + +"fieldOriginalHeight }, 200);\r\n }).change(func" + +"tion () {\r\n if (!!field.val()) {\r\n " + +" fieldRemove.show();\r\n " + +" } else {\r\n fieldRem" + +"ove.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"); +" } else {\r\n fieldRemove.hide();\r\n " + +" }\r\n });\r\n " + +" \r\n"); - #line 500 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 519 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { - if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.FilterExpression)) - { + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.FilterExpression)) + { #line default #line hidden -WriteLiteral(" <None Specified>\r\n"); - #line 506 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - } - else - { + #line 525 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + else + { #line default #line hidden -WriteLiteral(" \r\n"); -WriteLiteral(" "); +WriteLiteral(" "); - #line 510 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Model.DocumentTemplate.FilterExpression); + #line 529 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Model.DocumentTemplate.FilterExpression); #line default #line hidden -WriteLiteral("\r\n \r\n"); +WriteLiteral("\r\n \r\n"); - #line 512 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - } + #line 531 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } } @@ -1603,164 +1690,165 @@ WriteLiteral(@">This expression will be evaluated to determine if this templ "); - #line 526 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 545 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 526 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 545 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) { - + #line default #line hidden - #line 528 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Html.EditorFor(model => model.DocumentTemplate.OnGenerateExpression)); + #line 547 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Html.EditorFor(model => model.DocumentTemplate.OnGenerateExpression)); #line default #line hidden - #line 528 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + #line 547 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + #line default #line hidden - #line 529 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxRemove()); + #line 548 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxRemove()); #line default #line hidden - #line 529 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + #line 548 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + #line default #line hidden - #line 530 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxSave()); + #line 549 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 530 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + #line 549 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + #line default #line hidden - #line 531 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxLoader()); + #line 550 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 531 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - + #line 550 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line default #line hidden -WriteLiteral(" - $(function () { - var field = $('#DocumentTemplate_OnGenerateExpression'); - var fieldRemove = field.next('.ajaxRemove'); - var fieldOriginalWidth, fieldOriginalHeight; + $(function () { + var field = $('#DocumentTemplate_OnGenerateExpression'); + var fieldRemove = field.next('.ajaxRemove'); + var fieldOriginalWidth, fieldOriginalHeight; - document.DiscoFunctions.PropertyChangeHelper( - field, - 'None', - '"); + document.DiscoFunctions.PropertyChangeHelper( + field, + 'None', + '"); - #line 541 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Url.Action(MVC.API.DocumentTemplate.UpdateOnGenerateExpression(Model.DocumentTemplate.Id))); + #line 560 "..\..\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 " + +WriteLiteral("\',\r\n \'OnGenerateExpression\'\r\n " + +" );\r\n\r\n field.focus(fun" + +"ction () {\r\n fieldOriginalWidth = field.w" + +"idth();\r\n fieldOriginalHeight = field.hei" + +"ght();\r\n field.css(\'overflow\', \'visible\')" + +".animate({ width: field.parent().width() - 42, height: 75 }, 200);\r\n " + +" }).blur(function () {\r\n " + +" field.css(\'overflow\', \'hidden\').animate({ width: fieldOriginalWidth, heig" + +"ht: fieldOriginalHeight }, 200);\r\n }).change(" + +"function () {\r\n if (!!field.val()) {\r\n " + +" fieldRemove.show();\r\n " + +" } else {\r\n fiel" + +"dRemove.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"); +" } else {\r\n fieldRemove.hide();" + +"\r\n }\r\n });\r\n " + +" \r\n"); - #line 570 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 589 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { - if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnGenerateExpression)) - { + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnGenerateExpression)) + { #line default #line hidden -WriteLiteral(" <None Specified>\r\n"); - #line 576 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - } - else - { + #line 595 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + else + { #line default #line hidden -WriteLiteral(" \r\n"); -WriteLiteral(" "); +WriteLiteral(" "); - #line 580 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Model.DocumentTemplate.OnGenerateExpression); + #line 599 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Model.DocumentTemplate.OnGenerateExpression); #line default #line hidden -WriteLiteral("\r\n \r\n"); +WriteLiteral("\r\n \r\n"); - #line 582 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - } + #line 601 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } } @@ -1791,164 +1879,165 @@ WriteLiteral(@">This expression will be evaluated each time a document is ge "); - #line 596 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 615 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 596 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 615 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) { - + #line default #line hidden - #line 598 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Html.EditorFor(model => model.DocumentTemplate.OnImportAttachmentExpression)); + #line 617 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Html.EditorFor(model => model.DocumentTemplate.OnImportAttachmentExpression)); #line default #line hidden - #line 598 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + #line 617 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + #line default #line hidden - #line 599 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxRemove()); + #line 618 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxRemove()); #line default #line hidden - #line 599 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + #line 618 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + #line default #line hidden - #line 600 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxSave()); + #line 619 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 600 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - - + #line 619 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + #line default #line hidden - #line 601 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(AjaxHelpers.AjaxLoader()); + #line 620 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 601 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - + #line 620 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line default #line hidden -WriteLiteral(" - $(function () { - var field = $('#DocumentTemplate_OnImportAttachmentExpression'); - var fieldRemove = field.next('.ajaxRemove'); - var fieldOriginalWidth, fieldOriginalHeight; + $(function () { + var field = $('#DocumentTemplate_OnImportAttachmentExpression'); + var fieldRemove = field.next('.ajaxRemove'); + var fieldOriginalWidth, fieldOriginalHeight; - document.DiscoFunctions.PropertyChangeHelper( - field, - 'None', - '"); + document.DiscoFunctions.PropertyChangeHelper( + field, + 'None', + '"); - #line 611 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Url.Action(MVC.API.DocumentTemplate.UpdateOnImportAttachmentExpression(Model.DocumentTemplate.Id))); + #line 630 "..\..\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"); +WriteLiteral("\',\r\n \'OnImportAttachmentExpression\'\r\n " + +" );\r\n\r\n field.f" + +"ocus(function () {\r\n fieldOriginalWidth =" + +" field.width();\r\n fieldOriginalHeight = f" + +"ield.height();\r\n field.css(\'overflow\', \'v" + +"isible\').animate({ width: field.parent().width() - 42, height: 75 }, 200);\r\n " + +" }).blur(function () {\r\n " + +" field.css(\'overflow\', \'hidden\').animate({ width: fieldOriginalWid" + +"th, 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(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 640 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 659 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { - if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnImportAttachmentExpression)) - { + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnImportAttachmentExpression)) + { #line default #line hidden -WriteLiteral(" <None Specified>\r\n"); - #line 646 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - } - else - { + #line 665 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + else + { #line default #line hidden -WriteLiteral(" \r\n"); -WriteLiteral(" "); +WriteLiteral(" "); - #line 650 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Model.DocumentTemplate.OnImportAttachmentExpression); + #line 669 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Model.DocumentTemplate.OnImportAttachmentExpression); #line default #line hidden -WriteLiteral("\r\n \r\n"); +WriteLiteral("\r\n \r\n"); - #line 652 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - } + #line 671 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } } @@ -1982,16 +2071,16 @@ WriteLiteral(@">This expression will be evaluated each time a document is im WriteLiteral(" "); - #line 667 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 686 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() - { - CanConfigure = canConfig, - CategoryDescription = DocumentTemplateUsersManagedGroup.GetCategoryDescription(Model.DocumentTemplate), - Description = DocumentTemplateUsersManagedGroup.GetDescription(Model.DocumentTemplate), - ManagedGroup = Model.UsersLinkedGroup, - IncludeFilterBeginDate = true, - UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateUsersLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) - })); + { + CanConfigure = canConfig, + CategoryDescription = DocumentTemplateUsersManagedGroup.GetCategoryDescription(Model.DocumentTemplate), + Description = DocumentTemplateUsersManagedGroup.GetDescription(Model.DocumentTemplate), + ManagedGroup = Model.UsersLinkedGroup, + IncludeFilterBeginDate = true, + UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateUsersLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) + })); #line default @@ -2001,16 +2090,16 @@ WriteLiteral("\r\n"); WriteLiteral(" "); - #line 676 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 695 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() - { - CanConfigure = canConfig, - CategoryDescription = DocumentTemplateDevicesManagedGroup.GetCategoryDescription(Model.DocumentTemplate), - Description = DocumentTemplateDevicesManagedGroup.GetDescription(Model.DocumentTemplate), - ManagedGroup = Model.DevicesLinkedGroup, - IncludeFilterBeginDate = true, - UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateDevicesLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) - })); + { + CanConfigure = canConfig, + CategoryDescription = DocumentTemplateDevicesManagedGroup.GetCategoryDescription(Model.DocumentTemplate), + Description = DocumentTemplateDevicesManagedGroup.GetDescription(Model.DocumentTemplate), + ManagedGroup = Model.DevicesLinkedGroup, + IncludeFilterBeginDate = true, + UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateDevicesLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) + })); #line default @@ -2018,29 +2107,29 @@ WriteLiteral(" "); WriteLiteral("\r\n"); - #line 685 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 704 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 685 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 704 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { - + #line default #line hidden - #line 687 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupShared)); + #line 706 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupShared)); #line default #line hidden - #line 687 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - + #line 706 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } @@ -2056,7 +2145,7 @@ WriteLiteral(">\r\n

Template Expressions

\r\n"); WriteLiteral(" "); - #line 697 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 716 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.Partial(MVC.Config.DocumentTemplate.Views._ExpressionsTable, Model.TemplateExpressions)); @@ -2120,20 +2209,20 @@ WriteLiteral(" class=\"actionBar\""); WriteLiteral(">\r\n"); - #line 740 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 759 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 740 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 759 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (hideAdvanced) { #line default #line hidden -WriteLiteral(" Show Advanced Options\r\n"); -WriteLiteral(@" + "); - #line 751 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 770 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -2161,23 +2250,23 @@ WriteLiteral(@" + "); - #line 846 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 871 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -2466,23 +2592,23 @@ WriteLiteral(@" + } + else + { + if (string.IsNullOrEmpty(Model.Package.Description)) + { + <None Specified> + } + else + { + @Model.Package.Description + } + } +
+   + +
+ @if (canConfig) + { + + + @AjaxHelpers.AjaxLoader() + + } + else + { + + + } +
+
+

+ If selected the package will not appear in the list of documents to generate. +

+
+
+   + +
+ @if (canConfig) + { + + + @AjaxHelpers.AjaxLoader() + + } + else + { + + + } +
+
+

+ If selected blank pages will be inserted to ensure each of the individual documents within the package appear on separate pages when using duplex printing. +

+
+
+ Scope: + +

@Model.Package.Scope Scope

+
+

+ This package is generated from @(Model.Package.Scope)s. Any expressions within the Document Template PDF will be evaluated within the @(Model.Package.Scope) Scope. +

+
+
+ +
+ @if (canConfig) + { +
+ @using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateScope(Model.Package.Id, redirect: true))) + { +
+ + +
+ } + @if (Model.Package.DocumentTemplateIds != null && Model.Package.DocumentTemplateIds.Count > 0) + { +
+

+ If changed, all Document Templates will be unassociated with this Package. +

+
+ } +
+ + } + @if (Model.Package.Scope == AttachmentTypes.Job) + { +
+

Job Type Filters:

+
+
+ @if (Model.Package.JobSubTypes != null && Model.Package.JobSubTypes.Count > 0) + { +
    + @foreach (var jobType in Model.JobSubTypesSelected.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) + { +
  • + @jobType.Key.Description +
      + @if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) + { +
    • [All Sub Types]
    • + } + else + { + foreach (var jobSubType in jobType) + { +
    • @jobSubType.Description
    • + } + } +
    +
  • + } +
+ } + else + { + <No Filter> + } +
+ @if (canConfig) + { + Update +
+ @using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateJobSubTypes(Model.Package.Id, null, true))) + { + var selectedTypes = Model.JobSubTypesSelected.Select(jst => jst.JobType).Distinct().ToList(); + foreach (var jt in Model.JobTypes) + { +
+

+ +

+
+ @CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div") + @CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.Package.JobSubTypes), 2) +
+
+ } + } +
+ + } +
+ } +
Document Templates: + @if (Model.DocumentTemplatesSelected.Count == 0) + { +
+

+ The package has no associated Document Templates and cannot be generated. +

+
+
+ +
+ } + else + { +
    + @foreach (var template in Model.DocumentTemplatesSelected) + { +
  1. + @template.Description + @Html.ActionLink(template.Id, MVC.Config.DocumentTemplate.Index(template.Id)) +
  2. + } +
+
+

+ The package will be generated with the above Document Templates in the order they appear. +

+
+
+ +
+ } + @if (canConfig) + { +
+
+

Package Templates

+ @using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateDocumentTemplates(Model.Package.Id, redirect: true))) + { +
    + @foreach (var template in Model.DocumentTemplatesSelected) + { +
  1. + + @template.Id + @template.Description +
  2. + } +
+ } +
+
+

+ Include Document Templates by drag them from the list of Available Templates. Reorder Document Templates by dragging them within the list. +

+
+
+
+
+

Available Templates

+
    + @foreach (var template in Model.DocumentTemplates.Where(t => !t.IsHidden).Except(Model.DocumentTemplatesSelected)) + { +
  • + + @template.Id + @template.Description +
  • + } +
+
+
+ + } +
+
+ +
+

Advanced Options

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

+ This expression will be evaluated to determine if this package is shown in the Generate Document drop-down list. If the template is hidden (see above) this expression is ignored. +

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

+ This expression will be evaluated each time the package is generated. +

+
+
+
+
+
+

+ This item will be permanently deleted.
+ Are you sure? +

+
+ +
+ @if (hideAdvanced) + { + + + } + @if (canBulkGenerate) + { + Bulk Generate +
+
+ @switch (Model.Package.Scope) + { + case AttachmentTypes.Device: +
+ Enter multiple Device Serial Numbers separated by <new line>, commas (,) or semicolons (;). +
+
+

Examples:

+
+ 01234567
+ ABCD9876
+ 8VQ6G2R +
+
01234567,ABCD9876,8VQ6G2R
+
01234567;ABCD9876;8VQ6G2R
+
+ break; + case AttachmentTypes.Job: +
+ Enter multiple Job Ids separated by <new line>, commas (,) or semicolons (;). +
+
+

Examples:

+
+ 86
+ 99
+ 44 +
+
86,99,44
+
86;99;44
+
+ break; + case AttachmentTypes.User: +
+ Enter multiple User Ids separated by <new line>, commas (,) or semicolons (;). +
+
+

Examples:

+
+ user6
+ smi0099
@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith +
+
user6,smi0099,@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
+
user6;smi0099;@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
+
+ break; + } +
+ @using (Html.BeginForm(MVC.API.DocumentTemplatePackage.BulkGenerate(Model.Package.Id), FormMethod.Post)) + { +
+ +
+ +
+ } +
+ + + } + @if (Authorization.Has(Claims.Config.DocumentTemplate.Delete)) + { + @Html.ActionLinkButton("Delete", MVC.API.DocumentTemplatePackage.Delete(Model.Package.Id, true), "buttonDelete") + } +
diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/ShowPackage1.generated.cs b/Disco.Web/Areas/Config/Views/DocumentTemplate/ShowPackage1.generated.cs new file mode 100644 index 00000000..aeb3455b --- /dev/null +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/ShowPackage1.generated.cs @@ -0,0 +1,2379 @@ +#pragma warning disable 1591 +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Disco.Web.Areas.Config.Views.DocumentTemplate +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Linq; + using System.Net; + using System.Text; + using System.Web; + using System.Web.Helpers; + using System.Web.Mvc; + using System.Web.Mvc.Ajax; + using System.Web.Mvc.Html; + using System.Web.Routing; + using System.Web.Security; + using System.Web.UI; + using System.Web.WebPages; + using Disco; + using Disco.Models.Repository; + using Disco.Services; + using Disco.Services.Authorization; + + #line 2 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + using Disco.Services.Interop.ActiveDirectory; + + #line default + #line hidden + using Disco.Services.Web; + using Disco.Web; + using Disco.Web.Extensions; + + [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")] + [System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/ShowPackage.cshtml")] + public partial class ShowPackage : Disco.Services.Web.WebViewPage + { + public ShowPackage() + { + } + public override void Execute() + { + + #line 3 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + Authorization.Require(Claims.Config.DocumentTemplate.Show); + + var canConfig = Authorization.Has(Claims.Config.DocumentTemplate.Configure); + + var hideAdvanced = + Model.Package.FilterExpression == null && + Model.Package.OnGenerateExpression == null; + + #region Can Bulk Generate + var canBulkGenerate = Authorization.Has(Claims.Config.DocumentTemplate.BulkGenerate); + if (canBulkGenerate) + { + switch (Model.Package.Scope) + { + case AttachmentTypes.Device: + canBulkGenerate = Authorization.Has(Claims.Device.Actions.GenerateDocuments); + break; + case AttachmentTypes.Job: + canBulkGenerate = Authorization.Has(Claims.Job.Actions.GenerateDocuments); + break; + case AttachmentTypes.User: + canBulkGenerate = Authorization.Has(Claims.User.Actions.GenerateDocuments); + break; + default: + throw new InvalidOperationException("Invalid Package Scope"); + } + } + #endregion + + ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Package: " + Model.Package.Description); + + if (canConfig) + { + Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); + } + + + #line default + #line hidden +WriteLiteral("\r\n(hideAdvanced ? " Config_HideAdvanced" : null + + #line default + #line hidden +, 1585), false) +); + +WriteLiteral(">\r\n \r\n \r\n \r\n \r\n " + +" \r\n " + +" \r\n \r\n \r\n" + +" \r\n \r\n \r\n \r\n " + +" \r\n " + +" + + + + + + + + \r\n \r\n \r\n " + +" \r\n \r\n \r\n \r\n <" + +"/table>\r\n \r\n\r\n \r\n

Advanced Options

\r\n
\r\n Id:\r\n \r\n "); + + + #line 49 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Html.DisplayFor(model => model.Package.Id)); + + + #line default + #line hidden +WriteLiteral("\r\n
\r\n Description:\r\n " + +" \r\n"); + + + #line 57 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 57 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (canConfig) + { + + + #line default + #line hidden + + #line 59 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Html.TextBoxFor(model => model.Package.Description)); + + + #line default + #line hidden + + #line 59 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden + + #line 60 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(AjaxHelpers.AjaxSave()); + + + #line default + #line hidden + + #line 60 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden + + #line 61 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(AjaxHelpers.AjaxLoader()); + + + #line default + #line hidden + + #line 61 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden +WriteLiteral(" + $(function () { + document.DiscoFunctions.PropertyChangeHelper( + $('#Package_Description'), + 'Description', + '"); + + + #line 67 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Url.Action(MVC.API.DocumentTemplatePackage.UpdateDescription(Model.Package.Id))); + + + #line default + #line hidden +WriteLiteral("\',\r\n \'Description\'\r\n " + +" );\r\n });\r\n " + +" \r\n"); + + + #line 72 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + else + { + if (string.IsNullOrEmpty(Model.Package.Description)) + { + + + #line default + #line hidden +WriteLiteral(" <None Specified>\r\n"); + + + #line 78 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + else + { + + + #line default + #line hidden + + #line 81 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Model.Package.Description); + + + #line default + #line hidden + + #line 81 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + } + } + + + #line default + #line hidden +WriteLiteral("
\r\n  \r\n \r\n
\r\n"); + + + #line 92 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 92 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (canConfig) + { + + + #line default + #line hidden +WriteLiteral("
\r\n \r\n \r\n If selected the package will not appear in the list of documents to generate. +

+ +
+   + +
+"); + + + #line 127 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 127 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (canConfig) + { + + + #line default + #line hidden +WriteLiteral("
\r\n \r\n \r\n If selected blank pages will be inserted to ensure each of the individual documents within the package appear on separate pages when using duplex printing. +

+ +
+ Scope: + +

"); + + + #line 161 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Model.Package.Scope); + + + #line default + #line hidden +WriteLiteral(" Scope

\r\n \r\n \r\n This package is generated from "); + + + #line 164 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Model.Package.Scope); + + + #line default + #line hidden +WriteLiteral("s. Any expressions within the Document Template PDF will be evaluated w" + +"ithin the (Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser()) + + #line default + #line hidden +, 8113), false) +, Tuple.Create(Tuple.Create("", 8175), Tuple.Create("#", 8175), true) + + #line 164 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + , Tuple.Create(Tuple.Create("", 8176), Tuple.Create(Model.Package.Scope + + #line default + #line hidden +, 8176), false) +, Tuple.Create(Tuple.Create("", 8198), Tuple.Create("Scope", 8198), true) +); + +WriteLiteral(">"); + + + #line 164 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Model.Package.Scope); + + + #line default + #line hidden +WriteLiteral(" Scope.\r\n

\r\n \r\n " + +"
\r\n Change Scope\r\n
\r\n"); + + + #line 170 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 170 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (canConfig) + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 173 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 173 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateScope(Model.Package.Id, redirect: true))) + { + + + #line default + #line hidden +WriteLiteral(" \r\n Scope: \r\n \r\n"); + + + #line 178 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 178 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + foreach (var scope in Model.Scopes) + { + + + #line default + #line hidden +WriteLiteral(" (scope + + #line default + #line hidden +, 9332), false) +); + +WriteAttribute("selected", Tuple.Create(" selected=\"", 9339), Tuple.Create("\"", 9413) + + #line 180 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" +, Tuple.Create(Tuple.Create("", 9350), Tuple.Create(scope == Model.Package.Scope.ToString() ? " selected" : null + + #line default + #line hidden +, 9350), false) +); + +WriteLiteral(">"); + + + #line 180 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(scope); + + + #line default + #line hidden +WriteLiteral("\r\n"); + + + #line 181 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n"); + + + #line 184 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 185 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (Model.Package.DocumentTemplateIds != null && Model.Package.DocumentTemplateIds.Count > 0) + { + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n If changed, all Document Templates will be unassociated with this Package.\r\n" + +"

\r\n " + +"\r\n"); + + + #line 192 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + +WriteLiteral(" \r\n $(function () {\r\n " + +" var dialog;\r\n\r\n function showDialog() " + +"{\r\n if (dialog == null) {\r\n " + +" dialog = $(\'#Config_DocumentTemplatePackages_Scope" + +"_Dialog\').dialog({\r\n width: 400,\r" + +"\n resizable: false,\r\n " + +" modal: true,\r\n " + +" autoOpen: false,\r\n " + +" buttons: {\r\n \'Save Change" + +"s\': function () {\r\n dialo" + +"g.dialog(\'option\', \'buttons\', null);\r\n " + +" dialog.dialog(\'disable\');\r\n " + +" $(\'#Config_DocumentTemplatePackages_Scope_Scope\').closest(\'form" + +"\').submit();\r\n },\r\n " + +" \'Cancel\': function () {\r\n " + +" dialog.dialog(\'close\');\r\n " + +" }\r\n " + +" }\r\n });\r\n " + +" }\r\n\r\n dialog.dialo" + +"g(\'open\');\r\n\r\n return false;\r\n " + +" }\r\n\r\n $(\'#Config_Doc" + +"umentTemplatePackages_Scope_Button\').click(showDialog);\r\n " + +" });\r\n \r\n"); + + + #line 226 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 227 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (Model.Package.Scope == AttachmentTypes.Job) + { + + + #line default + #line hidden +WriteLiteral("
\r\n"); + +WriteLiteral("

Job Type Filters:

\r\n"); + +WriteLiteral(" \r\n
\r\n"); + + + #line 233 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 233 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (Model.Package.JobSubTypes != null && Model.Package.JobSubTypes.Count > 0) + { + + + #line default + #line hidden +WriteLiteral("
    \r\n"); + + + #line 236 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 236 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + foreach (var jobType in Model.JobSubTypesSelected.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) + { + + + #line default + #line hidden +WriteLiteral("
  • \r\n"); + +WriteLiteral(" "); + + + #line 239 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(jobType.Key.Description); + + + #line default + #line hidden +WriteLiteral("\r\n
      \r\n"); + + + #line 241 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 241 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) + { + + + #line default + #line hidden +WriteLiteral("
    • [All Sub Types]
    • \r\n"); + + + #line 244 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + else + { + foreach (var jobSubType in jobType) + { + + + #line default + #line hidden +WriteLiteral("
    • "); + + + #line 249 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(jobSubType.Description); + + + #line default + #line hidden +WriteLiteral("
    • \r\n"); + + + #line 250 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + } + + + #line default + #line hidden +WriteLiteral("
    \r\n " + +"
  • \r\n"); + + + #line 254 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral("
\r\n"); + + + #line 256 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + else + { + + + #line default + #line hidden +WriteLiteral(" <No Filter>\r\n"); + + + #line 260 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral("
\r\n"); + + + #line 262 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 262 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (canConfig) + { + + + #line default + #line hidden +WriteLiteral(" Update\r\n"); + +WriteLiteral(" \r\n"); + + + #line 266 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 266 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateJobSubTypes(Model.Package.Id, null, true))) + { + var selectedTypes = Model.JobSubTypesSelected.Select(jst => jst.JobType).Distinct().ToList(); + foreach (var jt in Model.JobTypes) + { + + + #line default + #line hidden +WriteLiteral(" \r\n

\r\n " + +" (jt.Id + + #line default + #line hidden +, 15282), false) +); + +WriteLiteral(" class=\"jobType\""); + +WriteLiteral(" type=\"checkbox\""); + +WriteAttribute("value", Tuple.Create(" value=\"", 15323), Tuple.Create("\"", 15339) + + #line 273 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + , Tuple.Create(Tuple.Create("", 15331), Tuple.Create(jt.Id + + #line default + #line hidden +, 15331), false) +); + +WriteLiteral(" "); + + + #line 273 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(selectedTypes.Contains(jt) ? "checked=\" checked\"" : null); + + + #line default + #line hidden +WriteLiteral(" />(jt.Id + + #line default + #line hidden +, 15423), false) +); + +WriteLiteral(">"); + + + #line 273 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(jt.Description); + + + #line default + #line hidden +WriteLiteral("\r\n

\r\n " + +" (jt.Id + + #line default + #line hidden +, 15571), false) +); + +WriteLiteral(" class=\"jobSubTypes\""); + +WriteLiteral(">\r\n"); + +WriteLiteral(" "); + + + #line 276 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div")); + + + #line default + #line hidden +WriteLiteral("\r\n"); + +WriteLiteral(" "); + + + #line 277 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.Package.JobSubTypes), 2)); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n " + +" \r\n"); + + + #line 280 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + +WriteLiteral(" \r\n"); + + + #line 345 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 347 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral("
Document Templates:\r\n"); + + + #line 353 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 353 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (Model.DocumentTemplatesSelected.Count == 0) + { + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n The package has no associated Document Templates and cannot be generated.\r\n " + +"

\r\n \r\n"); + +WriteLiteral("
\r\n Choose Document Templates\r\n
\r\n"); + + + #line 363 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + else + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 367 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 367 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + foreach (var template in Model.DocumentTemplatesSelected) + { + + + #line default + #line hidden +WriteLiteral("
  • \r\n " + +" "); + + + #line 370 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(template.Description); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 371 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Html.ActionLink(template.Id, MVC.Config.DocumentTemplate.Index(template.Id))); + + + #line default + #line hidden +WriteLiteral("\r\n
  • \r\n"); + + + #line 373 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + +WriteLiteral(" \r\n \r\n The package will be generated with the above Document Templates in the order" + +" they appear.\r\n

    \r\n " + +" \r\n"); + +WriteLiteral("
    \r\n Change Document Templates\r\n
    \r\n"); + + + #line 383 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 384 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (canConfig) + { + + + #line default + #line hidden +WriteLiteral(" \r\n
    \r\n Package Templates\r\n"); + + + #line 389 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 389 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateDocumentTemplates(Model.Package.Id, redirect: true))) + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 392 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 392 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + foreach (var template in Model.DocumentTemplatesSelected) + { + + + #line default + #line hidden +WriteLiteral("
  • \r\n " + +" (template.Id + + #line default + #line hidden +, 22961), false) +); + +WriteLiteral(" />\r\n "); + + + #line 396 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(template.Id); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 397 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(template.Description); + + + #line default + #line hidden +WriteLiteral("\r\n
  • \r\n"); + + + #line 399 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 401 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral("
    \r\n " + +" \r\n \r\n Include Document Templates by drag them from the list of Available Templates. Reorder Document Templates by dragging them within the list. +

    +
    +
    + +
    +

    Available Templates

    + \r\n"); + + + #line 413 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 413 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + foreach (var template in Model.DocumentTemplates.Where(t => !t.IsHidden).Except(Model.DocumentTemplatesSelected)) + { + + + #line default + #line hidden +WriteLiteral("
  • \r\n " + +" (template.Id + + #line default + #line hidden +, 24467), false) +); + +WriteLiteral(" />\r\n "); + + + #line 417 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(template.Id); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 418 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(template.Description); + + + #line default + #line hidden +WriteLiteral("\r\n
  • \r\n"); + + + #line 420 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n
    " + +"\r\n \r\n"); + +WriteLiteral(" \r\n $(function () {\r\n " + +" var dialog;\r\n\r\n function showDialog() " + +"{\r\n if (dialog == null) {\r\n " + +" dialog = $(\'#Config_DocumentTemplatePackages_Templ" + +"ates_Dialog\').dialog({\r\n width: 8" + +"00,\r\n resizable: false,\r\n " + +" modal: true,\r\n " + +" autoOpen: false,\r\n " + +" buttons: {\r\n \'Save Ch" + +"anges\': function () {\r\n v" + +"ar $form = dialog.find(\'form\');\r\n " + +" if ($form.find(\'input\').length > 0) {\r\n " + +" dialog.dialog(\'option\', \'buttons\', null);\r\n " + +" dialog.dialog(\'disable\');\r\n " + +" $form.submit();\r\n " + +" } else {\r\n " + +" alert(\'The package templates must inclu" + +"de at least one document template\');\r\n " + +" }\r\n },\r\n " + +" \'Cancel\': function () {\r\n " + +" dialog.dialog(\'close\');\r\n " + +" }\r\n " + +" }\r\n });\r\n\r\n " + +" dialog.find(\'.templates_connected\')\r\n " + +" .sortable({\r\n " + +" connectWith: \'.templates_connected\'\r\n " + +" })\r\n }\r\n\r\n " + +" dialog.dialog(\'open\');\r\n\r\n " + +" return false;\r\n }\r\n\r\n " + +" $(\'#Config_DocumentTemplatePackages_Templates_" + +"Button\').click(showDialog);\r\n });\r\n " + +" \r\n"); + + + #line 466 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral("
    \r\n \r\n " + +" \r\n \r\n + + + + + + +
    \r\n Filter Expres" + +"sion:\r\n \r\n"); + + + #line 482 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 482 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) + { + + + #line default + #line hidden + + #line 484 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Html.EditorFor(model => Model.Package.FilterExpression)); + + + #line default + #line hidden + + #line 484 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden + + #line 485 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(AjaxHelpers.AjaxRemove()); + + + #line default + #line hidden + + #line 485 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden + + #line 486 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(AjaxHelpers.AjaxSave()); + + + #line default + #line hidden + + #line 486 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden + + #line 487 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(AjaxHelpers.AjaxLoader()); + + + #line default + #line hidden + + #line 487 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden +WriteLiteral(" + $(function () { + var field = $('#Package_FilterExpression'); + var fieldRemove = field.next('.ajaxRemove'); + var fieldOriginalWidth, fieldOriginalHeight; + + document.DiscoFunctions.PropertyChangeHelper( + field, + 'None', + '"); + + + #line 497 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Url.Action(MVC.API.DocumentTemplatePackage.UpdateFilterExpression(Model.Package.Id))); + + + #line default + #line hidden +WriteLiteral("\',\r\n \'FilterExpression\'\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\').ani" + +"mate({ width: field.parent().width() - 42, height: 75 }, 200);\r\n " + +" }).blur(function () {\r\n " + +" field.css(\'overflow\', \'hidden\').animate({ width: fieldOriginalWidth, height: " + +"fieldOriginalHeight }, 200);\r\n }).change(func" + +"tion () {\r\n if (!!field.val()) {\r\n " + +" fieldRemove.show();\r\n " + +" } else {\r\n fieldRem" + +"ove.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 526 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + else + { + if (string.IsNullOrWhiteSpace(Model.Package.FilterExpression)) + { + + + #line default + #line hidden +WriteLiteral(" <None Specified>\r\n"); + + + #line 532 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + else + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + +WriteLiteral(" "); + + + #line 536 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Model.Package.FilterExpression); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n"); + + + #line 538 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n This expression will be evaluated to determine if this package is shown in the Generate Document drop-down list. If the template is hidden (see above) this expression is ignored. +

    + +
    + On Generated Expression: + +"); + + + #line 552 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 552 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) + { + + + #line default + #line hidden + + #line 554 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Html.EditorFor(model => Model.Package.OnGenerateExpression)); + + + #line default + #line hidden + + #line 554 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden + + #line 555 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(AjaxHelpers.AjaxRemove()); + + + #line default + #line hidden + + #line 555 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden + + #line 556 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(AjaxHelpers.AjaxSave()); + + + #line default + #line hidden + + #line 556 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden + + #line 557 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(AjaxHelpers.AjaxLoader()); + + + #line default + #line hidden + + #line 557 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden +WriteLiteral(" + $(function () { + var field = $('#Package_OnGenerateExpression'); + var fieldRemove = field.next('.ajaxRemove'); + var fieldOriginalWidth, fieldOriginalHeight; + + document.DiscoFunctions.PropertyChangeHelper( + field, + 'None', + '"); + + + #line 567 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Url.Action(MVC.API.DocumentTemplatePackage.UpdateOnGenerateExpression(Model.Package.Id))); + + + #line default + #line hidden +WriteLiteral("\',\r\n \'OnGenerateExpression\'\r\n " + +" );\r\n\r\n field.focus(fun" + +"ction () {\r\n fieldOriginalWidth = field.w" + +"idth();\r\n fieldOriginalHeight = field.hei" + +"ght();\r\n field.css(\'overflow\', \'visible\')" + +".animate({ width: field.parent().width() - 42, height: 75 }, 200);\r\n " + +" }).blur(function () {\r\n " + +" field.css(\'overflow\', \'hidden\').animate({ width: fieldOriginalWidth, heig" + +"ht: fieldOriginalHeight }, 200);\r\n }).change(" + +"function () {\r\n if (!!field.val()) {\r\n " + +" fieldRemove.show();\r\n " + +" } else {\r\n fiel" + +"dRemove.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 596 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + else + { + if (string.IsNullOrWhiteSpace(Model.Package.OnGenerateExpression)) + { + + + #line default + #line hidden +WriteLiteral(" <None Specified>\r\n"); + + + #line 602 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + else + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + +WriteLiteral(" "); + + + #line 606 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Model.Package.OnGenerateExpression); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n"); + + + #line 608 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n This expression will be evaluated each time the package is generated. +

    + +
    +
    +
    +\r\n

    \r\n This item will be permanently deleted.
    \r\n Are you sure?\r\n \r\n

    \r\n + $(function () { + var button = $('#buttonDelete'); + var buttonDialog = $(""#dialogConfirmDelete""); + var buttonLink = button.attr('href'); + button.attr('href', '#'); + button.click(function () { + buttonDialog.dialog('open'); + return false; + }); + buttonDialog.dialog({ + resizable: false, + modal: true, + autoOpen: false, + buttons: { + ""Delete"": function () { + $this = $(this); + $this.dialog('disable'); + $this.dialog(""option"", ""buttons"", null); + window.location.href = buttonLink; + }, + Cancel: function () { + $(this).dialog(""close""); + } + } + }); + + }); + +\r\n"); + + + #line 657 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 657 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (hideAdvanced) + { + + + #line default + #line hidden +WriteLiteral(" Show Advanced Options\r\n"); + +WriteLiteral(@" +"); + + + #line 668 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 669 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (canBulkGenerate) + { + + + #line default + #line hidden +WriteLiteral(" Bulk Generate\r\n"); + +WriteLiteral(" (Model.Package.Id + + #line default + #line hidden +, 37344), false) +); + +WriteLiteral(">\r\n \r\n"); + + + #line 674 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 674 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + switch (Model.Package.Scope) + { + case AttachmentTypes.Device: + + + #line default + #line hidden +WriteLiteral("
    \r\n Enter multiple Device Serial Numbers separated by <new line>, commas " + +"(,) or semicolons (;).\r\n
    " + +"\r\n"); + +WriteLiteral(" \r\n

    Examples:

    \r\n \r\n 01234567
    \r\n " + +" ABCD9876
    \r\n 8VQ6G2R\r\n " + +"
    \r\n 01234567,ABCD9876,8VQ6G2R\r\n 01234567;ABCD9876;8VQ6G2R\r\n \r\n"); + + + #line 690 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + break; + case AttachmentTypes.Job: + + + #line default + #line hidden +WriteLiteral("
    \r\n Enter multiple Job Ids separated by <new line>, commas (,) or semicolons (;).\r\n
    \r\n"); + +WriteLiteral(" \r\n

    Examples:

    \r\n \r\n 86
    \r\n 99\r\n 44\r\n \r\n " + +" 86,99,44\r\n 86;99;44\r\n \r\n"); + + + #line 705 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + break; + case AttachmentTypes.User: + + + #line default + #line hidden +WriteLiteral("
    \r\n Enter multiple User Ids separated by <new line>, commas (,) or semicolons (;).\r\n
    \r\n"); + +WriteLiteral(" \r\n

    Examples:

    \r\n \r\n user6
    \r\n s" + +"mi0099
    "); + + + #line 714 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(ActiveDirectory.Context.PrimaryDomain.NetBiosName); + + + #line default + #line hidden +WriteLiteral("\\rsmith\r\n \r\n user6,smi0099,"); + + + #line 716 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(ActiveDirectory.Context.PrimaryDomain.NetBiosName); + + + #line default + #line hidden +WriteLiteral("\\rsmith\r\n user6;smi0099;"); + + + #line 717 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(ActiveDirectory.Context.PrimaryDomain.NetBiosName); + + + #line default + #line hidden +WriteLiteral("\\rsmith\r\n \r\n"); + + + #line 719 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + break; + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 722 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + #line default + #line hidden + + #line 722 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + using (Html.BeginForm(MVC.API.DocumentTemplatePackage.BulkGenerate(Model.Package.Id), FormMethod.Post)) + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + +WriteLiteral(" \r\n"); + +WriteLiteral(" \r\n Insert Blank Pages for Double-Sided Printing\r\n \r\n"); + + + #line 729 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n"); + + + #line 731 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + + + #line default + #line hidden +WriteLiteral(@" +"); + + + #line 762 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 763 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + if (Authorization.Has(Claims.Config.DocumentTemplate.Delete)) + { + + + #line default + #line hidden + + #line 765 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + Write(Html.ActionLinkButton("Delete", MVC.API.DocumentTemplatePackage.Delete(Model.Package.Id, true), "buttonDelete")); + + + #line default + #line hidden + + #line 765 "..\..\Areas\Config\Views\DocumentTemplate\ShowPackage.cshtml" + + } + + + #line default + #line hidden +WriteLiteral("\r\n"); + + } + } +} +#pragma warning restore 1591 diff --git a/Disco.Web/ClientSource/Style/BundleSite.css b/Disco.Web/ClientSource/Style/BundleSite.css index eb440927..6e9b2146 100644 --- a/Disco.Web/ClientSource/Style/BundleSite.css +++ b/Disco.Web/ClientSource/Style/BundleSite.css @@ -4771,12 +4771,14 @@ button.button:hover { border: 1px solid #6b6b6b; background: #9e9e9e; } -ul.none { +ul.none, +ol.none { list-style: none; margin: 0; padding: 0; } -ul.none li { +ul.none li, +ol.none li { margin: 0; } div.form { diff --git a/Disco.Web/ClientSource/Style/BundleSite.min.css b/Disco.Web/ClientSource/Style/BundleSite.min.css index 6aff5fb6..40d386f1 100644 --- a/Disco.Web/ClientSource/Style/BundleSite.min.css +++ b/Disco.Web/ClientSource/Style/BundleSite.min.css @@ -9,4 +9,4 @@ html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:1 * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ -@font-face{font-family:'FontAwesome';src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?v=4.2.0');src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal;}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%;}.fa-2x{font-size:2em;}.fa-3x{font-size:3em;}.fa-4x{font-size:4em;}.fa-5x{font-size:5em;}.fa-fw{width:1.28571429em;text-align:center;}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none;}.fa-ul>li{position:relative;}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center;}.fa-li.fa-lg{left:-1.85714286em;}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em;}.pull-right{float:right;}.pull-left{float:left;}.fa.pull-left{margin-right:.3em;}.fa.pull-right{margin-left:.3em;}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear;}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1);}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1);}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none;}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle;}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center;}.fa-stack-1x{line-height:inherit;}.fa-stack-2x{font-size:2em;}.fa-inverse{color:#fff;}.fa-glass:before{content:"";}.fa-music:before{content:"";}.fa-search:before{content:"";}.fa-envelope-o:before{content:"";}.fa-heart:before{content:"";}.fa-star:before{content:"";}.fa-star-o:before{content:"";}.fa-user:before{content:"";}.fa-film:before{content:"";}.fa-th-large:before{content:"";}.fa-th:before{content:"";}.fa-th-list:before{content:"";}.fa-check:before{content:"";}.fa-remove:before,.fa-close:before,.fa-times:before{content:"";}.fa-search-plus:before{content:"";}.fa-search-minus:before{content:"";}.fa-power-off:before{content:"";}.fa-signal:before{content:"";}.fa-gear:before,.fa-cog:before{content:"";}.fa-trash-o:before{content:"";}.fa-home:before{content:"";}.fa-file-o:before{content:"";}.fa-clock-o:before{content:"";}.fa-road:before{content:"";}.fa-download:before{content:"";}.fa-arrow-circle-o-down:before{content:"";}.fa-arrow-circle-o-up:before{content:"";}.fa-inbox:before{content:"";}.fa-play-circle-o:before{content:"";}.fa-rotate-right:before,.fa-repeat:before{content:"";}.fa-refresh:before{content:"";}.fa-list-alt:before{content:"";}.fa-lock:before{content:"";}.fa-flag:before{content:"";}.fa-headphones:before{content:"";}.fa-volume-off:before{content:"";}.fa-volume-down:before{content:"";}.fa-volume-up:before{content:"";}.fa-qrcode:before{content:"";}.fa-barcode:before{content:"";}.fa-tag:before{content:"";}.fa-tags:before{content:"";}.fa-book:before{content:"";}.fa-bookmark:before{content:"";}.fa-print:before{content:"";}.fa-camera:before{content:"";}.fa-font:before{content:"";}.fa-bold:before{content:"";}.fa-italic:before{content:"";}.fa-text-height:before{content:"";}.fa-text-width:before{content:"";}.fa-align-left:before{content:"";}.fa-align-center:before{content:"";}.fa-align-right:before{content:"";}.fa-align-justify:before{content:"";}.fa-list:before{content:"";}.fa-dedent:before,.fa-outdent:before{content:"";}.fa-indent:before{content:"";}.fa-video-camera:before{content:"";}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"";}.fa-pencil:before{content:"";}.fa-map-marker:before{content:"";}.fa-adjust:before{content:"";}.fa-tint:before{content:"";}.fa-edit:before,.fa-pencil-square-o:before{content:"";}.fa-share-square-o:before{content:"";}.fa-check-square-o:before{content:"";}.fa-arrows:before{content:"";}.fa-step-backward:before{content:"";}.fa-fast-backward:before{content:"";}.fa-backward:before{content:"";}.fa-play:before{content:"";}.fa-pause:before{content:"";}.fa-stop:before{content:"";}.fa-forward:before{content:"";}.fa-fast-forward:before{content:"";}.fa-step-forward:before{content:"";}.fa-eject:before{content:"";}.fa-chevron-left:before{content:"";}.fa-chevron-right:before{content:"";}.fa-plus-circle:before{content:"";}.fa-minus-circle:before{content:"";}.fa-times-circle:before{content:"";}.fa-check-circle:before{content:"";}.fa-question-circle:before{content:"";}.fa-info-circle:before{content:"";}.fa-crosshairs:before{content:"";}.fa-times-circle-o:before{content:"";}.fa-check-circle-o:before{content:"";}.fa-ban:before{content:"";}.fa-arrow-left:before{content:"";}.fa-arrow-right:before{content:"";}.fa-arrow-up:before{content:"";}.fa-arrow-down:before{content:"";}.fa-mail-forward:before,.fa-share:before{content:"";}.fa-expand:before{content:"";}.fa-compress:before{content:"";}.fa-plus:before{content:"";}.fa-minus:before{content:"";}.fa-asterisk:before{content:"";}.fa-exclamation-circle:before{content:"";}.fa-gift:before{content:"";}.fa-leaf:before{content:"";}.fa-fire:before{content:"";}.fa-eye:before{content:"";}.fa-eye-slash:before{content:"";}.fa-warning:before,.fa-exclamation-triangle:before{content:"";}.fa-plane:before{content:"";}.fa-calendar:before{content:"";}.fa-random:before{content:"";}.fa-comment:before{content:"";}.fa-magnet:before{content:"";}.fa-chevron-up:before{content:"";}.fa-chevron-down:before{content:"";}.fa-retweet:before{content:"";}.fa-shopping-cart:before{content:"";}.fa-folder:before{content:"";}.fa-folder-open:before{content:"";}.fa-arrows-v:before{content:"";}.fa-arrows-h:before{content:"";}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"";}.fa-twitter-square:before{content:"";}.fa-facebook-square:before{content:"";}.fa-camera-retro:before{content:"";}.fa-key:before{content:"";}.fa-gears:before,.fa-cogs:before{content:"";}.fa-comments:before{content:"";}.fa-thumbs-o-up:before{content:"";}.fa-thumbs-o-down:before{content:"";}.fa-star-half:before{content:"";}.fa-heart-o:before{content:"";}.fa-sign-out:before{content:"";}.fa-linkedin-square:before{content:"";}.fa-thumb-tack:before{content:"";}.fa-external-link:before{content:"";}.fa-sign-in:before{content:"";}.fa-trophy:before{content:"";}.fa-github-square:before{content:"";}.fa-upload:before{content:"";}.fa-lemon-o:before{content:"";}.fa-phone:before{content:"";}.fa-square-o:before{content:"";}.fa-bookmark-o:before{content:"";}.fa-phone-square:before{content:"";}.fa-twitter:before{content:"";}.fa-facebook:before{content:"";}.fa-github:before{content:"";}.fa-unlock:before{content:"";}.fa-credit-card:before{content:"";}.fa-rss:before{content:"";}.fa-hdd-o:before{content:"";}.fa-bullhorn:before{content:"";}.fa-bell:before{content:"";}.fa-certificate:before{content:"";}.fa-hand-o-right:before{content:"";}.fa-hand-o-left:before{content:"";}.fa-hand-o-up:before{content:"";}.fa-hand-o-down:before{content:"";}.fa-arrow-circle-left:before{content:"";}.fa-arrow-circle-right:before{content:"";}.fa-arrow-circle-up:before{content:"";}.fa-arrow-circle-down:before{content:"";}.fa-globe:before{content:"";}.fa-wrench:before{content:"";}.fa-tasks:before{content:"";}.fa-filter:before{content:"";}.fa-briefcase:before{content:"";}.fa-arrows-alt:before{content:"";}.fa-group:before,.fa-users:before{content:"";}.fa-chain:before,.fa-link:before{content:"";}.fa-cloud:before{content:"";}.fa-flask:before{content:"";}.fa-cut:before,.fa-scissors:before{content:"";}.fa-copy:before,.fa-files-o:before{content:"";}.fa-paperclip:before{content:"";}.fa-save:before,.fa-floppy-o:before{content:"";}.fa-square:before{content:"";}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"";}.fa-list-ul:before{content:"";}.fa-list-ol:before{content:"";}.fa-strikethrough:before{content:"";}.fa-underline:before{content:"";}.fa-table:before{content:"";}.fa-magic:before{content:"";}.fa-truck:before{content:"";}.fa-pinterest:before{content:"";}.fa-pinterest-square:before{content:"";}.fa-google-plus-square:before{content:"";}.fa-google-plus:before{content:"";}.fa-money:before{content:"";}.fa-caret-down:before{content:"";}.fa-caret-up:before{content:"";}.fa-caret-left:before{content:"";}.fa-caret-right:before{content:"";}.fa-columns:before{content:"";}.fa-unsorted:before,.fa-sort:before{content:"";}.fa-sort-down:before,.fa-sort-desc:before{content:"";}.fa-sort-up:before,.fa-sort-asc:before{content:"";}.fa-envelope:before{content:"";}.fa-linkedin:before{content:"";}.fa-rotate-left:before,.fa-undo:before{content:"";}.fa-legal:before,.fa-gavel:before{content:"";}.fa-dashboard:before,.fa-tachometer:before{content:"";}.fa-comment-o:before{content:"";}.fa-comments-o:before{content:"";}.fa-flash:before,.fa-bolt:before{content:"";}.fa-sitemap:before{content:"";}.fa-umbrella:before{content:"";}.fa-paste:before,.fa-clipboard:before{content:"";}.fa-lightbulb-o:before{content:"";}.fa-exchange:before{content:"";}.fa-cloud-download:before{content:"";}.fa-cloud-upload:before{content:"";}.fa-user-md:before{content:"";}.fa-stethoscope:before{content:"";}.fa-suitcase:before{content:"";}.fa-bell-o:before{content:"";}.fa-coffee:before{content:"";}.fa-cutlery:before{content:"";}.fa-file-text-o:before{content:"";}.fa-building-o:before{content:"";}.fa-hospital-o:before{content:"";}.fa-ambulance:before{content:"";}.fa-medkit:before{content:"";}.fa-fighter-jet:before{content:"";}.fa-beer:before{content:"";}.fa-h-square:before{content:"";}.fa-plus-square:before{content:"";}.fa-angle-double-left:before{content:"";}.fa-angle-double-right:before{content:"";}.fa-angle-double-up:before{content:"";}.fa-angle-double-down:before{content:"";}.fa-angle-left:before{content:"";}.fa-angle-right:before{content:"";}.fa-angle-up:before{content:"";}.fa-angle-down:before{content:"";}.fa-desktop:before{content:"";}.fa-laptop:before{content:"";}.fa-tablet:before{content:"";}.fa-mobile-phone:before,.fa-mobile:before{content:"";}.fa-circle-o:before{content:"";}.fa-quote-left:before{content:"";}.fa-quote-right:before{content:"";}.fa-spinner:before{content:"";}.fa-circle:before{content:"";}.fa-mail-reply:before,.fa-reply:before{content:"";}.fa-github-alt:before{content:"";}.fa-folder-o:before{content:"";}.fa-folder-open-o:before{content:"";}.fa-smile-o:before{content:"";}.fa-frown-o:before{content:"";}.fa-meh-o:before{content:"";}.fa-gamepad:before{content:"";}.fa-keyboard-o:before{content:"";}.fa-flag-o:before{content:"";}.fa-flag-checkered:before{content:"";}.fa-terminal:before{content:"";}.fa-code:before{content:"";}.fa-mail-reply-all:before,.fa-reply-all:before{content:"";}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"";}.fa-location-arrow:before{content:"";}.fa-crop:before{content:"";}.fa-code-fork:before{content:"";}.fa-unlink:before,.fa-chain-broken:before{content:"";}.fa-question:before{content:"";}.fa-info:before{content:"";}.fa-exclamation:before{content:"";}.fa-superscript:before{content:"";}.fa-subscript:before{content:"";}.fa-eraser:before{content:"";}.fa-puzzle-piece:before{content:"";}.fa-microphone:before{content:"";}.fa-microphone-slash:before{content:"";}.fa-shield:before{content:"";}.fa-calendar-o:before{content:"";}.fa-fire-extinguisher:before{content:"";}.fa-rocket:before{content:"";}.fa-maxcdn:before{content:"";}.fa-chevron-circle-left:before{content:"";}.fa-chevron-circle-right:before{content:"";}.fa-chevron-circle-up:before{content:"";}.fa-chevron-circle-down:before{content:"";}.fa-html5:before{content:"";}.fa-css3:before{content:"";}.fa-anchor:before{content:"";}.fa-unlock-alt:before{content:"";}.fa-bullseye:before{content:"";}.fa-ellipsis-h:before{content:"";}.fa-ellipsis-v:before{content:"";}.fa-rss-square:before{content:"";}.fa-play-circle:before{content:"";}.fa-ticket:before{content:"";}.fa-minus-square:before{content:"";}.fa-minus-square-o:before{content:"";}.fa-level-up:before{content:"";}.fa-level-down:before{content:"";}.fa-check-square:before{content:"";}.fa-pencil-square:before{content:"";}.fa-external-link-square:before{content:"";}.fa-share-square:before{content:"";}.fa-compass:before{content:"";}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"";}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"";}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"";}.fa-euro:before,.fa-eur:before{content:"";}.fa-gbp:before{content:"";}.fa-dollar:before,.fa-usd:before{content:"";}.fa-rupee:before,.fa-inr:before{content:"";}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"";}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"";}.fa-won:before,.fa-krw:before{content:"";}.fa-bitcoin:before,.fa-btc:before{content:"";}.fa-file:before{content:"";}.fa-file-text:before{content:"";}.fa-sort-alpha-asc:before{content:"";}.fa-sort-alpha-desc:before{content:"";}.fa-sort-amount-asc:before{content:"";}.fa-sort-amount-desc:before{content:"";}.fa-sort-numeric-asc:before{content:"";}.fa-sort-numeric-desc:before{content:"";}.fa-thumbs-up:before{content:"";}.fa-thumbs-down:before{content:"";}.fa-youtube-square:before{content:"";}.fa-youtube:before{content:"";}.fa-xing:before{content:"";}.fa-xing-square:before{content:"";}.fa-youtube-play:before{content:"";}.fa-dropbox:before{content:"";}.fa-stack-overflow:before{content:"";}.fa-instagram:before{content:"";}.fa-flickr:before{content:"";}.fa-adn:before{content:"";}.fa-bitbucket:before{content:"";}.fa-bitbucket-square:before{content:"";}.fa-tumblr:before{content:"";}.fa-tumblr-square:before{content:"";}.fa-long-arrow-down:before{content:"";}.fa-long-arrow-up:before{content:"";}.fa-long-arrow-left:before{content:"";}.fa-long-arrow-right:before{content:"";}.fa-apple:before{content:"";}.fa-windows:before{content:"";}.fa-android:before{content:"";}.fa-linux:before{content:"";}.fa-dribbble:before{content:"";}.fa-skype:before{content:"";}.fa-foursquare:before{content:"";}.fa-trello:before{content:"";}.fa-female:before{content:"";}.fa-male:before{content:"";}.fa-gittip:before{content:"";}.fa-sun-o:before{content:"";}.fa-moon-o:before{content:"";}.fa-archive:before{content:"";}.fa-bug:before{content:"";}.fa-vk:before{content:"";}.fa-weibo:before{content:"";}.fa-renren:before{content:"";}.fa-pagelines:before{content:"";}.fa-stack-exchange:before{content:"";}.fa-arrow-circle-o-right:before{content:"";}.fa-arrow-circle-o-left:before{content:"";}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"";}.fa-dot-circle-o:before{content:"";}.fa-wheelchair:before{content:"";}.fa-vimeo-square:before{content:"";}.fa-turkish-lira:before,.fa-try:before{content:"";}.fa-plus-square-o:before{content:"";}.fa-space-shuttle:before{content:"";}.fa-slack:before{content:"";}.fa-envelope-square:before{content:"";}.fa-wordpress:before{content:"";}.fa-openid:before{content:"";}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"";}.fa-mortar-board:before,.fa-graduation-cap:before{content:"";}.fa-yahoo:before{content:"";}.fa-google:before{content:"";}.fa-reddit:before{content:"";}.fa-reddit-square:before{content:"";}.fa-stumbleupon-circle:before{content:"";}.fa-stumbleupon:before{content:"";}.fa-delicious:before{content:"";}.fa-digg:before{content:"";}.fa-pied-piper:before{content:"";}.fa-pied-piper-alt:before{content:"";}.fa-drupal:before{content:"";}.fa-joomla:before{content:"";}.fa-language:before{content:"";}.fa-fax:before{content:"";}.fa-building:before{content:"";}.fa-child:before{content:"";}.fa-paw:before{content:"";}.fa-spoon:before{content:"";}.fa-cube:before{content:"";}.fa-cubes:before{content:"";}.fa-behance:before{content:"";}.fa-behance-square:before{content:"";}.fa-steam:before{content:"";}.fa-steam-square:before{content:"";}.fa-recycle:before{content:"";}.fa-automobile:before,.fa-car:before{content:"";}.fa-cab:before,.fa-taxi:before{content:"";}.fa-tree:before{content:"";}.fa-spotify:before{content:"";}.fa-deviantart:before{content:"";}.fa-soundcloud:before{content:"";}.fa-database:before{content:"";}.fa-file-pdf-o:before{content:"";}.fa-file-word-o:before{content:"";}.fa-file-excel-o:before{content:"";}.fa-file-powerpoint-o:before{content:"";}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"";}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"";}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"";}.fa-file-movie-o:before,.fa-file-video-o:before{content:"";}.fa-file-code-o:before{content:"";}.fa-vine:before{content:"";}.fa-codepen:before{content:"";}.fa-jsfiddle:before{content:"";}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"";}.fa-circle-o-notch:before{content:"";}.fa-ra:before,.fa-rebel:before{content:"";}.fa-ge:before,.fa-empire:before{content:"";}.fa-git-square:before{content:"";}.fa-git:before{content:"";}.fa-hacker-news:before{content:"";}.fa-tencent-weibo:before{content:"";}.fa-qq:before{content:"";}.fa-wechat:before,.fa-weixin:before{content:"";}.fa-send:before,.fa-paper-plane:before{content:"";}.fa-send-o:before,.fa-paper-plane-o:before{content:"";}.fa-history:before{content:"";}.fa-circle-thin:before{content:"";}.fa-header:before{content:"";}.fa-paragraph:before{content:"";}.fa-sliders:before{content:"";}.fa-share-alt:before{content:"";}.fa-share-alt-square:before{content:"";}.fa-bomb:before{content:"";}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"";}.fa-tty:before{content:"";}.fa-binoculars:before{content:"";}.fa-plug:before{content:"";}.fa-slideshare:before{content:"";}.fa-twitch:before{content:"";}.fa-yelp:before{content:"";}.fa-newspaper-o:before{content:"";}.fa-wifi:before{content:"";}.fa-calculator:before{content:"";}.fa-paypal:before{content:"";}.fa-google-wallet:before{content:"";}.fa-cc-visa:before{content:"";}.fa-cc-mastercard:before{content:"";}.fa-cc-discover:before{content:"";}.fa-cc-amex:before{content:"";}.fa-cc-paypal:before{content:"";}.fa-cc-stripe:before{content:"";}.fa-bell-slash:before{content:"";}.fa-bell-slash-o:before{content:"";}.fa-trash:before{content:"";}.fa-copyright:before{content:"";}.fa-at:before{content:"";}.fa-eyedropper:before{content:"";}.fa-paint-brush:before{content:"";}.fa-birthday-cake:before{content:"";}.fa-area-chart:before{content:"";}.fa-pie-chart:before{content:"";}.fa-line-chart:before{content:"";}.fa-lastfm:before{content:"";}.fa-lastfm-square:before{content:"";}.fa-toggle-off:before{content:"";}.fa-toggle-on:before{content:"";}.fa-bicycle:before{content:"";}.fa-bus:before{content:"";}.fa-ioxhost:before{content:"";}.fa-angellist:before{content:"";}.fa-cc:before{content:"";}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"";}.fa-meanpath:before{content:"";}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333;}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px;}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto;}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px;}header #heading,#header #heading{float:left;height:34px;}header #heading i,#header #heading i{display:block;height:34px;width:34px;background-image:url(data:image/png;base64,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);}header nav,#header nav{float:left;height:34px;padding:0;margin:0;}header nav ul#menu,#header nav ul#menu{height:26px;padding:0;margin:8px 0 0 4px;list-style:none;z-index:100000;font-size:0;line-height:0;}header nav ul#menu>li,#header nav ul#menu>li{display:inline-block;z-index:100000;font-size:13.2px;line-height:19.2px;}header nav ul#menu>li.moveRight,#header nav ul#menu>li.moveRight{margin-left:20px;}header nav ul#menu>li>a,#header nav ul#menu>li>a{display:inline-block;padding:2px 10px 4px 10px;height:20px;color:#fff;font-weight:400;text-transform:uppercase;text-decoration:none;}header nav ul#menu>li>a:active,#header nav ul#menu>li>a:active{text-decoration:none;}header nav ul#menu>li.active>a,#header nav ul#menu>li.active>a{background-color:#222;}header nav ul#menu>li:hover>a,#header nav ul#menu>li:hover>a{background-color:#111;text-decoration:none;}header nav ul#menu>li>ul,#header nav ul#menu>li>ul{z-index:100000;display:none;list-style:none;position:absolute;margin:0;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;background-color:#f2f2f2;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5);}header nav ul#menu>li>ul li,#header nav ul#menu>li>ul li{position:relative;background-position:top;background-repeat:repeat-x;border-top:1px solid #e6e6e6;}header nav ul#menu>li>ul li:first-child,#header nav ul#menu>li>ul li:first-child{border-top:1px solid #d1d1d1;}header nav ul#menu>li>ul li:last-child,#header nav ul#menu>li>ul li:last-child{border-bottom:1px solid #d1d1d1;}header nav ul#menu>li>ul li:hover,#header nav ul#menu>li>ul li:hover{border-top:1px solid #d9d9d9;background-color:#e6e6e6;}header nav ul#menu>li>ul li a,#header nav ul#menu>li>ul li a{display:block;color:#000;padding:4px 8px;text-decoration:none;}header nav ul#menu>li>ul li a:hover,#header nav ul#menu>li>ul li a:hover{color:#335a87;text-decoration:none;}header nav ul#menu>li>ul li a:active,#header nav ul#menu>li>ul li a:active{text-decoration:none;}header nav ul#menu>li>ul li i.fa-caret-right,#header nav ul#menu>li>ul li i.fa-caret-right{cursor:pointer;color:#666;font-size:16px;position:absolute;display:block;right:12px;top:7px;}header nav ul#menu>li>ul li:hover i.fa-caret-right,#header nav ul#menu>li>ul li:hover i.fa-caret-right{color:#333;}header nav ul#menu>li>ul ul,#header nav ul#menu>li>ul ul{display:none;list-style:none;position:absolute;top:-1px;left:180px;background-color:#f2f2f2;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5);}header #headerMenu,#header #headerMenu{float:right;height:24px;padding:5px 8px;font-size:.9em;line-height:24px;text-align:right;color:#fff;}header #headerMenu a,#header #headerMenu a{color:#fff;text-decoration:none;}header #headerMenu a:hover,#header #headerMenu a:hover{color:#cddbec;text-decoration:none;}header #SearchQuery,#header #SearchQuery{font-size:.9em;margin-left:6px;width:130px;background-color:#eee;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s;}header #SearchQuery:hover,#header #SearchQuery:hover,header #SearchQuery:focus,#header #SearchQuery:focus{background-color:#fff;width:190px;}header .watermark,#header .watermark{background-color:#888;}#QuickSearchMenu{max-height:400px;font-size:.9em;background:none;background-color:#fafafa;}#QuickSearchMenu li:not(:last-child){border-bottom:1px solid #d8d8d8;}#QuickSearchMenu li>a{padding:2px;}#QuickSearchMenu li>a>i{margin-right:2px;}#QuickSearchMenu li>a>div{padding-left:1.2857142857142858em;margin-left:2px;}#layout_PageHeading{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) left top repeat-x #fff;background:linear-gradient(to bottom,#f2f2f2 0,#fff 50px) #fff;height:50px;padding:6px 20px 4px 20px;font-size:2em;color:#000;line-height:50px;position:relative;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;}#layout_PageHeading a{text-decoration:none;}#layout_PageHeading>a.button{position:absolute;right:30px;bottom:8px;font-size:.5em;line-height:1em;text-align:right;}#layout_Page{background-color:#fff;overflow:auto;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;padding:0 30px 15px 30px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}#layout_Error{min-height:200px;}#layout_Error table{background-color:#fff;}#layout_Error h1,#layout_Error h2,#layout_Error h3,#layout_Error h4,#layout_Error h5{color:#fff;white-space:pre-wrap;}#layout_Error h2.error{margin-bottom:10px;}#layout_Error .stacktrace{white-space:pre;overflow:auto;}#layout_Error>div{margin:0 auto;width:650px;}#layout_uiExtensions{display:none;}footer,#footer{color:#777;padding:10px 0;text-align:center;margin:0;font-size:.9em;}footer a:link,#footer a:link,footer a:visited,#footer a:visited,footer a:active,#footer a:active{color:#777;}footer a:link,#footer a:link,footer a:active,#footer a:active{text-decoration:underline;}footer a:hover,#footer a:hover{color:#5e8cc2;text-decoration:none;}p{margin:0 0 2px 0;line-height:1.6em;}ul{margin:0;padding:0 0 0 25px;list-style:square;line-height:1.6em;}header,footer,nav,section{display:block;}form{display:inline;}img{border:none;padding:0;margin:0;vertical-align:bottom;}code{font-family:Consolas,"Courier New",monospace;}hr{border:none;border-bottom:1px dashed #aaa;margin-top:15px;}strong{font-weight:600;}a:link{color:#335a87;text-decoration:none;}a:visited{color:#335a87;}a:hover{color:#5e8cc2;text-decoration:underline;}a:active{color:#335a87;}a[disabled]{color:#6b6b6b;text-decoration:none;cursor:default;}a.button{display:inline-block;padding:4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer;white-space:nowrap;text-decoration:none;}a.button[disabled],a.button.disabled{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default;}a.button.alert{border-color:#900;background-color:#e51400;}a.button.small{padding:2px 5px;font-size:.9em;}a.button:hover{border:1px solid #6b6b6b;background:#9e9e9e;}a.button i{margin-right:10px;}div.actionBar{margin:0 -30px 0 -30px;padding:10px;border-top:1px solid #d1d1d1;text-align:right;background-color:#f2f2f2;clear:both;}div.actionBar:not(:first-child){margin-top:10px;}div.actionBar:last-child{margin-bottom:-15px;-moz-border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}h1,h2,h3,h4,h5,h6{color:#000;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-weight:lighter;font-stretch:condensed;margin:0;}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0 !important;padding-top:0 !important;}h1>a:link,h2>a:link,h3>a:link,h4>a:link,h5>a:link,h6>a:link{text-decoration:none;}h1{font-size:24px;}h2{font-size:20px;padding:8px 0 4px 0;}h3{font-size:18px;}h4{font-size:14px;}h5,h6{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-stretch:normal;font-weight:600;}table{border:none;border-collapse:collapse;width:100%;}table td{padding:5px;margin:0;border:none;vertical-align:top;}table th{padding:5px;margin:0;text-align:left;font-weight:600;vertical-align:top;}table.none{border:none !important;}table.none tr,table.none td,table.none th{padding:0 !important;margin:0 !important;background:none !important;border:none !important;}table.genericData{border:solid 1px #f4f4f4;border-collapse:collapse;}table.genericData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}table.genericData>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}table.genericData>thead>tr>th,table.genericData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}table.genericData>tbody>tr:hover>td{background-color:#f9f9f9;}table.genericData>tfoot>tr>th,table.genericData>tfoot>tr>td{background-color:#f4f4f4;}table.genericData td.id{text-align:center;}table.genericData td.id a{padding:0 6px;}.smallTable th,.smallTable td{font-size:.9em;}.dataTables_wrapper{position:relative;}.dataTables_wrapper .dataTables_filter{position:absolute;height:20px;margin-top:-20px;right:0;font-size:.9em;-moz-opacity:.3;opacity:.3;}.dataTables_wrapper .dataTables_filter input{font-size:.95em;padding:0;height:1.4em;width:150px;}.dataTables_wrapper .dataTables_length{position:absolute;height:20px;margin-top:-20px;right:200px;font-size:.9em;-moz-opacity:.3;opacity:.3;}.dataTables_wrapper .dataTables_length select{font-size:.95em;padding:0;height:1.4em;}.dataTables_wrapper .dataTables_paginate{text-align:right;background-color:#f4f4f4;padding:2px 4px;font-size:.9em;}.dataTables_wrapper .dataTables_paginate a{cursor:pointer;padding:2px;margin:0 3px;color:#335a87;background-repeat:no-repeat;-moz-opacity:.3;opacity:.3;text-transform:uppercase;}.dataTables_wrapper .dataTables_paginate .first{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQALGUe0SQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAAYqTAY6Jng6AAAAAElFTkSuQmCC);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .first.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQAKxsbESQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAEm8TIFT3+fIAAAAAElFTkSuQmCC);}.dataTables_wrapper .dataTables_paginate .previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .previous.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .next.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .last{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12Mwjmr/D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAABJ/EwGJKVDGAAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .last.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12OIjY39D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAACQykyB48rZCQAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .paginate_active{font-weight:600;color:#1e6dab;}.dataTables_wrapper .dataTables_paginate .paginate_button_disabled{color:#ccc;cursor:default;}.dataTables_wrapper .dataTables_paginate .paginate_enabled_previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .paginate_disabled_previous{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .paginate_enabled_next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .paginate_disabled_next{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper:hover .dataTables_filter,.dataTables_wrapper:hover .dataTables_length,.dataTables_wrapper:hover .dataTables_paginate a{-moz-opacity:1;opacity:1;}.dataTables_wrapper table>thead tr>th{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAD6CAYAAACoLMeFAAAAdElEQVRo3u3bOwqAMBAFwBwjh/CUluKRhfVTiil0UYjMwJLqLfmUYUuBtw3jUreKfc2E43aTi/C9Jo3wUR4WAAAAAAAAejBPc90q9jUTjkdNTuGjPj9/bgfpO0i/AgAAAAAAAPQnPZ6YHpBsNEnNefrt4+9Wmn6nW/cZ1MQAAAAASUVORK5CYII=);background-repeat:no-repeat;}.dataTables_wrapper table>thead tr>th.sorting{background-position:right center;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_desc{background-position:right bottom;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_asc{background-position:right top;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_disabled{background-image:none;}table.userTable div.flags{display:inline-block;float:right;}table.userTable div.flags>i{cursor:default;}table.userTable div.flags>i>.details{display:none;}.jobStatus{color:#333;}.jobStatus.Closed{color:#9e9e9e;}.jobStatus.Open{color:#60a917;}.jobStatus.AwaitingWarrantyRepair,.jobStatus.AwaitingRepairs{color:#1e6dab;}.jobStatus.AwaitingDeviceReturn,.jobStatus.AwaitingUserAction,.jobStatus.AwaitingAccountingPayment,.jobStatus.AwaitingAccountingCharge{color:#f0a30a;}.jobStatus.AwaitingInsuranceProcessing{color:#6a00ff;}.deviceStatus{color:#333;}.deviceStatus.Decommissioned{color:#9e9e9e;}.deviceStatus.Active{color:#60a917;}.deviceStatus.NotEnrolled{color:#f0a30a;}table.jobTable{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed;}table.jobTable>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}table.jobTable>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}table.jobTable>thead>tr>th,table.jobTable>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}table.jobTable>tbody>tr:hover>td{background-color:#f9f9f9;}table.jobTable>tfoot>tr>th,table.jobTable>tfoot>tr>td{background-color:#f4f4f4;}table.jobTable td{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;}table.jobTable.hideStatusClosed tr[data-status=Closed]{display:none;}table.jobTable td.id,table.jobTable th.id{width:50px;text-align:center;}table.jobTable td.id a,table.jobTable th.id a{padding:0 6px;}table.jobTable tr.statusSlaWarning td{background-color:#fdeed1;}table.jobTable tr.statusSlaWarning td:not(:last-child){border-right:1px solid #f8e9cb;}table.jobTable tr.statusSlaExpired td{background-color:#ffd7d3;}table.jobTable tr.statusSlaExpired td:not(:last-child){border-right:1px solid #fad2ce;}table.jobTable tr:nth-child(odd).statusSlaWarning td{background-color:#fbeccf !important;}table.jobTable tr:nth-child(odd).statusSlaExpired td{background-color:#fdd5d1 !important;}table.jobTable tr:hover.statusSlaWarning td{background-color:#fbeaca !important;}table.jobTable tr:hover.statusSlaExpired td{background-color:#fdd1cd !important;}table.jobTable div.queues{display:inline-block;float:right;}table.jobTable td.lastActive,table.jobTable th.lastActive{width:130px;}table.jobTable td.dates,table.jobTable th.dates{width:130px;}table.jobTable td.type,table.jobTable th.type{width:50px;}table.jobTable td.device,table.jobTable th.device{width:110px;}table.jobTable td.user,table.jobTable th.user{width:240px;}table.jobTable td.technician,table.jobTable th.technician{width:80px;}table.jobTable td.location,table.jobTable th.location{width:200px;}div.jobTable>a.dataTables_showStatusClosed{margin:10px 5px;}div.jobTable>h3,div.jobTable>div.allClosed_container{margin:50px 20px !important;}div.jobTable>h3 a.button,div.jobTable>div.allClosed_container a.button{margin-top:10px;}table.deviceTable tr.decommissioned{background-color:#ededed;}textarea{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;min-height:75px;padding:2px;color:#444;width:200px;}input[type="text"],input[type="password"],input[type="file"],input[type="number"]{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;padding:2px;color:#444;width:200px;}input[type="text"].small,input[type="password"].small,input[type="file"].small,input[type="number"].small{padding:0 2px;width:150px;}input[type="text"].discreet,input[type="password"].discreet,input[type="file"].discreet,input[type="number"].discreet{border:1px solid #fff;}input[type="text"].discreet:hover,input[type="password"].discreet:hover,input[type="file"].discreet:hover,input[type="number"].discreet:hover,input[type="text"].discreet:focus,input[type="password"].discreet:focus,input[type="file"].discreet:focus,input[type="number"].discreet:focus{border:1px solid #ccc;}input[type="checkbox"],input[type="radio"]{margin-right:4px;vertical-align:sub;}select{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:12px;border:1px solid #ccc;padding:2px;color:#444;}select.small{padding:0;}input[type="submit"],button{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;padding:5px;}input[type="submit"].button,button.button{font-size:12px;padding:4px 10px 4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer;}input[type="submit"].button.alert,button.button.alert{border-color:#900;background-color:#e51400;}input[type="submit"].button.small,button.button.small{padding:2px 5px;font-size:.9em;}input[type="submit"].button[disabled],button.button[disabled]{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default;}input[type="submit"].button:hover,button.button:hover{border:1px solid #6b6b6b;background:#9e9e9e;}ul.none{list-style:none;margin:0;padding:0;}ul.none li{margin:0;}div.form{margin:0 auto;}div.form>p.actions{text-align:right;}div.form>table{border-top:6px solid #1e6dab;border-left:1px solid #1e6dab;border-right:1px solid #1e6dab;border-bottom:3px solid #1e6dab;background-color:#fff;}div.form>table>tbody>tr>td,div.form>table>tbody>tr>th{background:none;border:none;margin:0;padding:8px 5px;}div.form>table>tbody>tr>th{font-weight:normal;text-align:right;}div.form>table>tbody>tr:nth-child(odd){background-color:#f2f2f2;margin:0;padding:0;}div.form>table>tbody>tr>td.details{padding:0;}div.form>table>tbody>tr>th.name{width:150px;text-align:right;}div.form>table table.sub>tbody>tr:not(:first-child)>th,div.form>table table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa;}div.form>table table.sub>tbody>tr>th{font-weight:normal;text-align:right;}div.form>table table.sub>tbody>tr>th.name{text-align:right;}#pageMenu td{border-right:1px dashed #aaa;width:33%;padding:10px;}#pageMenu td .pageMenuArea>.fa{font-size:1.3em;color:#6b6b6b;margin-right:4px;}#pageMenu td .pageMenuArea>a,#pageMenu td .pageMenuArea>h3{text-decoration:none;font-size:1.2em;}#pageMenu td .pageMenuArea .pageMenuBlurb{font-size:.9em;color:#888;margin-bottom:10px;}#pageMenu td .pageMenuArea .pageMenuBlurb a{text-decoration:none;}#pageMenu td .pageMenuArea:not(:last-child){border-bottom:1px dashed #aaa;}#pageMenu td .pageMenuArea.noSeperator{border-bottom:none;}#pageMenu td:first-child{padding-left:0;}#pageMenu td:last-child{border-right:none;padding-right:0;}div.info-box{margin:.4em 0;padding:.4em;border:1px solid #fff397;background-color:#fffef7;}div.info-box i{color:#1e6dab;}div.info-box.alert{border:1px solid #fa6800;background-color:#fff9f5;color:#333;}div.info-box.alert i{color:#fa6800;}div.info-box.error{border:1px solid #e51400;background-color:#fffaf9;color:#e51400;}div.info-box.error i{color:#e51400;}div.info-box p{line-height:1.2em;}p.fa-p{text-indent:-1.48em;margin-left:1.48em;}p.fa-p>i:first-child{text-indent:0;width:1.28em;margin-right:.2em;}div.Disco-AttachmentUpload-DropTarget{display:none;}div.Disco-AttachmentUpload-DropTarget.dragHighlight{display:block;position:absolute;z-index:1000;top:0;left:0;width:calc(100% - 6px);height:calc(100% - 6px);background-color:rgba(251,218,152,.5);border:3px dashed #f0a30a;}div.Disco-AttachmentUpload-DropTarget.dragHighlight h2{margin-top:3em !important;color:#2c1e02;text-align:center;font-weight:600;}div.Disco-AttachmentUpload-DropTarget.dragHighlight.dragHover{background-color:rgba(173,235,110,.5);border:3px dashed #60a917;}div.Disco-AttachmentUpload-DropTarget.dragHighlight.dragHover h2{color:#000;}div.Disco-AttachmentUpload-Progress{position:absolute;right:0;bottom:48px;}div.Disco-AttachmentUpload-Progress>div{background-color:#fafafa;padding:4px 8px;}div.Disco-AttachmentUpload-Progress>div i{color:#1e6dab;margin-right:4px;}div.Disco-AttachmentUpload-CommentDialog{padding:.25em .5em !important;}div.Disco-AttachmentUpload-CommentDialog table{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}div.Disco-AttachmentUpload-CommentDialog table>thead>tr>th,div.Disco-AttachmentUpload-CommentDialog table>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr:hover>td{background-color:#f9f9f9;}div.Disco-AttachmentUpload-CommentDialog table>tfoot>tr>th,div.Disco-AttachmentUpload-CommentDialog table>tfoot>tr>td{background-color:#f4f4f4;}div.Disco-AttachmentUpload-CommentDialog table th{width:80px;}div.Disco-AttachmentUpload-CommentDialog table td.filename{font-family:Consolas,"Courier New",monospace;white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;}div.Disco-AttachmentUpload-CommentDialog table input.comments{width:calc(100% - 5px);}div.Disco-AttachmentUpload-CommentDialog table td.thumbnail{display:none;text-align:center;}div.Disco-AttachmentUpload-CommentDialog table td.thumbnail img{border:1px solid #9e9e9e;max-height:250px;max-width:374px;}div.Disco-AttachmentUpload-ImageDialog{background-color:#000 !important;padding:0 !important;overflow:hidden !important;width:720px !important;height:540px !important;}body>.User_FlagAssignment_Tooltip span.name{display:block;font-weight:600;}body>.User_FlagAssignment_Tooltip span.comments{display:block;padding:2px 0 2px 4px;}body>.User_FlagAssignment_Tooltip span.added{font-style:italic;font-size:.9em;}.d-priority-high{color:#fa6800;width:1.2857142857142858em;text-align:center;}.d-priority-high:before{content:"";}.d-priority-normal{color:#60a917;width:1.2857142857142858em;text-align:center;}.d-priority-normal:before{content:"";}.d-priority-low{color:#1e6dab;width:1.2857142857142858em;text-align:center;}.d-priority-low:before{content:"";}.fa-stack .d-priority-high,.fa-stack .d-priority-normal,.fa-stack .d-priority-low{width:100%;font-size:.8em;margin-left:.5em;margin-top:.4em;opacity:.6;}.d-lime{color:#a4c400;}.d-green{color:#60a917;}.d-emerald{color:#008a00;}.d-teal{color:#00aba9;}.d-cyan{color:#1ba1e2;}.d-cobalt{color:#0050ef;}.d-indigo{color:#6a00ff;}.d-violet{color:#a0f;}.d-pink{color:#f472d0;}.d-magenta{color:#d80073;}.d-crimson{color:#a20025;}.d-red{color:#e51400;}.d-orange{color:#fa6800;}.d-amber{color:#f0a30a;}.d-yellow{color:#e3c800;}.d-brown{color:#825a2c;}.d-olive{color:#6d8764;}.d-steel{color:#647689;}.d-mauve{color:#76608a;}.d-sienna{color:#a0522d;}table.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}td.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.field-validation-error{color:#e51400 !important;}.field-validation-valid{display:none;}.input-validation-error{border:1px solid #e51400 !important;background-color:#fff7f7 !important;}.validation-summary-errors{font-weight:bold !important;color:#e51400 !important;}.validation-summary-valid{display:none;}.ajaxLoading{height:11px;width:16px;display:inline-block;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);margin-bottom:0;}.ajaxOk{color:#60a917;}.ajaxSave{color:#1e6dab;cursor:pointer;}.ajaxRemove{color:#e51400;cursor:pointer;opacity:.8;}.ajaxRemove:hover{opacity:1;}#layout_Page div.hiddenDialog{display:none;}* html .clearfix{height:1%;overflow:visible;}*+html .clearfix{min-height:1%;}.clearfix:after{clear:both;content:".";display:block;height:0;visibility:hidden;font-size:0;}div.columnHost .column50{float:left;width:50%;}.hidden{display:none;}.success{color:#60a917;}.information{color:#1e6dab;}.warning{color:#f0a30a;}.error{color:#e51400;}.alert{color:#fa6800;}.smallText{font-size:.9em;}.smallMessage{font-style:italic;color:#666;font-size:.9em;}.nowrap{white-space:nowrap;}.code{font-family:Consolas,"Courier New",monospace;}div.code{border:1px dashed #bbb;background-color:#fff;margin:3px 6px;padding:4px;font-size:.9em;}a.smallLink{font-size:.9em;}textarea.block{width:250px;height:100px;}.checkboxBulkSelectContainer{margin-top:6px;font-size:.8em;}.checkboxBulkSelectContainer a{text-decoration:none;}.ui-widget .checkboxBulkSelectContainer{font-size:1em;}#licence{text-align:justify;}#licence p{font-size:.9em;line-height:1.6em;margin-bottom:1em;}#licence li{font-size:.9em;} \ No newline at end of file +@font-face{font-family:'FontAwesome';src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?v=4.2.0');src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal;}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%;}.fa-2x{font-size:2em;}.fa-3x{font-size:3em;}.fa-4x{font-size:4em;}.fa-5x{font-size:5em;}.fa-fw{width:1.28571429em;text-align:center;}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none;}.fa-ul>li{position:relative;}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center;}.fa-li.fa-lg{left:-1.85714286em;}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em;}.pull-right{float:right;}.pull-left{float:left;}.fa.pull-left{margin-right:.3em;}.fa.pull-right{margin-left:.3em;}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear;}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1);}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1);}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none;}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle;}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center;}.fa-stack-1x{line-height:inherit;}.fa-stack-2x{font-size:2em;}.fa-inverse{color:#fff;}.fa-glass:before{content:"";}.fa-music:before{content:"";}.fa-search:before{content:"";}.fa-envelope-o:before{content:"";}.fa-heart:before{content:"";}.fa-star:before{content:"";}.fa-star-o:before{content:"";}.fa-user:before{content:"";}.fa-film:before{content:"";}.fa-th-large:before{content:"";}.fa-th:before{content:"";}.fa-th-list:before{content:"";}.fa-check:before{content:"";}.fa-remove:before,.fa-close:before,.fa-times:before{content:"";}.fa-search-plus:before{content:"";}.fa-search-minus:before{content:"";}.fa-power-off:before{content:"";}.fa-signal:before{content:"";}.fa-gear:before,.fa-cog:before{content:"";}.fa-trash-o:before{content:"";}.fa-home:before{content:"";}.fa-file-o:before{content:"";}.fa-clock-o:before{content:"";}.fa-road:before{content:"";}.fa-download:before{content:"";}.fa-arrow-circle-o-down:before{content:"";}.fa-arrow-circle-o-up:before{content:"";}.fa-inbox:before{content:"";}.fa-play-circle-o:before{content:"";}.fa-rotate-right:before,.fa-repeat:before{content:"";}.fa-refresh:before{content:"";}.fa-list-alt:before{content:"";}.fa-lock:before{content:"";}.fa-flag:before{content:"";}.fa-headphones:before{content:"";}.fa-volume-off:before{content:"";}.fa-volume-down:before{content:"";}.fa-volume-up:before{content:"";}.fa-qrcode:before{content:"";}.fa-barcode:before{content:"";}.fa-tag:before{content:"";}.fa-tags:before{content:"";}.fa-book:before{content:"";}.fa-bookmark:before{content:"";}.fa-print:before{content:"";}.fa-camera:before{content:"";}.fa-font:before{content:"";}.fa-bold:before{content:"";}.fa-italic:before{content:"";}.fa-text-height:before{content:"";}.fa-text-width:before{content:"";}.fa-align-left:before{content:"";}.fa-align-center:before{content:"";}.fa-align-right:before{content:"";}.fa-align-justify:before{content:"";}.fa-list:before{content:"";}.fa-dedent:before,.fa-outdent:before{content:"";}.fa-indent:before{content:"";}.fa-video-camera:before{content:"";}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"";}.fa-pencil:before{content:"";}.fa-map-marker:before{content:"";}.fa-adjust:before{content:"";}.fa-tint:before{content:"";}.fa-edit:before,.fa-pencil-square-o:before{content:"";}.fa-share-square-o:before{content:"";}.fa-check-square-o:before{content:"";}.fa-arrows:before{content:"";}.fa-step-backward:before{content:"";}.fa-fast-backward:before{content:"";}.fa-backward:before{content:"";}.fa-play:before{content:"";}.fa-pause:before{content:"";}.fa-stop:before{content:"";}.fa-forward:before{content:"";}.fa-fast-forward:before{content:"";}.fa-step-forward:before{content:"";}.fa-eject:before{content:"";}.fa-chevron-left:before{content:"";}.fa-chevron-right:before{content:"";}.fa-plus-circle:before{content:"";}.fa-minus-circle:before{content:"";}.fa-times-circle:before{content:"";}.fa-check-circle:before{content:"";}.fa-question-circle:before{content:"";}.fa-info-circle:before{content:"";}.fa-crosshairs:before{content:"";}.fa-times-circle-o:before{content:"";}.fa-check-circle-o:before{content:"";}.fa-ban:before{content:"";}.fa-arrow-left:before{content:"";}.fa-arrow-right:before{content:"";}.fa-arrow-up:before{content:"";}.fa-arrow-down:before{content:"";}.fa-mail-forward:before,.fa-share:before{content:"";}.fa-expand:before{content:"";}.fa-compress:before{content:"";}.fa-plus:before{content:"";}.fa-minus:before{content:"";}.fa-asterisk:before{content:"";}.fa-exclamation-circle:before{content:"";}.fa-gift:before{content:"";}.fa-leaf:before{content:"";}.fa-fire:before{content:"";}.fa-eye:before{content:"";}.fa-eye-slash:before{content:"";}.fa-warning:before,.fa-exclamation-triangle:before{content:"";}.fa-plane:before{content:"";}.fa-calendar:before{content:"";}.fa-random:before{content:"";}.fa-comment:before{content:"";}.fa-magnet:before{content:"";}.fa-chevron-up:before{content:"";}.fa-chevron-down:before{content:"";}.fa-retweet:before{content:"";}.fa-shopping-cart:before{content:"";}.fa-folder:before{content:"";}.fa-folder-open:before{content:"";}.fa-arrows-v:before{content:"";}.fa-arrows-h:before{content:"";}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"";}.fa-twitter-square:before{content:"";}.fa-facebook-square:before{content:"";}.fa-camera-retro:before{content:"";}.fa-key:before{content:"";}.fa-gears:before,.fa-cogs:before{content:"";}.fa-comments:before{content:"";}.fa-thumbs-o-up:before{content:"";}.fa-thumbs-o-down:before{content:"";}.fa-star-half:before{content:"";}.fa-heart-o:before{content:"";}.fa-sign-out:before{content:"";}.fa-linkedin-square:before{content:"";}.fa-thumb-tack:before{content:"";}.fa-external-link:before{content:"";}.fa-sign-in:before{content:"";}.fa-trophy:before{content:"";}.fa-github-square:before{content:"";}.fa-upload:before{content:"";}.fa-lemon-o:before{content:"";}.fa-phone:before{content:"";}.fa-square-o:before{content:"";}.fa-bookmark-o:before{content:"";}.fa-phone-square:before{content:"";}.fa-twitter:before{content:"";}.fa-facebook:before{content:"";}.fa-github:before{content:"";}.fa-unlock:before{content:"";}.fa-credit-card:before{content:"";}.fa-rss:before{content:"";}.fa-hdd-o:before{content:"";}.fa-bullhorn:before{content:"";}.fa-bell:before{content:"";}.fa-certificate:before{content:"";}.fa-hand-o-right:before{content:"";}.fa-hand-o-left:before{content:"";}.fa-hand-o-up:before{content:"";}.fa-hand-o-down:before{content:"";}.fa-arrow-circle-left:before{content:"";}.fa-arrow-circle-right:before{content:"";}.fa-arrow-circle-up:before{content:"";}.fa-arrow-circle-down:before{content:"";}.fa-globe:before{content:"";}.fa-wrench:before{content:"";}.fa-tasks:before{content:"";}.fa-filter:before{content:"";}.fa-briefcase:before{content:"";}.fa-arrows-alt:before{content:"";}.fa-group:before,.fa-users:before{content:"";}.fa-chain:before,.fa-link:before{content:"";}.fa-cloud:before{content:"";}.fa-flask:before{content:"";}.fa-cut:before,.fa-scissors:before{content:"";}.fa-copy:before,.fa-files-o:before{content:"";}.fa-paperclip:before{content:"";}.fa-save:before,.fa-floppy-o:before{content:"";}.fa-square:before{content:"";}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"";}.fa-list-ul:before{content:"";}.fa-list-ol:before{content:"";}.fa-strikethrough:before{content:"";}.fa-underline:before{content:"";}.fa-table:before{content:"";}.fa-magic:before{content:"";}.fa-truck:before{content:"";}.fa-pinterest:before{content:"";}.fa-pinterest-square:before{content:"";}.fa-google-plus-square:before{content:"";}.fa-google-plus:before{content:"";}.fa-money:before{content:"";}.fa-caret-down:before{content:"";}.fa-caret-up:before{content:"";}.fa-caret-left:before{content:"";}.fa-caret-right:before{content:"";}.fa-columns:before{content:"";}.fa-unsorted:before,.fa-sort:before{content:"";}.fa-sort-down:before,.fa-sort-desc:before{content:"";}.fa-sort-up:before,.fa-sort-asc:before{content:"";}.fa-envelope:before{content:"";}.fa-linkedin:before{content:"";}.fa-rotate-left:before,.fa-undo:before{content:"";}.fa-legal:before,.fa-gavel:before{content:"";}.fa-dashboard:before,.fa-tachometer:before{content:"";}.fa-comment-o:before{content:"";}.fa-comments-o:before{content:"";}.fa-flash:before,.fa-bolt:before{content:"";}.fa-sitemap:before{content:"";}.fa-umbrella:before{content:"";}.fa-paste:before,.fa-clipboard:before{content:"";}.fa-lightbulb-o:before{content:"";}.fa-exchange:before{content:"";}.fa-cloud-download:before{content:"";}.fa-cloud-upload:before{content:"";}.fa-user-md:before{content:"";}.fa-stethoscope:before{content:"";}.fa-suitcase:before{content:"";}.fa-bell-o:before{content:"";}.fa-coffee:before{content:"";}.fa-cutlery:before{content:"";}.fa-file-text-o:before{content:"";}.fa-building-o:before{content:"";}.fa-hospital-o:before{content:"";}.fa-ambulance:before{content:"";}.fa-medkit:before{content:"";}.fa-fighter-jet:before{content:"";}.fa-beer:before{content:"";}.fa-h-square:before{content:"";}.fa-plus-square:before{content:"";}.fa-angle-double-left:before{content:"";}.fa-angle-double-right:before{content:"";}.fa-angle-double-up:before{content:"";}.fa-angle-double-down:before{content:"";}.fa-angle-left:before{content:"";}.fa-angle-right:before{content:"";}.fa-angle-up:before{content:"";}.fa-angle-down:before{content:"";}.fa-desktop:before{content:"";}.fa-laptop:before{content:"";}.fa-tablet:before{content:"";}.fa-mobile-phone:before,.fa-mobile:before{content:"";}.fa-circle-o:before{content:"";}.fa-quote-left:before{content:"";}.fa-quote-right:before{content:"";}.fa-spinner:before{content:"";}.fa-circle:before{content:"";}.fa-mail-reply:before,.fa-reply:before{content:"";}.fa-github-alt:before{content:"";}.fa-folder-o:before{content:"";}.fa-folder-open-o:before{content:"";}.fa-smile-o:before{content:"";}.fa-frown-o:before{content:"";}.fa-meh-o:before{content:"";}.fa-gamepad:before{content:"";}.fa-keyboard-o:before{content:"";}.fa-flag-o:before{content:"";}.fa-flag-checkered:before{content:"";}.fa-terminal:before{content:"";}.fa-code:before{content:"";}.fa-mail-reply-all:before,.fa-reply-all:before{content:"";}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"";}.fa-location-arrow:before{content:"";}.fa-crop:before{content:"";}.fa-code-fork:before{content:"";}.fa-unlink:before,.fa-chain-broken:before{content:"";}.fa-question:before{content:"";}.fa-info:before{content:"";}.fa-exclamation:before{content:"";}.fa-superscript:before{content:"";}.fa-subscript:before{content:"";}.fa-eraser:before{content:"";}.fa-puzzle-piece:before{content:"";}.fa-microphone:before{content:"";}.fa-microphone-slash:before{content:"";}.fa-shield:before{content:"";}.fa-calendar-o:before{content:"";}.fa-fire-extinguisher:before{content:"";}.fa-rocket:before{content:"";}.fa-maxcdn:before{content:"";}.fa-chevron-circle-left:before{content:"";}.fa-chevron-circle-right:before{content:"";}.fa-chevron-circle-up:before{content:"";}.fa-chevron-circle-down:before{content:"";}.fa-html5:before{content:"";}.fa-css3:before{content:"";}.fa-anchor:before{content:"";}.fa-unlock-alt:before{content:"";}.fa-bullseye:before{content:"";}.fa-ellipsis-h:before{content:"";}.fa-ellipsis-v:before{content:"";}.fa-rss-square:before{content:"";}.fa-play-circle:before{content:"";}.fa-ticket:before{content:"";}.fa-minus-square:before{content:"";}.fa-minus-square-o:before{content:"";}.fa-level-up:before{content:"";}.fa-level-down:before{content:"";}.fa-check-square:before{content:"";}.fa-pencil-square:before{content:"";}.fa-external-link-square:before{content:"";}.fa-share-square:before{content:"";}.fa-compass:before{content:"";}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"";}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"";}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"";}.fa-euro:before,.fa-eur:before{content:"";}.fa-gbp:before{content:"";}.fa-dollar:before,.fa-usd:before{content:"";}.fa-rupee:before,.fa-inr:before{content:"";}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"";}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"";}.fa-won:before,.fa-krw:before{content:"";}.fa-bitcoin:before,.fa-btc:before{content:"";}.fa-file:before{content:"";}.fa-file-text:before{content:"";}.fa-sort-alpha-asc:before{content:"";}.fa-sort-alpha-desc:before{content:"";}.fa-sort-amount-asc:before{content:"";}.fa-sort-amount-desc:before{content:"";}.fa-sort-numeric-asc:before{content:"";}.fa-sort-numeric-desc:before{content:"";}.fa-thumbs-up:before{content:"";}.fa-thumbs-down:before{content:"";}.fa-youtube-square:before{content:"";}.fa-youtube:before{content:"";}.fa-xing:before{content:"";}.fa-xing-square:before{content:"";}.fa-youtube-play:before{content:"";}.fa-dropbox:before{content:"";}.fa-stack-overflow:before{content:"";}.fa-instagram:before{content:"";}.fa-flickr:before{content:"";}.fa-adn:before{content:"";}.fa-bitbucket:before{content:"";}.fa-bitbucket-square:before{content:"";}.fa-tumblr:before{content:"";}.fa-tumblr-square:before{content:"";}.fa-long-arrow-down:before{content:"";}.fa-long-arrow-up:before{content:"";}.fa-long-arrow-left:before{content:"";}.fa-long-arrow-right:before{content:"";}.fa-apple:before{content:"";}.fa-windows:before{content:"";}.fa-android:before{content:"";}.fa-linux:before{content:"";}.fa-dribbble:before{content:"";}.fa-skype:before{content:"";}.fa-foursquare:before{content:"";}.fa-trello:before{content:"";}.fa-female:before{content:"";}.fa-male:before{content:"";}.fa-gittip:before{content:"";}.fa-sun-o:before{content:"";}.fa-moon-o:before{content:"";}.fa-archive:before{content:"";}.fa-bug:before{content:"";}.fa-vk:before{content:"";}.fa-weibo:before{content:"";}.fa-renren:before{content:"";}.fa-pagelines:before{content:"";}.fa-stack-exchange:before{content:"";}.fa-arrow-circle-o-right:before{content:"";}.fa-arrow-circle-o-left:before{content:"";}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"";}.fa-dot-circle-o:before{content:"";}.fa-wheelchair:before{content:"";}.fa-vimeo-square:before{content:"";}.fa-turkish-lira:before,.fa-try:before{content:"";}.fa-plus-square-o:before{content:"";}.fa-space-shuttle:before{content:"";}.fa-slack:before{content:"";}.fa-envelope-square:before{content:"";}.fa-wordpress:before{content:"";}.fa-openid:before{content:"";}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"";}.fa-mortar-board:before,.fa-graduation-cap:before{content:"";}.fa-yahoo:before{content:"";}.fa-google:before{content:"";}.fa-reddit:before{content:"";}.fa-reddit-square:before{content:"";}.fa-stumbleupon-circle:before{content:"";}.fa-stumbleupon:before{content:"";}.fa-delicious:before{content:"";}.fa-digg:before{content:"";}.fa-pied-piper:before{content:"";}.fa-pied-piper-alt:before{content:"";}.fa-drupal:before{content:"";}.fa-joomla:before{content:"";}.fa-language:before{content:"";}.fa-fax:before{content:"";}.fa-building:before{content:"";}.fa-child:before{content:"";}.fa-paw:before{content:"";}.fa-spoon:before{content:"";}.fa-cube:before{content:"";}.fa-cubes:before{content:"";}.fa-behance:before{content:"";}.fa-behance-square:before{content:"";}.fa-steam:before{content:"";}.fa-steam-square:before{content:"";}.fa-recycle:before{content:"";}.fa-automobile:before,.fa-car:before{content:"";}.fa-cab:before,.fa-taxi:before{content:"";}.fa-tree:before{content:"";}.fa-spotify:before{content:"";}.fa-deviantart:before{content:"";}.fa-soundcloud:before{content:"";}.fa-database:before{content:"";}.fa-file-pdf-o:before{content:"";}.fa-file-word-o:before{content:"";}.fa-file-excel-o:before{content:"";}.fa-file-powerpoint-o:before{content:"";}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"";}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"";}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"";}.fa-file-movie-o:before,.fa-file-video-o:before{content:"";}.fa-file-code-o:before{content:"";}.fa-vine:before{content:"";}.fa-codepen:before{content:"";}.fa-jsfiddle:before{content:"";}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"";}.fa-circle-o-notch:before{content:"";}.fa-ra:before,.fa-rebel:before{content:"";}.fa-ge:before,.fa-empire:before{content:"";}.fa-git-square:before{content:"";}.fa-git:before{content:"";}.fa-hacker-news:before{content:"";}.fa-tencent-weibo:before{content:"";}.fa-qq:before{content:"";}.fa-wechat:before,.fa-weixin:before{content:"";}.fa-send:before,.fa-paper-plane:before{content:"";}.fa-send-o:before,.fa-paper-plane-o:before{content:"";}.fa-history:before{content:"";}.fa-circle-thin:before{content:"";}.fa-header:before{content:"";}.fa-paragraph:before{content:"";}.fa-sliders:before{content:"";}.fa-share-alt:before{content:"";}.fa-share-alt-square:before{content:"";}.fa-bomb:before{content:"";}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"";}.fa-tty:before{content:"";}.fa-binoculars:before{content:"";}.fa-plug:before{content:"";}.fa-slideshare:before{content:"";}.fa-twitch:before{content:"";}.fa-yelp:before{content:"";}.fa-newspaper-o:before{content:"";}.fa-wifi:before{content:"";}.fa-calculator:before{content:"";}.fa-paypal:before{content:"";}.fa-google-wallet:before{content:"";}.fa-cc-visa:before{content:"";}.fa-cc-mastercard:before{content:"";}.fa-cc-discover:before{content:"";}.fa-cc-amex:before{content:"";}.fa-cc-paypal:before{content:"";}.fa-cc-stripe:before{content:"";}.fa-bell-slash:before{content:"";}.fa-bell-slash-o:before{content:"";}.fa-trash:before{content:"";}.fa-copyright:before{content:"";}.fa-at:before{content:"";}.fa-eyedropper:before{content:"";}.fa-paint-brush:before{content:"";}.fa-birthday-cake:before{content:"";}.fa-area-chart:before{content:"";}.fa-pie-chart:before{content:"";}.fa-line-chart:before{content:"";}.fa-lastfm:before{content:"";}.fa-lastfm-square:before{content:"";}.fa-toggle-off:before{content:"";}.fa-toggle-on:before{content:"";}.fa-bicycle:before{content:"";}.fa-bus:before{content:"";}.fa-ioxhost:before{content:"";}.fa-angellist:before{content:"";}.fa-cc:before{content:"";}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"";}.fa-meanpath:before{content:"";}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333;}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px;}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto;}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px;}header #heading,#header #heading{float:left;height:34px;}header #heading i,#header #heading i{display:block;height:34px;width:34px;background-image:url(data:image/png;base64,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);}header nav,#header nav{float:left;height:34px;padding:0;margin:0;}header nav ul#menu,#header nav ul#menu{height:26px;padding:0;margin:8px 0 0 4px;list-style:none;z-index:100000;font-size:0;line-height:0;}header nav ul#menu>li,#header nav ul#menu>li{display:inline-block;z-index:100000;font-size:13.2px;line-height:19.2px;}header nav ul#menu>li.moveRight,#header nav ul#menu>li.moveRight{margin-left:20px;}header nav ul#menu>li>a,#header nav ul#menu>li>a{display:inline-block;padding:2px 10px 4px 10px;height:20px;color:#fff;font-weight:400;text-transform:uppercase;text-decoration:none;}header nav ul#menu>li>a:active,#header nav ul#menu>li>a:active{text-decoration:none;}header nav ul#menu>li.active>a,#header nav ul#menu>li.active>a{background-color:#222;}header nav ul#menu>li:hover>a,#header nav ul#menu>li:hover>a{background-color:#111;text-decoration:none;}header nav ul#menu>li>ul,#header nav ul#menu>li>ul{z-index:100000;display:none;list-style:none;position:absolute;margin:0;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;background-color:#f2f2f2;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5);}header nav ul#menu>li>ul li,#header nav ul#menu>li>ul li{position:relative;background-position:top;background-repeat:repeat-x;border-top:1px solid #e6e6e6;}header nav ul#menu>li>ul li:first-child,#header nav ul#menu>li>ul li:first-child{border-top:1px solid #d1d1d1;}header nav ul#menu>li>ul li:last-child,#header nav ul#menu>li>ul li:last-child{border-bottom:1px solid #d1d1d1;}header nav ul#menu>li>ul li:hover,#header nav ul#menu>li>ul li:hover{border-top:1px solid #d9d9d9;background-color:#e6e6e6;}header nav ul#menu>li>ul li a,#header nav ul#menu>li>ul li a{display:block;color:#000;padding:4px 8px;text-decoration:none;}header nav ul#menu>li>ul li a:hover,#header nav ul#menu>li>ul li a:hover{color:#335a87;text-decoration:none;}header nav ul#menu>li>ul li a:active,#header nav ul#menu>li>ul li a:active{text-decoration:none;}header nav ul#menu>li>ul li i.fa-caret-right,#header nav ul#menu>li>ul li i.fa-caret-right{cursor:pointer;color:#666;font-size:16px;position:absolute;display:block;right:12px;top:7px;}header nav ul#menu>li>ul li:hover i.fa-caret-right,#header nav ul#menu>li>ul li:hover i.fa-caret-right{color:#333;}header nav ul#menu>li>ul ul,#header nav ul#menu>li>ul ul{display:none;list-style:none;position:absolute;top:-1px;left:180px;background-color:#f2f2f2;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5);}header #headerMenu,#header #headerMenu{float:right;height:24px;padding:5px 8px;font-size:.9em;line-height:24px;text-align:right;color:#fff;}header #headerMenu a,#header #headerMenu a{color:#fff;text-decoration:none;}header #headerMenu a:hover,#header #headerMenu a:hover{color:#cddbec;text-decoration:none;}header #SearchQuery,#header #SearchQuery{font-size:.9em;margin-left:6px;width:130px;background-color:#eee;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s;}header #SearchQuery:hover,#header #SearchQuery:hover,header #SearchQuery:focus,#header #SearchQuery:focus{background-color:#fff;width:190px;}header .watermark,#header .watermark{background-color:#888;}#QuickSearchMenu{max-height:400px;font-size:.9em;background:none;background-color:#fafafa;}#QuickSearchMenu li:not(:last-child){border-bottom:1px solid #d8d8d8;}#QuickSearchMenu li>a{padding:2px;}#QuickSearchMenu li>a>i{margin-right:2px;}#QuickSearchMenu li>a>div{padding-left:1.2857142857142858em;margin-left:2px;}#layout_PageHeading{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) left top repeat-x #fff;background:linear-gradient(to bottom,#f2f2f2 0,#fff 50px) #fff;height:50px;padding:6px 20px 4px 20px;font-size:2em;color:#000;line-height:50px;position:relative;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;}#layout_PageHeading a{text-decoration:none;}#layout_PageHeading>a.button{position:absolute;right:30px;bottom:8px;font-size:.5em;line-height:1em;text-align:right;}#layout_Page{background-color:#fff;overflow:auto;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;padding:0 30px 15px 30px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}#layout_Error{min-height:200px;}#layout_Error table{background-color:#fff;}#layout_Error h1,#layout_Error h2,#layout_Error h3,#layout_Error h4,#layout_Error h5{color:#fff;white-space:pre-wrap;}#layout_Error h2.error{margin-bottom:10px;}#layout_Error .stacktrace{white-space:pre;overflow:auto;}#layout_Error>div{margin:0 auto;width:650px;}#layout_uiExtensions{display:none;}footer,#footer{color:#777;padding:10px 0;text-align:center;margin:0;font-size:.9em;}footer a:link,#footer a:link,footer a:visited,#footer a:visited,footer a:active,#footer a:active{color:#777;}footer a:link,#footer a:link,footer a:active,#footer a:active{text-decoration:underline;}footer a:hover,#footer a:hover{color:#5e8cc2;text-decoration:none;}p{margin:0 0 2px 0;line-height:1.6em;}ul{margin:0;padding:0 0 0 25px;list-style:square;line-height:1.6em;}header,footer,nav,section{display:block;}form{display:inline;}img{border:none;padding:0;margin:0;vertical-align:bottom;}code{font-family:Consolas,"Courier New",monospace;}hr{border:none;border-bottom:1px dashed #aaa;margin-top:15px;}strong{font-weight:600;}a:link{color:#335a87;text-decoration:none;}a:visited{color:#335a87;}a:hover{color:#5e8cc2;text-decoration:underline;}a:active{color:#335a87;}a[disabled]{color:#6b6b6b;text-decoration:none;cursor:default;}a.button{display:inline-block;padding:4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer;white-space:nowrap;text-decoration:none;}a.button[disabled],a.button.disabled{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default;}a.button.alert{border-color:#900;background-color:#e51400;}a.button.small{padding:2px 5px;font-size:.9em;}a.button:hover{border:1px solid #6b6b6b;background:#9e9e9e;}a.button i{margin-right:10px;}div.actionBar{margin:0 -30px 0 -30px;padding:10px;border-top:1px solid #d1d1d1;text-align:right;background-color:#f2f2f2;clear:both;}div.actionBar:not(:first-child){margin-top:10px;}div.actionBar:last-child{margin-bottom:-15px;-moz-border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}h1,h2,h3,h4,h5,h6{color:#000;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-weight:lighter;font-stretch:condensed;margin:0;}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0 !important;padding-top:0 !important;}h1>a:link,h2>a:link,h3>a:link,h4>a:link,h5>a:link,h6>a:link{text-decoration:none;}h1{font-size:24px;}h2{font-size:20px;padding:8px 0 4px 0;}h3{font-size:18px;}h4{font-size:14px;}h5,h6{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-stretch:normal;font-weight:600;}table{border:none;border-collapse:collapse;width:100%;}table td{padding:5px;margin:0;border:none;vertical-align:top;}table th{padding:5px;margin:0;text-align:left;font-weight:600;vertical-align:top;}table.none{border:none !important;}table.none tr,table.none td,table.none th{padding:0 !important;margin:0 !important;background:none !important;border:none !important;}table.genericData{border:solid 1px #f4f4f4;border-collapse:collapse;}table.genericData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}table.genericData>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}table.genericData>thead>tr>th,table.genericData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}table.genericData>tbody>tr:hover>td{background-color:#f9f9f9;}table.genericData>tfoot>tr>th,table.genericData>tfoot>tr>td{background-color:#f4f4f4;}table.genericData td.id{text-align:center;}table.genericData td.id a{padding:0 6px;}.smallTable th,.smallTable td{font-size:.9em;}.dataTables_wrapper{position:relative;}.dataTables_wrapper .dataTables_filter{position:absolute;height:20px;margin-top:-20px;right:0;font-size:.9em;-moz-opacity:.3;opacity:.3;}.dataTables_wrapper .dataTables_filter input{font-size:.95em;padding:0;height:1.4em;width:150px;}.dataTables_wrapper .dataTables_length{position:absolute;height:20px;margin-top:-20px;right:200px;font-size:.9em;-moz-opacity:.3;opacity:.3;}.dataTables_wrapper .dataTables_length select{font-size:.95em;padding:0;height:1.4em;}.dataTables_wrapper .dataTables_paginate{text-align:right;background-color:#f4f4f4;padding:2px 4px;font-size:.9em;}.dataTables_wrapper .dataTables_paginate a{cursor:pointer;padding:2px;margin:0 3px;color:#335a87;background-repeat:no-repeat;-moz-opacity:.3;opacity:.3;text-transform:uppercase;}.dataTables_wrapper .dataTables_paginate .first{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQALGUe0SQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAAYqTAY6Jng6AAAAAElFTkSuQmCC);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .first.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQAKxsbESQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAEm8TIFT3+fIAAAAAElFTkSuQmCC);}.dataTables_wrapper .dataTables_paginate .previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .previous.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .next.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .last{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12Mwjmr/D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAABJ/EwGJKVDGAAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .last.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12OIjY39D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAACQykyB48rZCQAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .paginate_active{font-weight:600;color:#1e6dab;}.dataTables_wrapper .dataTables_paginate .paginate_button_disabled{color:#ccc;cursor:default;}.dataTables_wrapper .dataTables_paginate .paginate_enabled_previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .paginate_disabled_previous{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .paginate_enabled_next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .paginate_disabled_next{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper:hover .dataTables_filter,.dataTables_wrapper:hover .dataTables_length,.dataTables_wrapper:hover .dataTables_paginate a{-moz-opacity:1;opacity:1;}.dataTables_wrapper table>thead tr>th{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAD6CAYAAACoLMeFAAAAdElEQVRo3u3bOwqAMBAFwBwjh/CUluKRhfVTiil0UYjMwJLqLfmUYUuBtw3jUreKfc2E43aTi/C9Jo3wUR4WAAAAAAAAejBPc90q9jUTjkdNTuGjPj9/bgfpO0i/AgAAAAAAAPQnPZ6YHpBsNEnNefrt4+9Wmn6nW/cZ1MQAAAAASUVORK5CYII=);background-repeat:no-repeat;}.dataTables_wrapper table>thead tr>th.sorting{background-position:right center;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_desc{background-position:right bottom;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_asc{background-position:right top;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_disabled{background-image:none;}table.userTable div.flags{display:inline-block;float:right;}table.userTable div.flags>i{cursor:default;}table.userTable div.flags>i>.details{display:none;}.jobStatus{color:#333;}.jobStatus.Closed{color:#9e9e9e;}.jobStatus.Open{color:#60a917;}.jobStatus.AwaitingWarrantyRepair,.jobStatus.AwaitingRepairs{color:#1e6dab;}.jobStatus.AwaitingDeviceReturn,.jobStatus.AwaitingUserAction,.jobStatus.AwaitingAccountingPayment,.jobStatus.AwaitingAccountingCharge{color:#f0a30a;}.jobStatus.AwaitingInsuranceProcessing{color:#6a00ff;}.deviceStatus{color:#333;}.deviceStatus.Decommissioned{color:#9e9e9e;}.deviceStatus.Active{color:#60a917;}.deviceStatus.NotEnrolled{color:#f0a30a;}table.jobTable{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed;}table.jobTable>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}table.jobTable>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}table.jobTable>thead>tr>th,table.jobTable>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}table.jobTable>tbody>tr:hover>td{background-color:#f9f9f9;}table.jobTable>tfoot>tr>th,table.jobTable>tfoot>tr>td{background-color:#f4f4f4;}table.jobTable td{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;}table.jobTable.hideStatusClosed tr[data-status=Closed]{display:none;}table.jobTable td.id,table.jobTable th.id{width:50px;text-align:center;}table.jobTable td.id a,table.jobTable th.id a{padding:0 6px;}table.jobTable tr.statusSlaWarning td{background-color:#fdeed1;}table.jobTable tr.statusSlaWarning td:not(:last-child){border-right:1px solid #f8e9cb;}table.jobTable tr.statusSlaExpired td{background-color:#ffd7d3;}table.jobTable tr.statusSlaExpired td:not(:last-child){border-right:1px solid #fad2ce;}table.jobTable tr:nth-child(odd).statusSlaWarning td{background-color:#fbeccf !important;}table.jobTable tr:nth-child(odd).statusSlaExpired td{background-color:#fdd5d1 !important;}table.jobTable tr:hover.statusSlaWarning td{background-color:#fbeaca !important;}table.jobTable tr:hover.statusSlaExpired td{background-color:#fdd1cd !important;}table.jobTable div.queues{display:inline-block;float:right;}table.jobTable td.lastActive,table.jobTable th.lastActive{width:130px;}table.jobTable td.dates,table.jobTable th.dates{width:130px;}table.jobTable td.type,table.jobTable th.type{width:50px;}table.jobTable td.device,table.jobTable th.device{width:110px;}table.jobTable td.user,table.jobTable th.user{width:240px;}table.jobTable td.technician,table.jobTable th.technician{width:80px;}table.jobTable td.location,table.jobTable th.location{width:200px;}div.jobTable>a.dataTables_showStatusClosed{margin:10px 5px;}div.jobTable>h3,div.jobTable>div.allClosed_container{margin:50px 20px !important;}div.jobTable>h3 a.button,div.jobTable>div.allClosed_container a.button{margin-top:10px;}table.deviceTable tr.decommissioned{background-color:#ededed;}textarea{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;min-height:75px;padding:2px;color:#444;width:200px;}input[type="text"],input[type="password"],input[type="file"],input[type="number"]{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;padding:2px;color:#444;width:200px;}input[type="text"].small,input[type="password"].small,input[type="file"].small,input[type="number"].small{padding:0 2px;width:150px;}input[type="text"].discreet,input[type="password"].discreet,input[type="file"].discreet,input[type="number"].discreet{border:1px solid #fff;}input[type="text"].discreet:hover,input[type="password"].discreet:hover,input[type="file"].discreet:hover,input[type="number"].discreet:hover,input[type="text"].discreet:focus,input[type="password"].discreet:focus,input[type="file"].discreet:focus,input[type="number"].discreet:focus{border:1px solid #ccc;}input[type="checkbox"],input[type="radio"]{margin-right:4px;vertical-align:sub;}select{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:12px;border:1px solid #ccc;padding:2px;color:#444;}select.small{padding:0;}input[type="submit"],button{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;padding:5px;}input[type="submit"].button,button.button{font-size:12px;padding:4px 10px 4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer;}input[type="submit"].button.alert,button.button.alert{border-color:#900;background-color:#e51400;}input[type="submit"].button.small,button.button.small{padding:2px 5px;font-size:.9em;}input[type="submit"].button[disabled],button.button[disabled]{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default;}input[type="submit"].button:hover,button.button:hover{border:1px solid #6b6b6b;background:#9e9e9e;}ul.none,ol.none{list-style:none;margin:0;padding:0;}ul.none li,ol.none li{margin:0;}div.form{margin:0 auto;}div.form>p.actions{text-align:right;}div.form>table{border-top:6px solid #1e6dab;border-left:1px solid #1e6dab;border-right:1px solid #1e6dab;border-bottom:3px solid #1e6dab;background-color:#fff;}div.form>table>tbody>tr>td,div.form>table>tbody>tr>th{background:none;border:none;margin:0;padding:8px 5px;}div.form>table>tbody>tr>th{font-weight:normal;text-align:right;}div.form>table>tbody>tr:nth-child(odd){background-color:#f2f2f2;margin:0;padding:0;}div.form>table>tbody>tr>td.details{padding:0;}div.form>table>tbody>tr>th.name{width:150px;text-align:right;}div.form>table table.sub>tbody>tr:not(:first-child)>th,div.form>table table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa;}div.form>table table.sub>tbody>tr>th{font-weight:normal;text-align:right;}div.form>table table.sub>tbody>tr>th.name{text-align:right;}#pageMenu td{border-right:1px dashed #aaa;width:33%;padding:10px;}#pageMenu td .pageMenuArea>.fa{font-size:1.3em;color:#6b6b6b;margin-right:4px;}#pageMenu td .pageMenuArea>a,#pageMenu td .pageMenuArea>h3{text-decoration:none;font-size:1.2em;}#pageMenu td .pageMenuArea .pageMenuBlurb{font-size:.9em;color:#888;margin-bottom:10px;}#pageMenu td .pageMenuArea .pageMenuBlurb a{text-decoration:none;}#pageMenu td .pageMenuArea:not(:last-child){border-bottom:1px dashed #aaa;}#pageMenu td .pageMenuArea.noSeperator{border-bottom:none;}#pageMenu td:first-child{padding-left:0;}#pageMenu td:last-child{border-right:none;padding-right:0;}div.info-box{margin:.4em 0;padding:.4em;border:1px solid #fff397;background-color:#fffef7;}div.info-box i{color:#1e6dab;}div.info-box.alert{border:1px solid #fa6800;background-color:#fff9f5;color:#333;}div.info-box.alert i{color:#fa6800;}div.info-box.error{border:1px solid #e51400;background-color:#fffaf9;color:#e51400;}div.info-box.error i{color:#e51400;}div.info-box p{line-height:1.2em;}p.fa-p{text-indent:-1.48em;margin-left:1.48em;}p.fa-p>i:first-child{text-indent:0;width:1.28em;margin-right:.2em;}div.Disco-AttachmentUpload-DropTarget{display:none;}div.Disco-AttachmentUpload-DropTarget.dragHighlight{display:block;position:absolute;z-index:1000;top:0;left:0;width:calc(100% - 6px);height:calc(100% - 6px);background-color:rgba(251,218,152,.5);border:3px dashed #f0a30a;}div.Disco-AttachmentUpload-DropTarget.dragHighlight h2{margin-top:3em !important;color:#2c1e02;text-align:center;font-weight:600;}div.Disco-AttachmentUpload-DropTarget.dragHighlight.dragHover{background-color:rgba(173,235,110,.5);border:3px dashed #60a917;}div.Disco-AttachmentUpload-DropTarget.dragHighlight.dragHover h2{color:#000;}div.Disco-AttachmentUpload-Progress{position:absolute;right:0;bottom:48px;}div.Disco-AttachmentUpload-Progress>div{background-color:#fafafa;padding:4px 8px;}div.Disco-AttachmentUpload-Progress>div i{color:#1e6dab;margin-right:4px;}div.Disco-AttachmentUpload-CommentDialog{padding:.25em .5em !important;}div.Disco-AttachmentUpload-CommentDialog table{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}div.Disco-AttachmentUpload-CommentDialog table>thead>tr>th,div.Disco-AttachmentUpload-CommentDialog table>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr:hover>td{background-color:#f9f9f9;}div.Disco-AttachmentUpload-CommentDialog table>tfoot>tr>th,div.Disco-AttachmentUpload-CommentDialog table>tfoot>tr>td{background-color:#f4f4f4;}div.Disco-AttachmentUpload-CommentDialog table th{width:80px;}div.Disco-AttachmentUpload-CommentDialog table td.filename{font-family:Consolas,"Courier New",monospace;white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;}div.Disco-AttachmentUpload-CommentDialog table input.comments{width:calc(100% - 5px);}div.Disco-AttachmentUpload-CommentDialog table td.thumbnail{display:none;text-align:center;}div.Disco-AttachmentUpload-CommentDialog table td.thumbnail img{border:1px solid #9e9e9e;max-height:250px;max-width:374px;}div.Disco-AttachmentUpload-ImageDialog{background-color:#000 !important;padding:0 !important;overflow:hidden !important;width:720px !important;height:540px !important;}body>.User_FlagAssignment_Tooltip span.name{display:block;font-weight:600;}body>.User_FlagAssignment_Tooltip span.comments{display:block;padding:2px 0 2px 4px;}body>.User_FlagAssignment_Tooltip span.added{font-style:italic;font-size:.9em;}.d-priority-high{color:#fa6800;width:1.2857142857142858em;text-align:center;}.d-priority-high:before{content:"";}.d-priority-normal{color:#60a917;width:1.2857142857142858em;text-align:center;}.d-priority-normal:before{content:"";}.d-priority-low{color:#1e6dab;width:1.2857142857142858em;text-align:center;}.d-priority-low:before{content:"";}.fa-stack .d-priority-high,.fa-stack .d-priority-normal,.fa-stack .d-priority-low{width:100%;font-size:.8em;margin-left:.5em;margin-top:.4em;opacity:.6;}.d-lime{color:#a4c400;}.d-green{color:#60a917;}.d-emerald{color:#008a00;}.d-teal{color:#00aba9;}.d-cyan{color:#1ba1e2;}.d-cobalt{color:#0050ef;}.d-indigo{color:#6a00ff;}.d-violet{color:#a0f;}.d-pink{color:#f472d0;}.d-magenta{color:#d80073;}.d-crimson{color:#a20025;}.d-red{color:#e51400;}.d-orange{color:#fa6800;}.d-amber{color:#f0a30a;}.d-yellow{color:#e3c800;}.d-brown{color:#825a2c;}.d-olive{color:#6d8764;}.d-steel{color:#647689;}.d-mauve{color:#76608a;}.d-sienna{color:#a0522d;}table.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}td.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.field-validation-error{color:#e51400 !important;}.field-validation-valid{display:none;}.input-validation-error{border:1px solid #e51400 !important;background-color:#fff7f7 !important;}.validation-summary-errors{font-weight:bold !important;color:#e51400 !important;}.validation-summary-valid{display:none;}.ajaxLoading{height:11px;width:16px;display:inline-block;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);margin-bottom:0;}.ajaxOk{color:#60a917;}.ajaxSave{color:#1e6dab;cursor:pointer;}.ajaxRemove{color:#e51400;cursor:pointer;opacity:.8;}.ajaxRemove:hover{opacity:1;}#layout_Page div.hiddenDialog{display:none;}* html .clearfix{height:1%;overflow:visible;}*+html .clearfix{min-height:1%;}.clearfix:after{clear:both;content:".";display:block;height:0;visibility:hidden;font-size:0;}div.columnHost .column50{float:left;width:50%;}.hidden{display:none;}.success{color:#60a917;}.information{color:#1e6dab;}.warning{color:#f0a30a;}.error{color:#e51400;}.alert{color:#fa6800;}.smallText{font-size:.9em;}.smallMessage{font-style:italic;color:#666;font-size:.9em;}.nowrap{white-space:nowrap;}.code{font-family:Consolas,"Courier New",monospace;}div.code{border:1px dashed #bbb;background-color:#fff;margin:3px 6px;padding:4px;font-size:.9em;}a.smallLink{font-size:.9em;}textarea.block{width:250px;height:100px;}.checkboxBulkSelectContainer{margin-top:6px;font-size:.8em;}.checkboxBulkSelectContainer a{text-decoration:none;}.ui-widget .checkboxBulkSelectContainer{font-size:1em;}#licence{text-align:justify;}#licence p{font-size:.9em;line-height:1.6em;margin-bottom:1em;}#licence li{font-size:.9em;} \ No newline at end of file diff --git a/Disco.Web/ClientSource/Style/Config.css b/Disco.Web/ClientSource/Style/Config.css index d8171d73..fe40bacf 100644 --- a/Disco.Web/ClientSource/Style/Config.css +++ b/Disco.Web/ClientSource/Style/Config.css @@ -690,6 +690,107 @@ div.logEventsViewport table.logEventsViewport > tbody > tr > td.eventType { height: 200px; margin: 0 auto; } +h1.Config_DocumentTemplates { + margin: 10px 0 6px; +} +#Config_DocumentTemplatePackages_Show > div.form > table > tbody > tr > th { + width: 140px; +} +#Config_DocumentTemplatePackages_Show #Package_FilterExpression, +#Config_DocumentTemplatePackages_Show #Package_OnGenerateExpression { + height: 16px; + min-height: 16px; + overflow: hidden; + font-family: Consolas, "Courier New", monospace; +} +#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackages_Scope_Button { + margin-top: 4px; +} +#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackage_List { + list-style-type: decimal; + list-style-position: inside; + background-color: #f2f2f2; + border: 1px solid #d8d8d8; +} +#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackage_List li { + padding: 6px 8px; +} +#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackage_List li:not(:first-child) { + border-top: 1px dashed #d8d8d8; +} +#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackage_List li .id { + font-family: Consolas, "Courier New", monospace; + float: right; +} +#Config_DocumentTemplatePackages_Scope_Dialog div.input { + margin: 14px 10px 20px; +} +#Config_DocumentTemplatePackages_JobSubTypes { + border: 1px dashed #d8d8d8; + background-color: #fff; + padding: 4px; + margin-top: 6px; +} +#Config_DocumentTemplatePackages_JobSubTypes > h4 { + margin-bottom: 4px; +} +#Config_DocumentTemplatePackages_JobSubTypes #Config_DocumentTemplatePackages_JobSubTypes_Update { + margin-top: 4px; +} +#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog #Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog_Types { + margin: 0 0 8px 0; +} +#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog .jobTypes { + padding: 6px 0; +} +#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog .jobTypes .jobSubTypes { + background-color: #f2f2f2; + border-left: 4px solid #d8d8d8; + padding: 4px 0 4px 8px; + margin: 4px 0 0 6px; +} +#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog .checkboxBulkSelectContainer { + font-size: .8em; +} +#Config_DocumentTemplatePackages_Templates_Dialog h3 { + margin-bottom: 4px; +} +#Config_DocumentTemplatePackages_Templates_Dialog > div { + width: 374px; + float: left; +} +#Config_DocumentTemplatePackages_Templates_Dialog > div:first-child { + margin-right: 20px; +} +#Config_DocumentTemplatePackages_Templates_Dialog .templates_connected { + min-height: 200px; +} +#Config_DocumentTemplatePackages_Templates_Dialog ol { + list-style-type: decimal; + padding-left: 24px; + border: 1px solid #d8d8d8; + background-color: #f2f2f2; +} +#Config_DocumentTemplatePackages_Templates_Dialog li { + background-color: #fff; + border: 1px solid #d8d8d8; + margin: 4px; + padding: 2px 4px; + -moz-box-shadow: 0 0 5px rgba(209, 209, 209, 0.5); + -webkit-box-shadow: 0 0 5px rgba(209, 209, 209, 0.5); + box-shadow: 0 0 5px rgba(209, 209, 209, 0.5); + cursor: default; +} +#Config_DocumentTemplatePackages_Templates_Dialog li:hover { + background-color: #cddbec; + border-color: #1e6dab; +} +#Config_DocumentTemplatePackages_Templates_Dialog li .id { + font-family: Consolas, "Courier New", monospace; + color: #888; + float: right; + font-size: .9em; +} #importStatus #sessions .session { padding: 4px; margin-bottom: 10px; diff --git a/Disco.Web/ClientSource/Style/Config.less b/Disco.Web/ClientSource/Style/Config.less index 6098921f..a9d5ebe3 100644 --- a/Disco.Web/ClientSource/Style/Config.less +++ b/Disco.Web/ClientSource/Style/Config.less @@ -760,6 +760,139 @@ div.logEventsViewport { } } +h1.Config_DocumentTemplates { + margin: 10px 0 6px; +} + +// Document Template Packages +#Config_DocumentTemplatePackages_Show { + & > div.form > table > tbody > tr > th { + width: 140px; + } + + #Package_FilterExpression, #Package_OnGenerateExpression { + height: 16px; + min-height: 16px; + overflow: hidden; + font-family: @FontFamilyMono; + } + + #Config_DocumentTemplatePackages_Scope_Button { + margin-top: 4px; + } + + #Config_DocumentTemplatePackage_List { + list-style-type: decimal; + list-style-position: inside; + background-color: @FormBackgroundOddColour; + border: 1px solid @TableDataDarkBorderColour; + + li { + padding: 6px 8px; + + &:not(:first-child) { + border-top: 1px dashed @TableDataDarkBorderColour; + } + + .id { + font-family: @FontFamilyMono; + float: right; + } + } + } +} + +#Config_DocumentTemplatePackages_Scope_Dialog { + div.input { + margin: 14px 10px 20px; + } +} + +#Config_DocumentTemplatePackages_JobSubTypes { + border: 1px dashed @TableDataDarkBorderColour; + background-color: @white; + padding: 4px; + margin-top: 6px; + + & > h4 { + margin-bottom: 4px; + } + + #Config_DocumentTemplatePackages_JobSubTypes_Update { + margin-top: 4px; + } +} + +#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog { + #Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog_Types { + margin: 0 0 8px 0; + } + + .jobTypes { + padding: 6px 0; + + .jobSubTypes { + background-color: @FormBackgroundOddColour; + border-left: 4px solid @TableDataDarkBorderColour; + padding: 4px 0 4px 8px; + margin: 4px 0 0 6px; + } + } + + .checkboxBulkSelectContainer { + font-size: .8em; + } +} + +#Config_DocumentTemplatePackages_Templates_Dialog { + h3 { + margin-bottom: 4px; + } + + & > div { + width: 374px; + float: left; + + &:first-child { + margin-right: 20px; + } + } + + .templates_connected { + min-height: 200px; + } + + ol { + list-style-type: decimal; + padding-left: 24px; + border: 1px solid @TableDataDarkBorderColour; + background-color: @FormBackgroundOddColour; + } + + li { + background-color: @white; + border: 1px solid @TableDataDarkBorderColour; + margin: 4px; + padding: 2px 4px; + -moz-box-shadow: 0 0 5px fade(@BackgroundColour, 50%); + -webkit-box-shadow: 0 0 5px fade(@BackgroundColour, 50%); + box-shadow: 0 0 5px fade(@BackgroundColour, 50%); + cursor: default; + + &:hover { + background-color: @HighlightColour; + border-color: @ButtonColour; + } + + .id { + font-family: @FontFamilyMono; + color: #888; + float: right; + font-size: .9em; + } + } +} + // Document Templates - Import Status #importStatus { #sessions { @@ -1663,14 +1796,13 @@ div.logEventsViewport { } #Config_UserFlags_Show { - + #UserFlag_OnAssignmentExpression, #UserFlag_OnUnassignmentExpression { height: 16px; min-height: 16px; overflow: hidden; font-family: @FontFamilyMono; } - } #Config_UserFlags_Index { @@ -1837,4 +1969,4 @@ div.logEventsViewport { display: none; } } -} \ No newline at end of file +} diff --git a/Disco.Web/ClientSource/Style/Config.min.css b/Disco.Web/ClientSource/Style/Config.min.css index a62253ac..ddcb1f27 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:#fbfbfb;}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}.tableData>tbody>tr:hover>td{background-color:#f9f9f9;}.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 table.input{margin-top:12px;}#Config_LinkedGroup_Dialog table.input th{text-align:right;}#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,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAGFklEQVRYw+WVe1BUVRzHvwE+QE0ZLF1Y3gTGSxIl4rk85KHFe0cUiIc8IjNx8gUmLJAFpbIKKJmmCSOi4q48zAe6LqAoioiIMlpOqYWxKCroWFNzO2eXXRdYCBqmf/rNfPece+6598738/ud3wJjHPV8WNwphoSO+L+F3HznWaTVbcGDsYQggkhjJPucWIhcGYYP5xnAKnkh0n1skcGxRobzLGx0MsYmR2MUO5qBMzEAiXhvxmLZU94tq/rJqzUV3q08zL+ei/lt+fC9sRt+N0vh334U/rdOYMEtMRnPqzL/4CxSu46jQFIJgSoI93FfZ7Tmi1FsVoSitWuwhv1Pe51ZcO0+g0BHNkqYH7BVrueXsPlhDYou7cYhrh2OOCzCdhQg7SWAcCYK4X/GIPyPBHBfJIP7fAWCe1chuGc9Qp5kIfhRDgIfbkHQo0IESnaCI74yKPNnkNZ5HPldxLxEiEuSw7i7fgl65BCo+Soc2zkaCHLzZSgLpeM2bBsWAscSM90McID5GTuy41BKzfdexOYn51Ao+R5lvwpR9bsAP65chr0z+TijqgLWw7dtI/zatsoy315GVA2/WyJp1uVyr7k6oOxT5ea7BGgk5u+pMt+N7pCRQtiP/VbUdA1qPLrxNLgFrR/T6wLsMlRscj+bpZAdn+tph5SeBvDi/HGYQjCfjObHtdj+8CRKOwQQ/XIIVyT78GhRFAQ6n6NJ9hKrZeGKF3IZdXDIefO/PQH2l7UQUD8FLnXaZG060Uy8c14PnAYjsJwa6Xb5me86KSv7LpL5riEyT8334FmSCOK8T7D6mrLZjhaEpacjFKzxoTAOWE2W1KhZUgFBj9ETRp+juozmFXQ9D3ksBYBIJgJOe32o+S4xPp1riKqGPdho+BrKKQQWxtXe3IMm8SbcFeWi8zMuJDPsIdLNxg3Z1y2TImUTRk1m/tiEoA78NlDwJOZd6gxg/r6/HAA1WZSCJ5IqCKVlL8BVah4Gvny5TuF0/kDzI6mADcgQfIEcfjOuLXmKZ/H0eTImilGfFI3Yo2SLuhSAV5MfNX9hH1Kpeeh4rHEwQnXjN/hWG69WMBfxk/F0dKpD84W1If4y0oJQ3Q779Xno6AMQG0vMvwKTwHUwWpgJQ/+vpIbJolzSa11XMdhuF5QBKEPoKsc9OioaHwXQVwE7satOlXma+RqhLPseC0gFsNVDYeCQRO/xkCkUQLjtJYTemFa0xcUjsTwa0S1kyzjoe7rRvW5u0Hcxw3d2s2BEr+cYw5VCaNqOFu1x6B0PtWJomyTLvzvRHxFTQ3FPdmUekaAq44MqwE1sTPTGQADKEPp1/T4AcgjUvCHIO0YYPGSVC1FRWI1qfg5y8w6hPGkpEk6kI6MuDnH9ADA8aFApHj54UB3qk0M9zUijM42yRgTDxiSdE6q/ZLYoWTnj0rmhTyH0vfaQD5RBn1MBPfeTJPu10HNpgFVK2EAAcgj9FpQA0JCaj68tQbyIPfD8C0sRFvcBQlnWCAHbdqnsCGyYRyAIjqKyoAKVW2MQ25yJzLoVSGkk82sc8ncO9nz3QQB4PDUsJz0soH0KFt+ZIVU0Yzo0AFPuR4OyLW16jaTpndaDH2l6nPNmcK63gHOjFWanRaoCMCiUAVDT1HwWkwiPYzUDIQxdBTzbLGQLDqCsiGZ9LdY1RCPmeglKLKUb9H1dZUmMipKKIUdZPldWFPPmsABId9eESbCiB8DQuxAGpAL0PA7A85yptAJoD6AVMFoAyuaXX8+Wzu2/ZkZ6FHKRa0ErIRZLmyMR2c4H31ZxU9+n/xE4SP7FSBNHkGgaQm6wwG03RsRNG8Qxs4cHYNsyCd6npsLrog6czr1Osq0Lb9LxXepMiMzhdcGSyBauDXNGBYBKlfkRVoA88pFvswQRt7OQZd/vRh8ARaa5zHjVFfBs7vAAqHldZwuwA21gnjAPs9e64C2eNxy+fBeOeSFw2hGu0EgBKJe/077Gf2t+2DAKfLtfBTCMpkJHGB3wGANkMJbIYWyGB0ANjVajCWp6rM3T0Ji2ifxUQV2rQqHxU4i0KomqoKHZN06sGhrAfxVjbX4M4m/gZza+uQwOHQAAAABJRU5ErkJggg==);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:#fbfbfb;}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:#f9f9f9;}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:#fbfbfb;}#deviceComponents>thead>tr>th,#deviceComponents>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}#deviceComponents>tbody>tr:hover>td{background-color:#f9f9f9;}#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:600;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:600;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:600;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:374px;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:600;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:364px;}#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:600;}#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:600;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:#fbfbfb;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;max-height:700px;background-position:top center;background-repeat:no-repeat;background-size:contain;}#undetectedPageDialog .actions{border-top:1px solid #d1d1d1;padding-top:8px;margin-top:8px;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;}#pluginLibraryHeading{float:right;}#pluginLibrary #pluginLibraryGroups{width:900px;margin:0 auto;}#pluginLibrary #pluginLibraryGroups>div.form{width:50%;float:left;}#pluginLibrary #pluginLibraryGroups>div.form>table{margin:0 10px 10px 4px;width:calc(100% - 14px);}#pluginLibrary .pluginItem .pluginItemBlurb{margin:8px 0 8px 2px;padding:0 4px;border-left:4px solid #d1d1d1;}#pluginLibrary .pluginItem .pluginItemBlurb *{padding:0;margin:0;}#pluginLibrary .pluginItem .pageMenuBlurb i{font-size:.9em;}#pluginLibrary .pluginItem>h2:first-child{min-height:22px;}#pluginLibrary .pluginItem>h2:first-child i{font-size:.9em;padding-right:4px;color:#333;}#pluginLibrary .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_ReportPrefs{margin-top:10px;}#Config_ReportPrefs #Config_ReportPrefs_Preview{float:right;width:150px;height:80px;border:1px solid #444;font-size:4px;color:#fff;overflow:hidden;text-transform:uppercase;}#Config_ReportPrefs #Config_ReportPrefs_Preview .heading{height:6px;padding-left:3px;overflow:hidden;background-color:#333;}#Config_ReportPrefs #Config_ReportPrefs_Preview .column-heading{float:left;width:calc(33% - 4px);padding-left:2px;margin:1px 0 0 2px;}#Config_ReportPrefs #Config_ReportPrefs_Preview .column{height:100%;float:left;width:calc(33% - 2px);margin-left:2px;overflow:hidden;background:rgba(255,255,255,.2);}#Config_ReportPrefs #Config_ReportPrefs_Preview .column span{display:block;height:4px;margin:1px;background-color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-default{background:linear-gradient(to bottom,#165180,#1e6dab) left top repeat-x #1e6dab;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-default .column span.alert{background-color:#e51400;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-default-soft{background:linear-gradient(to bottom,#165180,#1e6dab) left top repeat-x #1e6dab;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-default-soft .column span.alert{background-color:#f0e277;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-green{background:linear-gradient(to bottom,#477c11,#60a917) left top repeat-x #60a917;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-green .column span.alert{background-color:#e51400;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-green-soft{background:linear-gradient(to bottom,#477c11,#60a917) left top repeat-x #60a917;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-green-soft .column span.alert{background-color:#e5cc11;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-violet{background:linear-gradient(to bottom,#80c,#a0f) left top repeat-x #a0f;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-violet .column span.alert{background-color:#e51400;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-violet-soft{background:linear-gradient(to bottom,#80c,#a0f) left top repeat-x #a0f;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-violet-soft .column span.alert{background-color:#f0e277;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-magenta{background:linear-gradient(to bottom,#a50058,#d80073) left top repeat-x #d80073;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-magenta .column span.alert{background-color:#1681b4;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-magenta-soft{background:linear-gradient(to bottom,#a50058,#d80073) left top repeat-x #d80073;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-magenta-soft .column span.alert{background-color:#85cdf0;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-crimson{background:linear-gradient(to bottom,#6f0019,#a20025) left top repeat-x #a20025;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-crimson .column span.alert{background-color:#b0cc22;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-crimson-soft{background:linear-gradient(to bottom,#6f0019,#a20025) left top repeat-x #a20025;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-crimson-soft .column span.alert{background-color:#cee077;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-amber{background:linear-gradient(to bottom,#bf8208,#f0a30a) left top repeat-x #f0a30a;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-amber .column span.alert{background-color:#0050ef;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-amber-soft{background:linear-gradient(to bottom,#bf8208,#f0a30a) left top repeat-x #f0a30a;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-amber-soft .column span.alert{background-color:#bbd0fb;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-brown{background:linear-gradient(to bottom,#5c401f,#825a2c) left top repeat-x #825a2c;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-brown .column span.alert{background-color:#e3c800;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-brown-soft{background:linear-gradient(to bottom,#5c401f,#825a2c) left top repeat-x #825a2c;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-brown-soft .column span.alert{background-color:#f0e277;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-steel{background:linear-gradient(to bottom,#4e5d6c,#647689) left top repeat-x #647689;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-steel .column span.alert{background-color:#e51400;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-steel-soft{background:linear-gradient(to bottom,#4e5d6c,#647689) left top repeat-x #647689;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-steel-soft .column span.alert{background-color:#f0e277;color:#000;}#Config_ReportPrefs_Builder .report{margin-bottom:10px;}#Config_ReportPrefs_Builder .report ul{margin-left:10px;}#Config_ReportPrefs_Builder .theme{margin-bottom:10px;}#Config_ReportPrefs_Builder .theme>select{margin-left:10px;}#Config_ReportPrefs_Builder .filter>select{margin-left:10px;}#Config_ReportPrefs_Builder .filter div.options{display:none;background-color:#fff;border:1px dashed #ccc;margin-top:4px;margin-left:15px;padding:2px 6px;}#Config_ReportPrefs_Builder .filter div.options .method{margin-top:4px;margin-bottom:8px;}#Config_ReportPrefs_Builder .filter div.options .method label{margin-right:14px;}#Config_ReportPrefs_Builder_Buttonpane{padding-right:.3em;}#Config_ReportPrefs_Builder_Buttonpane textarea{float:left;font-family:Consolas,"Courier New",monospace;color:#333;width:calc(100% - 1.2em - 10px);border:1px solid #ccc;white-space:pre;min-height:0;}#Config_ReportPrefs_Builder_Buttonpane i{float:right;cursor:pointer;margin:.3em .2em 0 0;color:#335a87;}#Config_ReportPrefs_Builder_Buttonpane i:hover{color:#5e8cc2;}#Config_ReportPrefs_Builder_Buttonpane .ui-dialog-buttonset{display:none;}#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_JobPref_Expressions{margin-top:10px;}#Config_JobPref_Expressions #OnCreateExpression,#Config_JobPref_Expressions #OnCloseExpression{height:16px;min-height:16px;overflow:hidden;font-family:Consolas,"Courier New",monospace;}#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:30px;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:4px 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_Show #UserFlag_OnAssignmentExpression,#Config_UserFlags_Show #UserFlag_OnUnassignmentExpression{height:16px;min-height:16px;overflow:hidden;font-family:Consolas,"Courier New",monospace;}#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:30px;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:4px 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:600;}#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:#fbfbfb;}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}.tableData>tbody>tr:hover>td{background-color:#f9f9f9;}.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 table.input{margin-top:12px;}#Config_LinkedGroup_Dialog table.input th{text-align:right;}#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:#fbfbfb;}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:#f9f9f9;}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:#fbfbfb;}#deviceComponents>thead>tr>th,#deviceComponents>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}#deviceComponents>tbody>tr:hover>td{background-color:#f9f9f9;}#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:600;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:600;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:600;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:374px;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:600;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:364px;}#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:600;}#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;}h1.Config_DocumentTemplates{margin:10px 0 6px;}#Config_DocumentTemplatePackages_Show>div.form>table>tbody>tr>th{width:140px;}#Config_DocumentTemplatePackages_Show #Package_FilterExpression,#Config_DocumentTemplatePackages_Show #Package_OnGenerateExpression{height:16px;min-height:16px;overflow:hidden;font-family:Consolas,"Courier New",monospace;}#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackages_Scope_Button{margin-top:4px;}#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackage_List{list-style-type:decimal;list-style-position:inside;background-color:#f2f2f2;border:1px solid #d8d8d8;}#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackage_List li{padding:6px 8px;}#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackage_List li:not(:first-child){border-top:1px dashed #d8d8d8;}#Config_DocumentTemplatePackages_Show #Config_DocumentTemplatePackage_List li .id{font-family:Consolas,"Courier New",monospace;float:right;}#Config_DocumentTemplatePackages_Scope_Dialog div.input{margin:14px 10px 20px;}#Config_DocumentTemplatePackages_JobSubTypes{border:1px dashed #d8d8d8;background-color:#fff;padding:4px;margin-top:6px;}#Config_DocumentTemplatePackages_JobSubTypes>h4{margin-bottom:4px;}#Config_DocumentTemplatePackages_JobSubTypes #Config_DocumentTemplatePackages_JobSubTypes_Update{margin-top:4px;}#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog #Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog_Types{margin:0 0 8px 0;}#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog .jobTypes{padding:6px 0;}#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog .jobTypes .jobSubTypes{background-color:#f2f2f2;border-left:4px solid #d8d8d8;padding:4px 0 4px 8px;margin:4px 0 0 6px;}#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog .checkboxBulkSelectContainer{font-size:.8em;}#Config_DocumentTemplatePackages_Templates_Dialog h3{margin-bottom:4px;}#Config_DocumentTemplatePackages_Templates_Dialog>div{width:374px;float:left;}#Config_DocumentTemplatePackages_Templates_Dialog>div:first-child{margin-right:20px;}#Config_DocumentTemplatePackages_Templates_Dialog .templates_connected{min-height:200px;}#Config_DocumentTemplatePackages_Templates_Dialog ol{list-style-type:decimal;padding-left:24px;border:1px solid #d8d8d8;background-color:#f2f2f2;}#Config_DocumentTemplatePackages_Templates_Dialog li{background-color:#fff;border:1px solid #d8d8d8;margin:4px;padding:2px 4px;-moz-box-shadow:0 0 5px rgba(209,209,209,.5);-webkit-box-shadow:0 0 5px rgba(209,209,209,.5);box-shadow:0 0 5px rgba(209,209,209,.5);cursor:default;}#Config_DocumentTemplatePackages_Templates_Dialog li:hover{background-color:#cddbec;border-color:#1e6dab;}#Config_DocumentTemplatePackages_Templates_Dialog li .id{font-family:Consolas,"Courier New",monospace;color:#888;float:right;font-size:.9em;}#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:600;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:#fbfbfb;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;max-height:700px;background-position:top center;background-repeat:no-repeat;background-size:contain;}#undetectedPageDialog .actions{border-top:1px solid #d1d1d1;padding-top:8px;margin-top:8px;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;}#pluginLibraryHeading{float:right;}#pluginLibrary #pluginLibraryGroups{width:900px;margin:0 auto;}#pluginLibrary #pluginLibraryGroups>div.form{width:50%;float:left;}#pluginLibrary #pluginLibraryGroups>div.form>table{margin:0 10px 10px 4px;width:calc(100% - 14px);}#pluginLibrary .pluginItem .pluginItemBlurb{margin:8px 0 8px 2px;padding:0 4px;border-left:4px solid #d1d1d1;}#pluginLibrary .pluginItem .pluginItemBlurb *{padding:0;margin:0;}#pluginLibrary .pluginItem .pageMenuBlurb i{font-size:.9em;}#pluginLibrary .pluginItem>h2:first-child{min-height:22px;}#pluginLibrary .pluginItem>h2:first-child i{font-size:.9em;padding-right:4px;color:#333;}#pluginLibrary .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_ReportPrefs{margin-top:10px;}#Config_ReportPrefs #Config_ReportPrefs_Preview{float:right;width:150px;height:80px;border:1px solid #444;font-size:4px;color:#fff;overflow:hidden;text-transform:uppercase;}#Config_ReportPrefs #Config_ReportPrefs_Preview .heading{height:6px;padding-left:3px;overflow:hidden;background-color:#333;}#Config_ReportPrefs #Config_ReportPrefs_Preview .column-heading{float:left;width:calc(33% - 4px);padding-left:2px;margin:1px 0 0 2px;}#Config_ReportPrefs #Config_ReportPrefs_Preview .column{height:100%;float:left;width:calc(33% - 2px);margin-left:2px;overflow:hidden;background:rgba(255,255,255,.2);}#Config_ReportPrefs #Config_ReportPrefs_Preview .column span{display:block;height:4px;margin:1px;background-color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-default{background:linear-gradient(to bottom,#165180,#1e6dab) left top repeat-x #1e6dab;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-default .column span.alert{background-color:#e51400;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-default-soft{background:linear-gradient(to bottom,#165180,#1e6dab) left top repeat-x #1e6dab;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-default-soft .column span.alert{background-color:#f0e277;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-green{background:linear-gradient(to bottom,#477c11,#60a917) left top repeat-x #60a917;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-green .column span.alert{background-color:#e51400;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-green-soft{background:linear-gradient(to bottom,#477c11,#60a917) left top repeat-x #60a917;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-green-soft .column span.alert{background-color:#e5cc11;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-violet{background:linear-gradient(to bottom,#80c,#a0f) left top repeat-x #a0f;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-violet .column span.alert{background-color:#e51400;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-violet-soft{background:linear-gradient(to bottom,#80c,#a0f) left top repeat-x #a0f;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-violet-soft .column span.alert{background-color:#f0e277;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-magenta{background:linear-gradient(to bottom,#a50058,#d80073) left top repeat-x #d80073;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-magenta .column span.alert{background-color:#1681b4;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-magenta-soft{background:linear-gradient(to bottom,#a50058,#d80073) left top repeat-x #d80073;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-magenta-soft .column span.alert{background-color:#85cdf0;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-crimson{background:linear-gradient(to bottom,#6f0019,#a20025) left top repeat-x #a20025;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-crimson .column span.alert{background-color:#b0cc22;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-crimson-soft{background:linear-gradient(to bottom,#6f0019,#a20025) left top repeat-x #a20025;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-crimson-soft .column span.alert{background-color:#cee077;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-amber{background:linear-gradient(to bottom,#bf8208,#f0a30a) left top repeat-x #f0a30a;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-amber .column span.alert{background-color:#0050ef;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-amber-soft{background:linear-gradient(to bottom,#bf8208,#f0a30a) left top repeat-x #f0a30a;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-amber-soft .column span.alert{background-color:#bbd0fb;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-brown{background:linear-gradient(to bottom,#5c401f,#825a2c) left top repeat-x #825a2c;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-brown .column span.alert{background-color:#e3c800;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-brown-soft{background:linear-gradient(to bottom,#5c401f,#825a2c) left top repeat-x #825a2c;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-brown-soft .column span.alert{background-color:#f0e277;color:#000;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-steel{background:linear-gradient(to bottom,#4e5d6c,#647689) left top repeat-x #647689;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-steel .column span.alert{background-color:#e51400;color:#fff;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-steel-soft{background:linear-gradient(to bottom,#4e5d6c,#647689) left top repeat-x #647689;}#Config_ReportPrefs #Config_ReportPrefs_Preview.theme-steel-soft .column span.alert{background-color:#f0e277;color:#000;}#Config_ReportPrefs_Builder .report{margin-bottom:10px;}#Config_ReportPrefs_Builder .report ul{margin-left:10px;}#Config_ReportPrefs_Builder .theme{margin-bottom:10px;}#Config_ReportPrefs_Builder .theme>select{margin-left:10px;}#Config_ReportPrefs_Builder .filter>select{margin-left:10px;}#Config_ReportPrefs_Builder .filter div.options{display:none;background-color:#fff;border:1px dashed #ccc;margin-top:4px;margin-left:15px;padding:2px 6px;}#Config_ReportPrefs_Builder .filter div.options .method{margin-top:4px;margin-bottom:8px;}#Config_ReportPrefs_Builder .filter div.options .method label{margin-right:14px;}#Config_ReportPrefs_Builder_Buttonpane{padding-right:.3em;}#Config_ReportPrefs_Builder_Buttonpane textarea{float:left;font-family:Consolas,"Courier New",monospace;color:#333;width:calc(100% - 1.2em - 10px);border:1px solid #ccc;white-space:pre;min-height:0;}#Config_ReportPrefs_Builder_Buttonpane i{float:right;cursor:pointer;margin:.3em .2em 0 0;color:#335a87;}#Config_ReportPrefs_Builder_Buttonpane i:hover{color:#5e8cc2;}#Config_ReportPrefs_Builder_Buttonpane .ui-dialog-buttonset{display:none;}#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_JobPref_Expressions{margin-top:10px;}#Config_JobPref_Expressions #OnCreateExpression,#Config_JobPref_Expressions #OnCloseExpression{height:16px;min-height:16px;overflow:hidden;font-family:Consolas,"Courier New",monospace;}#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:30px;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:4px 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_Show #UserFlag_OnAssignmentExpression,#Config_UserFlags_Show #UserFlag_OnUnassignmentExpression{height:16px;min-height:16px;overflow:hidden;font-family:Consolas,"Courier New",monospace;}#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:30px;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:4px 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:600;}#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/ClientSource/Style/Site.css b/Disco.Web/ClientSource/Style/Site.css index 0a138857..30e414b6 100644 --- a/Disco.Web/ClientSource/Style/Site.css +++ b/Disco.Web/ClientSource/Style/Site.css @@ -1004,12 +1004,14 @@ button.button:hover { border: 1px solid #6b6b6b; background: #9e9e9e; } -ul.none { +ul.none, +ol.none { list-style: none; margin: 0; padding: 0; } -ul.none li { +ul.none li, +ol.none li { margin: 0; } div.form { diff --git a/Disco.Web/ClientSource/Style/Site.less b/Disco.Web/ClientSource/Style/Site.less index 7f9bd322..99f8f21a 100644 --- a/Disco.Web/ClientSource/Style/Site.less +++ b/Disco.Web/ClientSource/Style/Site.less @@ -978,7 +978,7 @@ input[type="submit"], button { } } -ul.none { +ul.none, ol.none { list-style: none; margin: 0; padding: 0; diff --git a/Disco.Web/ClientSource/Style/Site.min.css b/Disco.Web/ClientSource/Style/Site.min.css index 3170f5b3..8c3ed3cd 100644 --- a/Disco.Web/ClientSource/Style/Site.min.css +++ b/Disco.Web/ClientSource/Style/Site.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:#fbfbfb;}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}.tableData>tbody>tr:hover>td{background-color:#f9f9f9;}.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;}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333;}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px;}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto;}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px;}header #heading,#header #heading{float:left;height:34px;}header #heading i,#header #heading i{display:block;height:34px;width:34px;background-image:url(data:image/png;base64,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);}header nav,#header nav{float:left;height:34px;padding:0;margin:0;}header nav ul#menu,#header nav ul#menu{height:26px;padding:0;margin:8px 0 0 4px;list-style:none;z-index:100000;font-size:0;line-height:0;}header nav ul#menu>li,#header nav ul#menu>li{display:inline-block;z-index:100000;font-size:13.2px;line-height:19.2px;}header nav ul#menu>li.moveRight,#header nav ul#menu>li.moveRight{margin-left:20px;}header nav ul#menu>li>a,#header nav ul#menu>li>a{display:inline-block;padding:2px 10px 4px 10px;height:20px;color:#fff;font-weight:400;text-transform:uppercase;text-decoration:none;}header nav ul#menu>li>a:active,#header nav ul#menu>li>a:active{text-decoration:none;}header nav ul#menu>li.active>a,#header nav ul#menu>li.active>a{background-color:#222;}header nav ul#menu>li:hover>a,#header nav ul#menu>li:hover>a{background-color:#111;text-decoration:none;}header nav ul#menu>li>ul,#header nav ul#menu>li>ul{z-index:100000;display:none;list-style:none;position:absolute;margin:0;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;background-color:#f2f2f2;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5);}header nav ul#menu>li>ul li,#header nav ul#menu>li>ul li{position:relative;background-position:top;background-repeat:repeat-x;border-top:1px solid #e6e6e6;}header nav ul#menu>li>ul li:first-child,#header nav ul#menu>li>ul li:first-child{border-top:1px solid #d1d1d1;}header nav ul#menu>li>ul li:last-child,#header nav ul#menu>li>ul li:last-child{border-bottom:1px solid #d1d1d1;}header nav ul#menu>li>ul li:hover,#header nav ul#menu>li>ul li:hover{border-top:1px solid #d9d9d9;background-color:#e6e6e6;}header nav ul#menu>li>ul li a,#header nav ul#menu>li>ul li a{display:block;color:#000;padding:4px 8px;text-decoration:none;}header nav ul#menu>li>ul li a:hover,#header nav ul#menu>li>ul li a:hover{color:#335a87;text-decoration:none;}header nav ul#menu>li>ul li a:active,#header nav ul#menu>li>ul li a:active{text-decoration:none;}header nav ul#menu>li>ul li i.fa-caret-right,#header nav ul#menu>li>ul li i.fa-caret-right{cursor:pointer;color:#666;font-size:16px;position:absolute;display:block;right:12px;top:7px;}header nav ul#menu>li>ul li:hover i.fa-caret-right,#header nav ul#menu>li>ul li:hover i.fa-caret-right{color:#333;}header nav ul#menu>li>ul ul,#header nav ul#menu>li>ul ul{display:none;list-style:none;position:absolute;top:-1px;left:180px;background-color:#f2f2f2;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5);}header #headerMenu,#header #headerMenu{float:right;height:24px;padding:5px 8px;font-size:.9em;line-height:24px;text-align:right;color:#fff;}header #headerMenu a,#header #headerMenu a{color:#fff;text-decoration:none;}header #headerMenu a:hover,#header #headerMenu a:hover{color:#cddbec;text-decoration:none;}header #SearchQuery,#header #SearchQuery{font-size:.9em;margin-left:6px;width:130px;background-color:#eee;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s;}header #SearchQuery:hover,#header #SearchQuery:hover,header #SearchQuery:focus,#header #SearchQuery:focus{background-color:#fff;width:190px;}header .watermark,#header .watermark{background-color:#888;}#QuickSearchMenu{max-height:400px;font-size:.9em;background:none;background-color:#fafafa;}#QuickSearchMenu li:not(:last-child){border-bottom:1px solid #d8d8d8;}#QuickSearchMenu li>a{padding:2px;}#QuickSearchMenu li>a>i{margin-right:2px;}#QuickSearchMenu li>a>div{padding-left:1.2857142857142858em;margin-left:2px;}#layout_PageHeading{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) left top repeat-x #fff;background:linear-gradient(to bottom,#f2f2f2 0,#fff 50px) #fff;height:50px;padding:6px 20px 4px 20px;font-size:2em;color:#000;line-height:50px;position:relative;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;}#layout_PageHeading a{text-decoration:none;}#layout_PageHeading>a.button{position:absolute;right:30px;bottom:8px;font-size:.5em;line-height:1em;text-align:right;}#layout_Page{background-color:#fff;overflow:auto;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;padding:0 30px 15px 30px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}#layout_Error{min-height:200px;}#layout_Error table{background-color:#fff;}#layout_Error h1,#layout_Error h2,#layout_Error h3,#layout_Error h4,#layout_Error h5{color:#fff;white-space:pre-wrap;}#layout_Error h2.error{margin-bottom:10px;}#layout_Error .stacktrace{white-space:pre;overflow:auto;}#layout_Error>div{margin:0 auto;width:650px;}#layout_uiExtensions{display:none;}footer,#footer{color:#777;padding:10px 0;text-align:center;margin:0;font-size:.9em;}footer a:link,#footer a:link,footer a:visited,#footer a:visited,footer a:active,#footer a:active{color:#777;}footer a:link,#footer a:link,footer a:active,#footer a:active{text-decoration:underline;}footer a:hover,#footer a:hover{color:#5e8cc2;text-decoration:none;}p{margin:0 0 2px 0;line-height:1.6em;}ul{margin:0;padding:0 0 0 25px;list-style:square;line-height:1.6em;}header,footer,nav,section{display:block;}form{display:inline;}img{border:none;padding:0;margin:0;vertical-align:bottom;}code{font-family:Consolas,"Courier New",monospace;}hr{border:none;border-bottom:1px dashed #aaa;margin-top:15px;}strong{font-weight:600;}a:link{color:#335a87;text-decoration:none;}a:visited{color:#335a87;}a:hover{color:#5e8cc2;text-decoration:underline;}a:active{color:#335a87;}a[disabled]{color:#6b6b6b;text-decoration:none;cursor:default;}a.button{display:inline-block;padding:4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer;white-space:nowrap;text-decoration:none;}a.button[disabled],a.button.disabled{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default;}a.button.alert{border-color:#900;background-color:#e51400;}a.button.small{padding:2px 5px;font-size:.9em;}a.button:hover{border:1px solid #6b6b6b;background:#9e9e9e;}a.button i{margin-right:10px;}div.actionBar{margin:0 -30px 0 -30px;padding:10px;border-top:1px solid #d1d1d1;text-align:right;background-color:#f2f2f2;clear:both;}div.actionBar:not(:first-child){margin-top:10px;}div.actionBar:last-child{margin-bottom:-15px;-moz-border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}h1,h2,h3,h4,h5,h6{color:#000;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-weight:lighter;font-stretch:condensed;margin:0;}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0 !important;padding-top:0 !important;}h1>a:link,h2>a:link,h3>a:link,h4>a:link,h5>a:link,h6>a:link{text-decoration:none;}h1{font-size:24px;}h2{font-size:20px;padding:8px 0 4px 0;}h3{font-size:18px;}h4{font-size:14px;}h5,h6{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-stretch:normal;font-weight:600;}table{border:none;border-collapse:collapse;width:100%;}table td{padding:5px;margin:0;border:none;vertical-align:top;}table th{padding:5px;margin:0;text-align:left;font-weight:600;vertical-align:top;}table.none{border:none !important;}table.none tr,table.none td,table.none th{padding:0 !important;margin:0 !important;background:none !important;border:none !important;}table.genericData{border:solid 1px #f4f4f4;border-collapse:collapse;}table.genericData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}table.genericData>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}table.genericData>thead>tr>th,table.genericData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}table.genericData>tbody>tr:hover>td{background-color:#f9f9f9;}table.genericData>tfoot>tr>th,table.genericData>tfoot>tr>td{background-color:#f4f4f4;}table.genericData td.id{text-align:center;}table.genericData td.id a{padding:0 6px;}.smallTable th,.smallTable td{font-size:.9em;}.dataTables_wrapper{position:relative;}.dataTables_wrapper .dataTables_filter{position:absolute;height:20px;margin-top:-20px;right:0;font-size:.9em;-moz-opacity:.3;opacity:.3;}.dataTables_wrapper .dataTables_filter input{font-size:.95em;padding:0;height:1.4em;width:150px;}.dataTables_wrapper .dataTables_length{position:absolute;height:20px;margin-top:-20px;right:200px;font-size:.9em;-moz-opacity:.3;opacity:.3;}.dataTables_wrapper .dataTables_length select{font-size:.95em;padding:0;height:1.4em;}.dataTables_wrapper .dataTables_paginate{text-align:right;background-color:#f4f4f4;padding:2px 4px;font-size:.9em;}.dataTables_wrapper .dataTables_paginate a{cursor:pointer;padding:2px;margin:0 3px;color:#335a87;background-repeat:no-repeat;-moz-opacity:.3;opacity:.3;text-transform:uppercase;}.dataTables_wrapper .dataTables_paginate .first{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQALGUe0SQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAAYqTAY6Jng6AAAAAElFTkSuQmCC);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .first.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQAKxsbESQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAEm8TIFT3+fIAAAAAElFTkSuQmCC);}.dataTables_wrapper .dataTables_paginate .previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .previous.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .next.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .last{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12Mwjmr/D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAABJ/EwGJKVDGAAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .last.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12OIjY39D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAACQykyB48rZCQAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .paginate_active{font-weight:600;color:#1e6dab;}.dataTables_wrapper .dataTables_paginate .paginate_button_disabled{color:#ccc;cursor:default;}.dataTables_wrapper .dataTables_paginate .paginate_enabled_previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .paginate_disabled_previous{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .paginate_enabled_next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .paginate_disabled_next{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper:hover .dataTables_filter,.dataTables_wrapper:hover .dataTables_length,.dataTables_wrapper:hover .dataTables_paginate a{-moz-opacity:1;opacity:1;}.dataTables_wrapper table>thead tr>th{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAD6CAYAAACoLMeFAAAAdElEQVRo3u3bOwqAMBAFwBwjh/CUluKRhfVTiil0UYjMwJLqLfmUYUuBtw3jUreKfc2E43aTi/C9Jo3wUR4WAAAAAAAAejBPc90q9jUTjkdNTuGjPj9/bgfpO0i/AgAAAAAAAPQnPZ6YHpBsNEnNefrt4+9Wmn6nW/cZ1MQAAAAASUVORK5CYII=);background-repeat:no-repeat;}.dataTables_wrapper table>thead tr>th.sorting{background-position:right center;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_desc{background-position:right bottom;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_asc{background-position:right top;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_disabled{background-image:none;}table.userTable div.flags{display:inline-block;float:right;}table.userTable div.flags>i{cursor:default;}table.userTable div.flags>i>.details{display:none;}.jobStatus{color:#333;}.jobStatus.Closed{color:#9e9e9e;}.jobStatus.Open{color:#60a917;}.jobStatus.AwaitingWarrantyRepair,.jobStatus.AwaitingRepairs{color:#1e6dab;}.jobStatus.AwaitingDeviceReturn,.jobStatus.AwaitingUserAction,.jobStatus.AwaitingAccountingPayment,.jobStatus.AwaitingAccountingCharge{color:#f0a30a;}.jobStatus.AwaitingInsuranceProcessing{color:#6a00ff;}.deviceStatus{color:#333;}.deviceStatus.Decommissioned{color:#9e9e9e;}.deviceStatus.Active{color:#60a917;}.deviceStatus.NotEnrolled{color:#f0a30a;}table.jobTable{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed;}table.jobTable>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}table.jobTable>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}table.jobTable>thead>tr>th,table.jobTable>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}table.jobTable>tbody>tr:hover>td{background-color:#f9f9f9;}table.jobTable>tfoot>tr>th,table.jobTable>tfoot>tr>td{background-color:#f4f4f4;}table.jobTable td{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;}table.jobTable.hideStatusClosed tr[data-status=Closed]{display:none;}table.jobTable td.id,table.jobTable th.id{width:50px;text-align:center;}table.jobTable td.id a,table.jobTable th.id a{padding:0 6px;}table.jobTable tr.statusSlaWarning td{background-color:#fdeed1;}table.jobTable tr.statusSlaWarning td:not(:last-child){border-right:1px solid #f8e9cb;}table.jobTable tr.statusSlaExpired td{background-color:#ffd7d3;}table.jobTable tr.statusSlaExpired td:not(:last-child){border-right:1px solid #fad2ce;}table.jobTable tr:nth-child(odd).statusSlaWarning td{background-color:#fbeccf !important;}table.jobTable tr:nth-child(odd).statusSlaExpired td{background-color:#fdd5d1 !important;}table.jobTable tr:hover.statusSlaWarning td{background-color:#fbeaca !important;}table.jobTable tr:hover.statusSlaExpired td{background-color:#fdd1cd !important;}table.jobTable div.queues{display:inline-block;float:right;}table.jobTable td.lastActive,table.jobTable th.lastActive{width:130px;}table.jobTable td.dates,table.jobTable th.dates{width:130px;}table.jobTable td.type,table.jobTable th.type{width:50px;}table.jobTable td.device,table.jobTable th.device{width:110px;}table.jobTable td.user,table.jobTable th.user{width:240px;}table.jobTable td.technician,table.jobTable th.technician{width:80px;}table.jobTable td.location,table.jobTable th.location{width:200px;}div.jobTable>a.dataTables_showStatusClosed{margin:10px 5px;}div.jobTable>h3,div.jobTable>div.allClosed_container{margin:50px 20px !important;}div.jobTable>h3 a.button,div.jobTable>div.allClosed_container a.button{margin-top:10px;}table.deviceTable tr.decommissioned{background-color:#ededed;}textarea{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;min-height:75px;padding:2px;color:#444;width:200px;}input[type="text"],input[type="password"],input[type="file"],input[type="number"]{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;padding:2px;color:#444;width:200px;}input[type="text"].small,input[type="password"].small,input[type="file"].small,input[type="number"].small{padding:0 2px;width:150px;}input[type="text"].discreet,input[type="password"].discreet,input[type="file"].discreet,input[type="number"].discreet{border:1px solid #fff;}input[type="text"].discreet:hover,input[type="password"].discreet:hover,input[type="file"].discreet:hover,input[type="number"].discreet:hover,input[type="text"].discreet:focus,input[type="password"].discreet:focus,input[type="file"].discreet:focus,input[type="number"].discreet:focus{border:1px solid #ccc;}input[type="checkbox"],input[type="radio"]{margin-right:4px;vertical-align:sub;}select{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:12px;border:1px solid #ccc;padding:2px;color:#444;}select.small{padding:0;}input[type="submit"],button{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;padding:5px;}input[type="submit"].button,button.button{font-size:12px;padding:4px 10px 4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer;}input[type="submit"].button.alert,button.button.alert{border-color:#900;background-color:#e51400;}input[type="submit"].button.small,button.button.small{padding:2px 5px;font-size:.9em;}input[type="submit"].button[disabled],button.button[disabled]{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default;}input[type="submit"].button:hover,button.button:hover{border:1px solid #6b6b6b;background:#9e9e9e;}ul.none{list-style:none;margin:0;padding:0;}ul.none li{margin:0;}div.form{margin:0 auto;}div.form>p.actions{text-align:right;}div.form>table{border-top:6px solid #1e6dab;border-left:1px solid #1e6dab;border-right:1px solid #1e6dab;border-bottom:3px solid #1e6dab;background-color:#fff;}div.form>table>tbody>tr>td,div.form>table>tbody>tr>th{background:none;border:none;margin:0;padding:8px 5px;}div.form>table>tbody>tr>th{font-weight:normal;text-align:right;}div.form>table>tbody>tr:nth-child(odd){background-color:#f2f2f2;margin:0;padding:0;}div.form>table>tbody>tr>td.details{padding:0;}div.form>table>tbody>tr>th.name{width:150px;text-align:right;}div.form>table table.sub>tbody>tr:not(:first-child)>th,div.form>table table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa;}div.form>table table.sub>tbody>tr>th{font-weight:normal;text-align:right;}div.form>table table.sub>tbody>tr>th.name{text-align:right;}#pageMenu td{border-right:1px dashed #aaa;width:33%;padding:10px;}#pageMenu td .pageMenuArea>.fa{font-size:1.3em;color:#6b6b6b;margin-right:4px;}#pageMenu td .pageMenuArea>a,#pageMenu td .pageMenuArea>h3{text-decoration:none;font-size:1.2em;}#pageMenu td .pageMenuArea .pageMenuBlurb{font-size:.9em;color:#888;margin-bottom:10px;}#pageMenu td .pageMenuArea .pageMenuBlurb a{text-decoration:none;}#pageMenu td .pageMenuArea:not(:last-child){border-bottom:1px dashed #aaa;}#pageMenu td .pageMenuArea.noSeperator{border-bottom:none;}#pageMenu td:first-child{padding-left:0;}#pageMenu td:last-child{border-right:none;padding-right:0;}div.info-box{margin:.4em 0;padding:.4em;border:1px solid #fff397;background-color:#fffef7;}div.info-box i{color:#1e6dab;}div.info-box.alert{border:1px solid #fa6800;background-color:#fff9f5;color:#333;}div.info-box.alert i{color:#fa6800;}div.info-box.error{border:1px solid #e51400;background-color:#fffaf9;color:#e51400;}div.info-box.error i{color:#e51400;}div.info-box p{line-height:1.2em;}p.fa-p{text-indent:-1.48em;margin-left:1.48em;}p.fa-p>i:first-child{text-indent:0;width:1.28em;margin-right:.2em;}div.Disco-AttachmentUpload-DropTarget{display:none;}div.Disco-AttachmentUpload-DropTarget.dragHighlight{display:block;position:absolute;z-index:1000;top:0;left:0;width:calc(100% - 6px);height:calc(100% - 6px);background-color:rgba(251,218,152,.5);border:3px dashed #f0a30a;}div.Disco-AttachmentUpload-DropTarget.dragHighlight h2{margin-top:3em !important;color:#2c1e02;text-align:center;font-weight:600;}div.Disco-AttachmentUpload-DropTarget.dragHighlight.dragHover{background-color:rgba(173,235,110,.5);border:3px dashed #60a917;}div.Disco-AttachmentUpload-DropTarget.dragHighlight.dragHover h2{color:#000;}div.Disco-AttachmentUpload-Progress{position:absolute;right:0;bottom:48px;}div.Disco-AttachmentUpload-Progress>div{background-color:#fafafa;padding:4px 8px;}div.Disco-AttachmentUpload-Progress>div i{color:#1e6dab;margin-right:4px;}div.Disco-AttachmentUpload-CommentDialog{padding:.25em .5em !important;}div.Disco-AttachmentUpload-CommentDialog table{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}div.Disco-AttachmentUpload-CommentDialog table>thead>tr>th,div.Disco-AttachmentUpload-CommentDialog table>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr:hover>td{background-color:#f9f9f9;}div.Disco-AttachmentUpload-CommentDialog table>tfoot>tr>th,div.Disco-AttachmentUpload-CommentDialog table>tfoot>tr>td{background-color:#f4f4f4;}div.Disco-AttachmentUpload-CommentDialog table th{width:80px;}div.Disco-AttachmentUpload-CommentDialog table td.filename{font-family:Consolas,"Courier New",monospace;white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;}div.Disco-AttachmentUpload-CommentDialog table input.comments{width:calc(100% - 5px);}div.Disco-AttachmentUpload-CommentDialog table td.thumbnail{display:none;text-align:center;}div.Disco-AttachmentUpload-CommentDialog table td.thumbnail img{border:1px solid #9e9e9e;max-height:250px;max-width:374px;}div.Disco-AttachmentUpload-ImageDialog{background-color:#000 !important;padding:0 !important;overflow:hidden !important;width:720px !important;height:540px !important;}body>.User_FlagAssignment_Tooltip span.name{display:block;font-weight:600;}body>.User_FlagAssignment_Tooltip span.comments{display:block;padding:2px 0 2px 4px;}body>.User_FlagAssignment_Tooltip span.added{font-style:italic;font-size:.9em;}.d-priority-high{color:#fa6800;width:1.2857142857142858em;text-align:center;}.d-priority-high:before{content:"";}.d-priority-normal{color:#60a917;width:1.2857142857142858em;text-align:center;}.d-priority-normal:before{content:"";}.d-priority-low{color:#1e6dab;width:1.2857142857142858em;text-align:center;}.d-priority-low:before{content:"";}.fa-stack .d-priority-high,.fa-stack .d-priority-normal,.fa-stack .d-priority-low{width:100%;font-size:.8em;margin-left:.5em;margin-top:.4em;opacity:.6;}.d-lime{color:#a4c400;}.d-green{color:#60a917;}.d-emerald{color:#008a00;}.d-teal{color:#00aba9;}.d-cyan{color:#1ba1e2;}.d-cobalt{color:#0050ef;}.d-indigo{color:#6a00ff;}.d-violet{color:#a0f;}.d-pink{color:#f472d0;}.d-magenta{color:#d80073;}.d-crimson{color:#a20025;}.d-red{color:#e51400;}.d-orange{color:#fa6800;}.d-amber{color:#f0a30a;}.d-yellow{color:#e3c800;}.d-brown{color:#825a2c;}.d-olive{color:#6d8764;}.d-steel{color:#647689;}.d-mauve{color:#76608a;}.d-sienna{color:#a0522d;}table.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}td.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.field-validation-error{color:#e51400 !important;}.field-validation-valid{display:none;}.input-validation-error{border:1px solid #e51400 !important;background-color:#fff7f7 !important;}.validation-summary-errors{font-weight:bold !important;color:#e51400 !important;}.validation-summary-valid{display:none;}.ajaxLoading{height:11px;width:16px;display:inline-block;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);margin-bottom:0;}.ajaxOk{color:#60a917;}.ajaxSave{color:#1e6dab;cursor:pointer;}.ajaxRemove{color:#e51400;cursor:pointer;opacity:.8;}.ajaxRemove:hover{opacity:1;}#layout_Page div.hiddenDialog{display:none;}* html .clearfix{height:1%;overflow:visible;}*+html .clearfix{min-height:1%;}.clearfix:after{clear:both;content:".";display:block;height:0;visibility:hidden;font-size:0;}div.columnHost .column50{float:left;width:50%;}.hidden{display:none;}.success{color:#60a917;}.information{color:#1e6dab;}.warning{color:#f0a30a;}.error{color:#e51400;}.alert{color:#fa6800;}.smallText{font-size:.9em;}.smallMessage{font-style:italic;color:#666;font-size:.9em;}.nowrap{white-space:nowrap;}.code{font-family:Consolas,"Courier New",monospace;}div.code{border:1px dashed #bbb;background-color:#fff;margin:3px 6px;padding:4px;font-size:.9em;}a.smallLink{font-size:.9em;}textarea.block{width:250px;height:100px;}.checkboxBulkSelectContainer{margin-top:6px;font-size:.8em;}.checkboxBulkSelectContainer a{text-decoration:none;}.ui-widget .checkboxBulkSelectContainer{font-size:1em;}#licence{text-align:justify;}#licence p{font-size:.9em;line-height:1.6em;margin-bottom:1em;}#licence li{font-size:.9em;} \ 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:#fbfbfb;}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}.tableData>tbody>tr:hover>td{background-color:#f9f9f9;}.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;}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333;}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px;}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto;}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px;}header #heading,#header #heading{float:left;height:34px;}header #heading i,#header #heading i{display:block;height:34px;width:34px;background-image:url(data:image/png;base64,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);}header nav,#header nav{float:left;height:34px;padding:0;margin:0;}header nav ul#menu,#header nav ul#menu{height:26px;padding:0;margin:8px 0 0 4px;list-style:none;z-index:100000;font-size:0;line-height:0;}header nav ul#menu>li,#header nav ul#menu>li{display:inline-block;z-index:100000;font-size:13.2px;line-height:19.2px;}header nav ul#menu>li.moveRight,#header nav ul#menu>li.moveRight{margin-left:20px;}header nav ul#menu>li>a,#header nav ul#menu>li>a{display:inline-block;padding:2px 10px 4px 10px;height:20px;color:#fff;font-weight:400;text-transform:uppercase;text-decoration:none;}header nav ul#menu>li>a:active,#header nav ul#menu>li>a:active{text-decoration:none;}header nav ul#menu>li.active>a,#header nav ul#menu>li.active>a{background-color:#222;}header nav ul#menu>li:hover>a,#header nav ul#menu>li:hover>a{background-color:#111;text-decoration:none;}header nav ul#menu>li>ul,#header nav ul#menu>li>ul{z-index:100000;display:none;list-style:none;position:absolute;margin:0;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;background-color:#f2f2f2;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5);}header nav ul#menu>li>ul li,#header nav ul#menu>li>ul li{position:relative;background-position:top;background-repeat:repeat-x;border-top:1px solid #e6e6e6;}header nav ul#menu>li>ul li:first-child,#header nav ul#menu>li>ul li:first-child{border-top:1px solid #d1d1d1;}header nav ul#menu>li>ul li:last-child,#header nav ul#menu>li>ul li:last-child{border-bottom:1px solid #d1d1d1;}header nav ul#menu>li>ul li:hover,#header nav ul#menu>li>ul li:hover{border-top:1px solid #d9d9d9;background-color:#e6e6e6;}header nav ul#menu>li>ul li a,#header nav ul#menu>li>ul li a{display:block;color:#000;padding:4px 8px;text-decoration:none;}header nav ul#menu>li>ul li a:hover,#header nav ul#menu>li>ul li a:hover{color:#335a87;text-decoration:none;}header nav ul#menu>li>ul li a:active,#header nav ul#menu>li>ul li a:active{text-decoration:none;}header nav ul#menu>li>ul li i.fa-caret-right,#header nav ul#menu>li>ul li i.fa-caret-right{cursor:pointer;color:#666;font-size:16px;position:absolute;display:block;right:12px;top:7px;}header nav ul#menu>li>ul li:hover i.fa-caret-right,#header nav ul#menu>li>ul li:hover i.fa-caret-right{color:#333;}header nav ul#menu>li>ul ul,#header nav ul#menu>li>ul ul{display:none;list-style:none;position:absolute;top:-1px;left:180px;background-color:#f2f2f2;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5);}header #headerMenu,#header #headerMenu{float:right;height:24px;padding:5px 8px;font-size:.9em;line-height:24px;text-align:right;color:#fff;}header #headerMenu a,#header #headerMenu a{color:#fff;text-decoration:none;}header #headerMenu a:hover,#header #headerMenu a:hover{color:#cddbec;text-decoration:none;}header #SearchQuery,#header #SearchQuery{font-size:.9em;margin-left:6px;width:130px;background-color:#eee;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s;}header #SearchQuery:hover,#header #SearchQuery:hover,header #SearchQuery:focus,#header #SearchQuery:focus{background-color:#fff;width:190px;}header .watermark,#header .watermark{background-color:#888;}#QuickSearchMenu{max-height:400px;font-size:.9em;background:none;background-color:#fafafa;}#QuickSearchMenu li:not(:last-child){border-bottom:1px solid #d8d8d8;}#QuickSearchMenu li>a{padding:2px;}#QuickSearchMenu li>a>i{margin-right:2px;}#QuickSearchMenu li>a>div{padding-left:1.2857142857142858em;margin-left:2px;}#layout_PageHeading{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) left top repeat-x #fff;background:linear-gradient(to bottom,#f2f2f2 0,#fff 50px) #fff;height:50px;padding:6px 20px 4px 20px;font-size:2em;color:#000;line-height:50px;position:relative;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;}#layout_PageHeading a{text-decoration:none;}#layout_PageHeading>a.button{position:absolute;right:30px;bottom:8px;font-size:.5em;line-height:1em;text-align:right;}#layout_Page{background-color:#fff;overflow:auto;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;padding:0 30px 15px 30px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}#layout_Error{min-height:200px;}#layout_Error table{background-color:#fff;}#layout_Error h1,#layout_Error h2,#layout_Error h3,#layout_Error h4,#layout_Error h5{color:#fff;white-space:pre-wrap;}#layout_Error h2.error{margin-bottom:10px;}#layout_Error .stacktrace{white-space:pre;overflow:auto;}#layout_Error>div{margin:0 auto;width:650px;}#layout_uiExtensions{display:none;}footer,#footer{color:#777;padding:10px 0;text-align:center;margin:0;font-size:.9em;}footer a:link,#footer a:link,footer a:visited,#footer a:visited,footer a:active,#footer a:active{color:#777;}footer a:link,#footer a:link,footer a:active,#footer a:active{text-decoration:underline;}footer a:hover,#footer a:hover{color:#5e8cc2;text-decoration:none;}p{margin:0 0 2px 0;line-height:1.6em;}ul{margin:0;padding:0 0 0 25px;list-style:square;line-height:1.6em;}header,footer,nav,section{display:block;}form{display:inline;}img{border:none;padding:0;margin:0;vertical-align:bottom;}code{font-family:Consolas,"Courier New",monospace;}hr{border:none;border-bottom:1px dashed #aaa;margin-top:15px;}strong{font-weight:600;}a:link{color:#335a87;text-decoration:none;}a:visited{color:#335a87;}a:hover{color:#5e8cc2;text-decoration:underline;}a:active{color:#335a87;}a[disabled]{color:#6b6b6b;text-decoration:none;cursor:default;}a.button{display:inline-block;padding:4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer;white-space:nowrap;text-decoration:none;}a.button[disabled],a.button.disabled{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default;}a.button.alert{border-color:#900;background-color:#e51400;}a.button.small{padding:2px 5px;font-size:.9em;}a.button:hover{border:1px solid #6b6b6b;background:#9e9e9e;}a.button i{margin-right:10px;}div.actionBar{margin:0 -30px 0 -30px;padding:10px;border-top:1px solid #d1d1d1;text-align:right;background-color:#f2f2f2;clear:both;}div.actionBar:not(:first-child){margin-top:10px;}div.actionBar:last-child{margin-bottom:-15px;-moz-border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}h1,h2,h3,h4,h5,h6{color:#000;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-weight:lighter;font-stretch:condensed;margin:0;}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0 !important;padding-top:0 !important;}h1>a:link,h2>a:link,h3>a:link,h4>a:link,h5>a:link,h6>a:link{text-decoration:none;}h1{font-size:24px;}h2{font-size:20px;padding:8px 0 4px 0;}h3{font-size:18px;}h4{font-size:14px;}h5,h6{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-stretch:normal;font-weight:600;}table{border:none;border-collapse:collapse;width:100%;}table td{padding:5px;margin:0;border:none;vertical-align:top;}table th{padding:5px;margin:0;text-align:left;font-weight:600;vertical-align:top;}table.none{border:none !important;}table.none tr,table.none td,table.none th{padding:0 !important;margin:0 !important;background:none !important;border:none !important;}table.genericData{border:solid 1px #f4f4f4;border-collapse:collapse;}table.genericData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}table.genericData>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}table.genericData>thead>tr>th,table.genericData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}table.genericData>tbody>tr:hover>td{background-color:#f9f9f9;}table.genericData>tfoot>tr>th,table.genericData>tfoot>tr>td{background-color:#f4f4f4;}table.genericData td.id{text-align:center;}table.genericData td.id a{padding:0 6px;}.smallTable th,.smallTable td{font-size:.9em;}.dataTables_wrapper{position:relative;}.dataTables_wrapper .dataTables_filter{position:absolute;height:20px;margin-top:-20px;right:0;font-size:.9em;-moz-opacity:.3;opacity:.3;}.dataTables_wrapper .dataTables_filter input{font-size:.95em;padding:0;height:1.4em;width:150px;}.dataTables_wrapper .dataTables_length{position:absolute;height:20px;margin-top:-20px;right:200px;font-size:.9em;-moz-opacity:.3;opacity:.3;}.dataTables_wrapper .dataTables_length select{font-size:.95em;padding:0;height:1.4em;}.dataTables_wrapper .dataTables_paginate{text-align:right;background-color:#f4f4f4;padding:2px 4px;font-size:.9em;}.dataTables_wrapper .dataTables_paginate a{cursor:pointer;padding:2px;margin:0 3px;color:#335a87;background-repeat:no-repeat;-moz-opacity:.3;opacity:.3;text-transform:uppercase;}.dataTables_wrapper .dataTables_paginate .first{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQALGUe0SQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAAYqTAY6Jng6AAAAAElFTkSuQmCC);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .first.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQAKxsbESQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAEm8TIFT3+fIAAAAAElFTkSuQmCC);}.dataTables_wrapper .dataTables_paginate .previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .previous.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .next.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .last{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12Mwjmr/D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAABJ/EwGJKVDGAAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .last.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12OIjY39D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAACQykyB48rZCQAAAABJRU5ErkJggg==);}.dataTables_wrapper .dataTables_paginate .paginate_active{font-weight:600;color:#1e6dab;}.dataTables_wrapper .dataTables_paginate .paginate_button_disabled{color:#ccc;cursor:default;}.dataTables_wrapper .dataTables_paginate .paginate_enabled_previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .paginate_disabled_previous{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px;}.dataTables_wrapper .dataTables_paginate .paginate_enabled_next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper .dataTables_paginate .paginate_disabled_next{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px;}.dataTables_wrapper:hover .dataTables_filter,.dataTables_wrapper:hover .dataTables_length,.dataTables_wrapper:hover .dataTables_paginate a{-moz-opacity:1;opacity:1;}.dataTables_wrapper table>thead tr>th{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAD6CAYAAACoLMeFAAAAdElEQVRo3u3bOwqAMBAFwBwjh/CUluKRhfVTiil0UYjMwJLqLfmUYUuBtw3jUreKfc2E43aTi/C9Jo3wUR4WAAAAAAAAejBPc90q9jUTjkdNTuGjPj9/bgfpO0i/AgAAAAAAAPQnPZ6YHpBsNEnNefrt4+9Wmn6nW/cZ1MQAAAAASUVORK5CYII=);background-repeat:no-repeat;}.dataTables_wrapper table>thead tr>th.sorting{background-position:right center;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_desc{background-position:right bottom;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_asc{background-position:right top;cursor:pointer;}.dataTables_wrapper table>thead tr>th.sorting_disabled{background-image:none;}table.userTable div.flags{display:inline-block;float:right;}table.userTable div.flags>i{cursor:default;}table.userTable div.flags>i>.details{display:none;}.jobStatus{color:#333;}.jobStatus.Closed{color:#9e9e9e;}.jobStatus.Open{color:#60a917;}.jobStatus.AwaitingWarrantyRepair,.jobStatus.AwaitingRepairs{color:#1e6dab;}.jobStatus.AwaitingDeviceReturn,.jobStatus.AwaitingUserAction,.jobStatus.AwaitingAccountingPayment,.jobStatus.AwaitingAccountingCharge{color:#f0a30a;}.jobStatus.AwaitingInsuranceProcessing{color:#6a00ff;}.deviceStatus{color:#333;}.deviceStatus.Decommissioned{color:#9e9e9e;}.deviceStatus.Active{color:#60a917;}.deviceStatus.NotEnrolled{color:#f0a30a;}table.jobTable{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed;}table.jobTable>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}table.jobTable>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}table.jobTable>thead>tr>th,table.jobTable>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}table.jobTable>tbody>tr:hover>td{background-color:#f9f9f9;}table.jobTable>tfoot>tr>th,table.jobTable>tfoot>tr>td{background-color:#f4f4f4;}table.jobTable td{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;}table.jobTable.hideStatusClosed tr[data-status=Closed]{display:none;}table.jobTable td.id,table.jobTable th.id{width:50px;text-align:center;}table.jobTable td.id a,table.jobTable th.id a{padding:0 6px;}table.jobTable tr.statusSlaWarning td{background-color:#fdeed1;}table.jobTable tr.statusSlaWarning td:not(:last-child){border-right:1px solid #f8e9cb;}table.jobTable tr.statusSlaExpired td{background-color:#ffd7d3;}table.jobTable tr.statusSlaExpired td:not(:last-child){border-right:1px solid #fad2ce;}table.jobTable tr:nth-child(odd).statusSlaWarning td{background-color:#fbeccf !important;}table.jobTable tr:nth-child(odd).statusSlaExpired td{background-color:#fdd5d1 !important;}table.jobTable tr:hover.statusSlaWarning td{background-color:#fbeaca !important;}table.jobTable tr:hover.statusSlaExpired td{background-color:#fdd1cd !important;}table.jobTable div.queues{display:inline-block;float:right;}table.jobTable td.lastActive,table.jobTable th.lastActive{width:130px;}table.jobTable td.dates,table.jobTable th.dates{width:130px;}table.jobTable td.type,table.jobTable th.type{width:50px;}table.jobTable td.device,table.jobTable th.device{width:110px;}table.jobTable td.user,table.jobTable th.user{width:240px;}table.jobTable td.technician,table.jobTable th.technician{width:80px;}table.jobTable td.location,table.jobTable th.location{width:200px;}div.jobTable>a.dataTables_showStatusClosed{margin:10px 5px;}div.jobTable>h3,div.jobTable>div.allClosed_container{margin:50px 20px !important;}div.jobTable>h3 a.button,div.jobTable>div.allClosed_container a.button{margin-top:10px;}table.deviceTable tr.decommissioned{background-color:#ededed;}textarea{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;min-height:75px;padding:2px;color:#444;width:200px;}input[type="text"],input[type="password"],input[type="file"],input[type="number"]{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;padding:2px;color:#444;width:200px;}input[type="text"].small,input[type="password"].small,input[type="file"].small,input[type="number"].small{padding:0 2px;width:150px;}input[type="text"].discreet,input[type="password"].discreet,input[type="file"].discreet,input[type="number"].discreet{border:1px solid #fff;}input[type="text"].discreet:hover,input[type="password"].discreet:hover,input[type="file"].discreet:hover,input[type="number"].discreet:hover,input[type="text"].discreet:focus,input[type="password"].discreet:focus,input[type="file"].discreet:focus,input[type="number"].discreet:focus{border:1px solid #ccc;}input[type="checkbox"],input[type="radio"]{margin-right:4px;vertical-align:sub;}select{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:12px;border:1px solid #ccc;padding:2px;color:#444;}select.small{padding:0;}input[type="submit"],button{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;padding:5px;}input[type="submit"].button,button.button{font-size:12px;padding:4px 10px 4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer;}input[type="submit"].button.alert,button.button.alert{border-color:#900;background-color:#e51400;}input[type="submit"].button.small,button.button.small{padding:2px 5px;font-size:.9em;}input[type="submit"].button[disabled],button.button[disabled]{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default;}input[type="submit"].button:hover,button.button:hover{border:1px solid #6b6b6b;background:#9e9e9e;}ul.none,ol.none{list-style:none;margin:0;padding:0;}ul.none li,ol.none li{margin:0;}div.form{margin:0 auto;}div.form>p.actions{text-align:right;}div.form>table{border-top:6px solid #1e6dab;border-left:1px solid #1e6dab;border-right:1px solid #1e6dab;border-bottom:3px solid #1e6dab;background-color:#fff;}div.form>table>tbody>tr>td,div.form>table>tbody>tr>th{background:none;border:none;margin:0;padding:8px 5px;}div.form>table>tbody>tr>th{font-weight:normal;text-align:right;}div.form>table>tbody>tr:nth-child(odd){background-color:#f2f2f2;margin:0;padding:0;}div.form>table>tbody>tr>td.details{padding:0;}div.form>table>tbody>tr>th.name{width:150px;text-align:right;}div.form>table table.sub>tbody>tr:not(:first-child)>th,div.form>table table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa;}div.form>table table.sub>tbody>tr>th{font-weight:normal;text-align:right;}div.form>table table.sub>tbody>tr>th.name{text-align:right;}#pageMenu td{border-right:1px dashed #aaa;width:33%;padding:10px;}#pageMenu td .pageMenuArea>.fa{font-size:1.3em;color:#6b6b6b;margin-right:4px;}#pageMenu td .pageMenuArea>a,#pageMenu td .pageMenuArea>h3{text-decoration:none;font-size:1.2em;}#pageMenu td .pageMenuArea .pageMenuBlurb{font-size:.9em;color:#888;margin-bottom:10px;}#pageMenu td .pageMenuArea .pageMenuBlurb a{text-decoration:none;}#pageMenu td .pageMenuArea:not(:last-child){border-bottom:1px dashed #aaa;}#pageMenu td .pageMenuArea.noSeperator{border-bottom:none;}#pageMenu td:first-child{padding-left:0;}#pageMenu td:last-child{border-right:none;padding-right:0;}div.info-box{margin:.4em 0;padding:.4em;border:1px solid #fff397;background-color:#fffef7;}div.info-box i{color:#1e6dab;}div.info-box.alert{border:1px solid #fa6800;background-color:#fff9f5;color:#333;}div.info-box.alert i{color:#fa6800;}div.info-box.error{border:1px solid #e51400;background-color:#fffaf9;color:#e51400;}div.info-box.error i{color:#e51400;}div.info-box p{line-height:1.2em;}p.fa-p{text-indent:-1.48em;margin-left:1.48em;}p.fa-p>i:first-child{text-indent:0;width:1.28em;margin-right:.2em;}div.Disco-AttachmentUpload-DropTarget{display:none;}div.Disco-AttachmentUpload-DropTarget.dragHighlight{display:block;position:absolute;z-index:1000;top:0;left:0;width:calc(100% - 6px);height:calc(100% - 6px);background-color:rgba(251,218,152,.5);border:3px dashed #f0a30a;}div.Disco-AttachmentUpload-DropTarget.dragHighlight h2{margin-top:3em !important;color:#2c1e02;text-align:center;font-weight:600;}div.Disco-AttachmentUpload-DropTarget.dragHighlight.dragHover{background-color:rgba(173,235,110,.5);border:3px dashed #60a917;}div.Disco-AttachmentUpload-DropTarget.dragHighlight.dragHover h2{color:#000;}div.Disco-AttachmentUpload-Progress{position:absolute;right:0;bottom:48px;}div.Disco-AttachmentUpload-Progress>div{background-color:#fafafa;padding:4px 8px;}div.Disco-AttachmentUpload-Progress>div i{color:#1e6dab;margin-right:4px;}div.Disco-AttachmentUpload-CommentDialog{padding:.25em .5em !important;}div.Disco-AttachmentUpload-CommentDialog table{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr:nth-child(odd)>td{background-color:#fbfbfb;}div.Disco-AttachmentUpload-CommentDialog table>thead>tr>th,div.Disco-AttachmentUpload-CommentDialog table>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}div.Disco-AttachmentUpload-CommentDialog table>tbody>tr:hover>td{background-color:#f9f9f9;}div.Disco-AttachmentUpload-CommentDialog table>tfoot>tr>th,div.Disco-AttachmentUpload-CommentDialog table>tfoot>tr>td{background-color:#f4f4f4;}div.Disco-AttachmentUpload-CommentDialog table th{width:80px;}div.Disco-AttachmentUpload-CommentDialog table td.filename{font-family:Consolas,"Courier New",monospace;white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;}div.Disco-AttachmentUpload-CommentDialog table input.comments{width:calc(100% - 5px);}div.Disco-AttachmentUpload-CommentDialog table td.thumbnail{display:none;text-align:center;}div.Disco-AttachmentUpload-CommentDialog table td.thumbnail img{border:1px solid #9e9e9e;max-height:250px;max-width:374px;}div.Disco-AttachmentUpload-ImageDialog{background-color:#000 !important;padding:0 !important;overflow:hidden !important;width:720px !important;height:540px !important;}body>.User_FlagAssignment_Tooltip span.name{display:block;font-weight:600;}body>.User_FlagAssignment_Tooltip span.comments{display:block;padding:2px 0 2px 4px;}body>.User_FlagAssignment_Tooltip span.added{font-style:italic;font-size:.9em;}.d-priority-high{color:#fa6800;width:1.2857142857142858em;text-align:center;}.d-priority-high:before{content:"";}.d-priority-normal{color:#60a917;width:1.2857142857142858em;text-align:center;}.d-priority-normal:before{content:"";}.d-priority-low{color:#1e6dab;width:1.2857142857142858em;text-align:center;}.d-priority-low:before{content:"";}.fa-stack .d-priority-high,.fa-stack .d-priority-normal,.fa-stack .d-priority-low{width:100%;font-size:.8em;margin-left:.5em;margin-top:.4em;opacity:.6;}.d-lime{color:#a4c400;}.d-green{color:#60a917;}.d-emerald{color:#008a00;}.d-teal{color:#00aba9;}.d-cyan{color:#1ba1e2;}.d-cobalt{color:#0050ef;}.d-indigo{color:#6a00ff;}.d-violet{color:#a0f;}.d-pink{color:#f472d0;}.d-magenta{color:#d80073;}.d-crimson{color:#a20025;}.d-red{color:#e51400;}.d-orange{color:#fa6800;}.d-amber{color:#f0a30a;}.d-yellow{color:#e3c800;}.d-brown{color:#825a2c;}.d-olive{color:#6d8764;}.d-steel{color:#647689;}.d-mauve{color:#76608a;}.d-sienna{color:#a0522d;}table.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}td.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.field-validation-error{color:#e51400 !important;}.field-validation-valid{display:none;}.input-validation-error{border:1px solid #e51400 !important;background-color:#fff7f7 !important;}.validation-summary-errors{font-weight:bold !important;color:#e51400 !important;}.validation-summary-valid{display:none;}.ajaxLoading{height:11px;width:16px;display:inline-block;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);margin-bottom:0;}.ajaxOk{color:#60a917;}.ajaxSave{color:#1e6dab;cursor:pointer;}.ajaxRemove{color:#e51400;cursor:pointer;opacity:.8;}.ajaxRemove:hover{opacity:1;}#layout_Page div.hiddenDialog{display:none;}* html .clearfix{height:1%;overflow:visible;}*+html .clearfix{min-height:1%;}.clearfix:after{clear:both;content:".";display:block;height:0;visibility:hidden;font-size:0;}div.columnHost .column50{float:left;width:50%;}.hidden{display:none;}.success{color:#60a917;}.information{color:#1e6dab;}.warning{color:#f0a30a;}.error{color:#e51400;}.alert{color:#fa6800;}.smallText{font-size:.9em;}.smallMessage{font-style:italic;color:#666;font-size:.9em;}.nowrap{white-space:nowrap;}.code{font-family:Consolas,"Courier New",monospace;}div.code{border:1px dashed #bbb;background-color:#fff;margin:3px 6px;padding:4px;font-size:.9em;}a.smallLink{font-size:.9em;}textarea.block{width:250px;height:100px;}.checkboxBulkSelectContainer{margin-top:6px;font-size:.8em;}.checkboxBulkSelectContainer a{text-decoration:none;}.ui-widget .checkboxBulkSelectContainer{font-size:1em;}#licence{text-align:justify;}#licence p{font-size:.9em;line-height:1.6em;margin-bottom:1em;}#licence li{font-size:.9em;} \ No newline at end of file diff --git a/Disco.Web/Controllers/DeviceController.cs b/Disco.Web/Controllers/DeviceController.cs index 529ce092..dba79073 100644 --- a/Disco.Web/Controllers/DeviceController.cs +++ b/Disco.Web/Controllers/DeviceController.cs @@ -246,7 +246,10 @@ namespace Disco.Web.Controllers m.Certificates = Database.DeviceCertificates.Where(c => c.DeviceSerialNumber == m.Device.SerialNumber).ToList(); if (Authorization.Has(Claims.Device.Actions.GenerateDocuments)) + { m.DocumentTemplates = m.Device.AvailableDocumentTemplates(Database, UserService.CurrentUser, DateTime.Now); + m.DocumentTemplatePackages = m.Device.AvailableDocumentTemplatePackages(Database, UserService.CurrentUser); + } m.DeviceProfileDefaultOrganisationAddress = m.Device.DeviceProfile.DefaultOrganisationAddressDetails(Database); diff --git a/Disco.Web/Controllers/JobController.cs b/Disco.Web/Controllers/JobController.cs index a4cfdd89..6742e6e6 100644 --- a/Disco.Web/Controllers/JobController.cs +++ b/Disco.Web/Controllers/JobController.cs @@ -344,7 +344,10 @@ namespace Disco.Web.Controllers m.UpdatableJobSubTypes = m.Job.JobType.JobSubTypes.OrderBy(jst => jst.Description).ToList(); if (Authorization.Has(Claims.Job.Actions.GenerateDocuments)) + { m.AvailableDocumentTemplates = m.Job.AvailableDocumentTemplates(Database, UserService.CurrentUser, DateTime.Now); + m.AvailableDocumentTemplatePackages = m.Job.AvailableDocumentTemplatePackages(Database, UserService.CurrentUser); + } // Available Job Queues IEnumerable jobQueues = null; diff --git a/Disco.Web/Controllers/UserController.cs b/Disco.Web/Controllers/UserController.cs index 58336013..8e9a7801 100644 --- a/Disco.Web/Controllers/UserController.cs +++ b/Disco.Web/Controllers/UserController.cs @@ -105,7 +105,10 @@ namespace Disco.Web.Controllers } if (Authorization.Has(Claims.User.Actions.GenerateDocuments)) + { m.DocumentTemplates = m.User.AvailableDocumentTemplates(Database, UserService.CurrentUser, DateTime.Now); + m.DocumentTemplatePackages = m.User.AvailableDocumentTemplatePackages(Database, UserService.CurrentUser); + } // UI Extensions UIExtensions.ExecuteExtensions(this.ControllerContext, m); diff --git a/Disco.Web/Disco.Web.csproj b/Disco.Web/Disco.Web.csproj index ada09e47..61c8537d 100644 --- a/Disco.Web/Disco.Web.csproj +++ b/Disco.Web/Disco.Web.csproj @@ -214,6 +214,7 @@ + @@ -232,6 +233,8 @@ + + @@ -262,6 +265,16 @@ True True + + CreatePackage.cshtml + True + True + + + True + True + ShowPackage.cshtml + True True @@ -615,6 +628,9 @@ True True + + T4MVC.tt + T4MVC.tt @@ -1191,6 +1207,14 @@ RazorGenerator Show.generated.cs + + RazorGenerator + ShowPackage1.generated.cs + + + RazorGenerator + CreatePackage.generated.cs + RazorGenerator Index.generated.cs diff --git a/Disco.Web/Extensions/T4MVC/API.DeviceController.generated.cs b/Disco.Web/Extensions/T4MVC/API.DeviceController.generated.cs index 6c7e64f4..2d1a5f09 100644 --- a/Disco.Web/Extensions/T4MVC/API.DeviceController.generated.cs +++ b/Disco.Web/Extensions/T4MVC/API.DeviceController.generated.cs @@ -143,6 +143,12 @@ namespace Disco.Web.Areas.API.Controllers } [NonAction] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult GeneratePdfPackage() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdfPackage); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public virtual System.Web.Mvc.ActionResult LastNetworkLogonDate() { return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.LastNetworkLogonDate); @@ -243,6 +249,7 @@ namespace Disco.Web.Areas.API.Controllers public readonly string Recommission = "Recommission"; public readonly string Delete = "Delete"; public readonly string GeneratePdf = "GeneratePdf"; + public readonly string GeneratePdfPackage = "GeneratePdfPackage"; public readonly string LastNetworkLogonDate = "LastNetworkLogonDate"; public readonly string AttachmentDownload = "AttachmentDownload"; public readonly string AttachmentThumbnail = "AttachmentThumbnail"; @@ -275,6 +282,7 @@ namespace Disco.Web.Areas.API.Controllers public const string Recommission = "Recommission"; public const string Delete = "Delete"; public const string GeneratePdf = "GeneratePdf"; + public const string GeneratePdfPackage = "GeneratePdfPackage"; public const string LastNetworkLogonDate = "LastNetworkLogonDate"; public const string AttachmentDownload = "AttachmentDownload"; public const string AttachmentThumbnail = "AttachmentThumbnail"; @@ -429,6 +437,15 @@ namespace Disco.Web.Areas.API.Controllers public readonly string id = "id"; public readonly string DocumentTemplateId = "DocumentTemplateId"; } + static readonly ActionParamsClass_GeneratePdfPackage s_params_GeneratePdfPackage = new ActionParamsClass_GeneratePdfPackage(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_GeneratePdfPackage GeneratePdfPackageParams { get { return s_params_GeneratePdfPackage; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_GeneratePdfPackage + { + public readonly string id = "id"; + public readonly string DocumentTemplatePackageId = "DocumentTemplatePackageId"; + } static readonly ActionParamsClass_LastNetworkLogonDate s_params_LastNetworkLogonDate = new ActionParamsClass_LastNetworkLogonDate(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ActionParamsClass_LastNetworkLogonDate LastNetworkLogonDateParams { get { return s_params_LastNetworkLogonDate; } } @@ -741,6 +758,19 @@ namespace Disco.Web.Areas.API.Controllers return callInfo; } + [NonAction] + partial void GeneratePdfPackageOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string DocumentTemplatePackageId); + + [NonAction] + public override System.Web.Mvc.ActionResult GeneratePdfPackage(string id, string DocumentTemplatePackageId) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdfPackage); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DocumentTemplatePackageId", DocumentTemplatePackageId); + GeneratePdfPackageOverride(callInfo, id, DocumentTemplatePackageId); + return callInfo; + } + [NonAction] partial void LastNetworkLogonDateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id); diff --git a/Disco.Web/Extensions/T4MVC/API.DocumentTemplateController.generated.cs b/Disco.Web/Extensions/T4MVC/API.DocumentTemplateController.generated.cs index b3b069be..500b0502 100644 --- a/Disco.Web/Extensions/T4MVC/API.DocumentTemplateController.generated.cs +++ b/Disco.Web/Extensions/T4MVC/API.DocumentTemplateController.generated.cs @@ -429,6 +429,7 @@ namespace Disco.Web.Areas.API.Controllers { public readonly string id = "id"; public readonly string DataIds = "DataIds"; + public readonly string InsertBlankPage = "InsertBlankPage"; } static readonly ActionParamsClass_Delete s_params_Delete = new ActionParamsClass_Delete(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] @@ -732,15 +733,16 @@ namespace Disco.Web.Areas.API.Controllers } [NonAction] - partial void BulkGenerateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string DataIds); + partial void BulkGenerateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string DataIds, bool InsertBlankPage); [NonAction] - public override System.Web.Mvc.ActionResult BulkGenerate(string id, string DataIds) + public override System.Web.Mvc.ActionResult BulkGenerate(string id, string DataIds, bool InsertBlankPage) { var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.BulkGenerate); ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DataIds", DataIds); - BulkGenerateOverride(callInfo, id, DataIds); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "InsertBlankPage", InsertBlankPage); + BulkGenerateOverride(callInfo, id, DataIds, InsertBlankPage); return callInfo; } diff --git a/Disco.Web/Extensions/T4MVC/API.DocumentTemplatePackageController.generated.cs b/Disco.Web/Extensions/T4MVC/API.DocumentTemplatePackageController.generated.cs new file mode 100644 index 00000000..9e5acddf --- /dev/null +++ b/Disco.Web/Extensions/T4MVC/API.DocumentTemplatePackageController.generated.cs @@ -0,0 +1,459 @@ +// +// This file was generated by a T4 template. +// Don't change it directly as your change would get overwritten. Instead, make changes +// to the .tt file (i.e. the T4 template) and save it to regenerate this file. + +// Make sure the compiler doesn't complain about missing Xml comments +#pragma warning disable 1591 +#region T4MVC + +using System; +using System.Diagnostics; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using System.Web; +using System.Web.Hosting; +using System.Web.Mvc; +using System.Web.Mvc.Ajax; +using System.Web.Mvc.Html; +using System.Web.Routing; +using T4MVC; +namespace Disco.Web.Areas.API.Controllers +{ + public partial class DocumentTemplatePackageController + { + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public DocumentTemplatePackageController() { } + + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + protected DocumentTemplatePackageController(Dummy d) { } + + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + protected RedirectToRouteResult RedirectToAction(ActionResult result) + { + var callInfo = result.GetT4MVCResult(); + return RedirectToRoute(callInfo.RouteValueDictionary); + } + + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + protected RedirectToRouteResult RedirectToAction(Task taskResult) + { + return RedirectToAction(taskResult.Result); + } + + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + protected RedirectToRouteResult RedirectToActionPermanent(ActionResult result) + { + var callInfo = result.GetT4MVCResult(); + return RedirectToRoutePermanent(callInfo.RouteValueDictionary); + } + + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + protected RedirectToRouteResult RedirectToActionPermanent(Task taskResult) + { + return RedirectToActionPermanent(taskResult.Result); + } + + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult Update() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Update); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult UpdateDescription() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateDescription); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult UpdateDocumentTemplates() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateDocumentTemplates); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult UpdateFilterExpression() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateFilterExpression); + } + [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 UpdateIsHidden() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateIsHidden); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult UpdateInsertBlankPages() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateInsertBlankPages); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult UpdateScope() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateScope); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult UpdateJobSubTypes() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateJobSubTypes); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult BulkGenerate() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.BulkGenerate); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult Delete() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Delete); + } + + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public DocumentTemplatePackageController Actions { get { return MVC.API.DocumentTemplatePackage; } } + [GeneratedCode("T4MVC", "2.0")] + public readonly string Area = "API"; + [GeneratedCode("T4MVC", "2.0")] + public readonly string Name = "DocumentTemplatePackage"; + [GeneratedCode("T4MVC", "2.0")] + public const string NameConst = "DocumentTemplatePackage"; + + static readonly ActionNamesClass s_actions = new ActionNamesClass(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionNamesClass ActionNames { get { return s_actions; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionNamesClass + { + public readonly string Update = "Update"; + public readonly string UpdateDescription = "UpdateDescription"; + public readonly string UpdateDocumentTemplates = "UpdateDocumentTemplates"; + public readonly string UpdateFilterExpression = "UpdateFilterExpression"; + public readonly string UpdateOnGenerateExpression = "UpdateOnGenerateExpression"; + public readonly string UpdateIsHidden = "UpdateIsHidden"; + public readonly string UpdateInsertBlankPages = "UpdateInsertBlankPages"; + public readonly string UpdateScope = "UpdateScope"; + public readonly string UpdateJobSubTypes = "UpdateJobSubTypes"; + public readonly string BulkGenerate = "BulkGenerate"; + public readonly string Delete = "Delete"; + } + + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionNameConstants + { + public const string Update = "Update"; + public const string UpdateDescription = "UpdateDescription"; + public const string UpdateDocumentTemplates = "UpdateDocumentTemplates"; + public const string UpdateFilterExpression = "UpdateFilterExpression"; + public const string UpdateOnGenerateExpression = "UpdateOnGenerateExpression"; + public const string UpdateIsHidden = "UpdateIsHidden"; + public const string UpdateInsertBlankPages = "UpdateInsertBlankPages"; + public const string UpdateScope = "UpdateScope"; + public const string UpdateJobSubTypes = "UpdateJobSubTypes"; + public const string BulkGenerate = "BulkGenerate"; + public const string Delete = "Delete"; + } + + + static readonly ActionParamsClass_Update s_params_Update = new ActionParamsClass_Update(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_Update UpdateParams { get { return s_params_Update; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_Update + { + public readonly string id = "id"; + public readonly string key = "key"; + public readonly string value = "value"; + public readonly string redirect = "redirect"; + } + static readonly ActionParamsClass_UpdateDescription s_params_UpdateDescription = new ActionParamsClass_UpdateDescription(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_UpdateDescription UpdateDescriptionParams { get { return s_params_UpdateDescription; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_UpdateDescription + { + public readonly string id = "id"; + public readonly string Description = "Description"; + public readonly string redirect = "redirect"; + } + static readonly ActionParamsClass_UpdateDocumentTemplates s_params_UpdateDocumentTemplates = new ActionParamsClass_UpdateDocumentTemplates(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_UpdateDocumentTemplates UpdateDocumentTemplatesParams { get { return s_params_UpdateDocumentTemplates; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_UpdateDocumentTemplates + { + public readonly string id = "id"; + public readonly string DocumentTemplates = "DocumentTemplates"; + public readonly string redirect = "redirect"; + } + static readonly ActionParamsClass_UpdateFilterExpression s_params_UpdateFilterExpression = new ActionParamsClass_UpdateFilterExpression(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_UpdateFilterExpression UpdateFilterExpressionParams { get { return s_params_UpdateFilterExpression; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_UpdateFilterExpression + { + public readonly string id = "id"; + 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_UpdateIsHidden s_params_UpdateIsHidden = new ActionParamsClass_UpdateIsHidden(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_UpdateIsHidden UpdateIsHiddenParams { get { return s_params_UpdateIsHidden; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_UpdateIsHidden + { + public readonly string id = "id"; + public readonly string IsHidden = "IsHidden"; + public readonly string redirect = "redirect"; + } + static readonly ActionParamsClass_UpdateInsertBlankPages s_params_UpdateInsertBlankPages = new ActionParamsClass_UpdateInsertBlankPages(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_UpdateInsertBlankPages UpdateInsertBlankPagesParams { get { return s_params_UpdateInsertBlankPages; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_UpdateInsertBlankPages + { + public readonly string id = "id"; + public readonly string InsertBlankPages = "InsertBlankPages"; + public readonly string redirect = "redirect"; + } + static readonly ActionParamsClass_UpdateScope s_params_UpdateScope = new ActionParamsClass_UpdateScope(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_UpdateScope UpdateScopeParams { get { return s_params_UpdateScope; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_UpdateScope + { + public readonly string id = "id"; + public readonly string Scope = "Scope"; + public readonly string redirect = "redirect"; + } + static readonly ActionParamsClass_UpdateJobSubTypes s_params_UpdateJobSubTypes = new ActionParamsClass_UpdateJobSubTypes(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_UpdateJobSubTypes UpdateJobSubTypesParams { get { return s_params_UpdateJobSubTypes; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_UpdateJobSubTypes + { + public readonly string id = "id"; + public readonly string JobSubTypes = "JobSubTypes"; + public readonly string redirect = "redirect"; + } + static readonly ActionParamsClass_BulkGenerate s_params_BulkGenerate = new ActionParamsClass_BulkGenerate(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_BulkGenerate BulkGenerateParams { get { return s_params_BulkGenerate; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_BulkGenerate + { + public readonly string id = "id"; + public readonly string DataIds = "DataIds"; + public readonly string InsertBlankPage = "InsertBlankPage"; + } + static readonly ActionParamsClass_Delete s_params_Delete = new ActionParamsClass_Delete(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_Delete DeleteParams { get { return s_params_Delete; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_Delete + { + public readonly string id = "id"; + public readonly string redirect = "redirect"; + } + static readonly ViewsClass s_views = new ViewsClass(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ViewsClass Views { get { return s_views; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ViewsClass + { + static readonly _ViewNamesClass s_ViewNames = new _ViewNamesClass(); + public _ViewNamesClass ViewNames { get { return s_ViewNames; } } + public class _ViewNamesClass + { + } + } + } + + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public partial class T4MVC_DocumentTemplatePackageController : Disco.Web.Areas.API.Controllers.DocumentTemplatePackageController + { + public T4MVC_DocumentTemplatePackageController() : base(Dummy.Instance) { } + + [NonAction] + partial void UpdateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string key, string value, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult Update(string id, string key, string value, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Update); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "key", key); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "value", value); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateOverride(callInfo, id, key, value, redirect); + return callInfo; + } + + [NonAction] + partial void UpdateDescriptionOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string Description, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult UpdateDescription(string id, string Description, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateDescription); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Description", Description); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateDescriptionOverride(callInfo, id, Description, redirect); + return callInfo; + } + + [NonAction] + partial void UpdateDocumentTemplatesOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, System.Collections.Generic.List DocumentTemplates, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult UpdateDocumentTemplates(string id, System.Collections.Generic.List DocumentTemplates, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateDocumentTemplates); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DocumentTemplates", DocumentTemplates); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateDocumentTemplatesOverride(callInfo, id, DocumentTemplates, redirect); + return callInfo; + } + + [NonAction] + partial void UpdateFilterExpressionOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string FilterExpression, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult UpdateFilterExpression(string id, string FilterExpression, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateFilterExpression); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "FilterExpression", FilterExpression); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateFilterExpressionOverride(callInfo, id, FilterExpression, redirect); + 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 UpdateIsHiddenOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string IsHidden, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult UpdateIsHidden(string id, string IsHidden, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateIsHidden); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "IsHidden", IsHidden); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateIsHiddenOverride(callInfo, id, IsHidden, redirect); + return callInfo; + } + + [NonAction] + partial void UpdateInsertBlankPagesOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string InsertBlankPages, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult UpdateInsertBlankPages(string id, string InsertBlankPages, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateInsertBlankPages); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "InsertBlankPages", InsertBlankPages); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateInsertBlankPagesOverride(callInfo, id, InsertBlankPages, redirect); + return callInfo; + } + + [NonAction] + partial void UpdateScopeOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string Scope, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult UpdateScope(string id, string Scope, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateScope); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Scope", Scope); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateScopeOverride(callInfo, id, Scope, redirect); + return callInfo; + } + + [NonAction] + partial void UpdateJobSubTypesOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, System.Collections.Generic.List JobSubTypes, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult UpdateJobSubTypes(string id, System.Collections.Generic.List JobSubTypes, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateJobSubTypes); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "JobSubTypes", JobSubTypes); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateJobSubTypesOverride(callInfo, id, JobSubTypes, redirect); + return callInfo; + } + + [NonAction] + partial void BulkGenerateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string DataIds, bool InsertBlankPage); + + [NonAction] + public override System.Web.Mvc.ActionResult BulkGenerate(string id, string DataIds, bool InsertBlankPage) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.BulkGenerate); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DataIds", DataIds); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "InsertBlankPage", InsertBlankPage); + BulkGenerateOverride(callInfo, id, DataIds, InsertBlankPage); + return callInfo; + } + + [NonAction] + partial void DeleteOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, bool? redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult Delete(string id, bool? redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Delete); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + DeleteOverride(callInfo, id, redirect); + return callInfo; + } + + } +} + +#endregion T4MVC +#pragma warning restore 1591 diff --git a/Disco.Web/Extensions/T4MVC/API.JobController.generated.cs b/Disco.Web/Extensions/T4MVC/API.JobController.generated.cs index 357f9de4..01e79c84 100644 --- a/Disco.Web/Extensions/T4MVC/API.JobController.generated.cs +++ b/Disco.Web/Extensions/T4MVC/API.JobController.generated.cs @@ -441,6 +441,12 @@ namespace Disco.Web.Areas.API.Controllers { return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdf); } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult GeneratePdfPackage() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdfPackage); + } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public JobController Actions { get { return MVC.API.Job; } } @@ -522,6 +528,7 @@ namespace Disco.Web.Areas.API.Controllers public readonly string ComponentRemove = "ComponentRemove"; public readonly string StatisticsDailyOpenedClosed = "StatisticsDailyOpenedClosed"; public readonly string GeneratePdf = "GeneratePdf"; + public readonly string GeneratePdfPackage = "GeneratePdfPackage"; public readonly string DeviceHeldLocations = "DeviceHeldLocations"; } @@ -593,6 +600,7 @@ namespace Disco.Web.Areas.API.Controllers public const string ComponentRemove = "ComponentRemove"; public const string StatisticsDailyOpenedClosed = "StatisticsDailyOpenedClosed"; public const string GeneratePdf = "GeneratePdf"; + public const string GeneratePdfPackage = "GeneratePdfPackage"; public const string DeviceHeldLocations = "DeviceHeldLocations"; } @@ -1212,6 +1220,15 @@ namespace Disco.Web.Areas.API.Controllers public readonly string id = "id"; public readonly string DocumentTemplateId = "DocumentTemplateId"; } + static readonly ActionParamsClass_GeneratePdfPackage s_params_GeneratePdfPackage = new ActionParamsClass_GeneratePdfPackage(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_GeneratePdfPackage GeneratePdfPackageParams { get { return s_params_GeneratePdfPackage; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_GeneratePdfPackage + { + public readonly string id = "id"; + public readonly string DocumentTemplatePackageId = "DocumentTemplatePackageId"; + } static readonly ViewsClass s_views = new ViewsClass(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ViewsClass Views { get { return s_views; } } @@ -2101,10 +2118,10 @@ namespace Disco.Web.Areas.API.Controllers } [NonAction] - partial void GeneratePdfOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string DocumentTemplateId); + partial void GeneratePdfOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id, string DocumentTemplateId); [NonAction] - public override System.Web.Mvc.ActionResult GeneratePdf(string id, string DocumentTemplateId) + public override System.Web.Mvc.ActionResult GeneratePdf(int id, string DocumentTemplateId) { var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdf); ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); @@ -2113,6 +2130,19 @@ namespace Disco.Web.Areas.API.Controllers return callInfo; } + [NonAction] + partial void GeneratePdfPackageOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id, string DocumentTemplatePackageId); + + [NonAction] + public override System.Web.Mvc.ActionResult GeneratePdfPackage(int id, string DocumentTemplatePackageId) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdfPackage); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DocumentTemplatePackageId", DocumentTemplatePackageId); + GeneratePdfPackageOverride(callInfo, id, DocumentTemplatePackageId); + return callInfo; + } + [NonAction] partial void DeviceHeldLocationsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo); diff --git a/Disco.Web/Extensions/T4MVC/API.UserController.generated.cs b/Disco.Web/Extensions/T4MVC/API.UserController.generated.cs index 4c482888..80b80ae8 100644 --- a/Disco.Web/Extensions/T4MVC/API.UserController.generated.cs +++ b/Disco.Web/Extensions/T4MVC/API.UserController.generated.cs @@ -99,6 +99,12 @@ namespace Disco.Web.Areas.API.Controllers { return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdf); } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult GeneratePdfPackage() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdfPackage); + } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public UserController Actions { get { return MVC.API.User; } } @@ -122,6 +128,7 @@ namespace Disco.Web.Areas.API.Controllers public readonly string Attachments = "Attachments"; public readonly string AttachmentRemove = "AttachmentRemove"; public readonly string GeneratePdf = "GeneratePdf"; + public readonly string GeneratePdfPackage = "GeneratePdfPackage"; } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] @@ -134,6 +141,7 @@ namespace Disco.Web.Areas.API.Controllers public const string Attachments = "Attachments"; public const string AttachmentRemove = "AttachmentRemove"; public const string GeneratePdf = "GeneratePdf"; + public const string GeneratePdfPackage = "GeneratePdfPackage"; } @@ -198,6 +206,16 @@ namespace Disco.Web.Areas.API.Controllers public readonly string Domain = "Domain"; public readonly string DocumentTemplateId = "DocumentTemplateId"; } + static readonly ActionParamsClass_GeneratePdfPackage s_params_GeneratePdfPackage = new ActionParamsClass_GeneratePdfPackage(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_GeneratePdfPackage GeneratePdfPackageParams { get { return s_params_GeneratePdfPackage; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_GeneratePdfPackage + { + public readonly string id = "id"; + public readonly string Domain = "Domain"; + public readonly string DocumentTemplatePackageId = "DocumentTemplatePackageId"; + } static readonly ViewsClass s_views = new ViewsClass(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ViewsClass Views { get { return s_views; } } @@ -306,6 +324,20 @@ namespace Disco.Web.Areas.API.Controllers return callInfo; } + [NonAction] + partial void GeneratePdfPackageOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string Domain, string DocumentTemplatePackageId); + + [NonAction] + public override System.Web.Mvc.ActionResult GeneratePdfPackage(string id, string Domain, string DocumentTemplatePackageId) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdfPackage); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Domain", Domain); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DocumentTemplatePackageId", DocumentTemplatePackageId); + GeneratePdfPackageOverride(callInfo, id, Domain, DocumentTemplatePackageId); + return callInfo; + } + } } diff --git a/Disco.Web/Extensions/T4MVC/Config.DocumentTemplateController.generated.cs b/Disco.Web/Extensions/T4MVC/Config.DocumentTemplateController.generated.cs index 7a213029..cd96371f 100644 --- a/Disco.Web/Extensions/T4MVC/Config.DocumentTemplateController.generated.cs +++ b/Disco.Web/Extensions/T4MVC/Config.DocumentTemplateController.generated.cs @@ -65,6 +65,12 @@ namespace Disco.Web.Areas.Config.Controllers } [NonAction] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult ShowPackage() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ShowPackage); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public virtual System.Web.Mvc.ActionResult ExpressionBrowser() { return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ExpressionBrowser); @@ -86,9 +92,11 @@ namespace Disco.Web.Areas.Config.Controllers public class ActionNamesClass { public readonly string Index = "Index"; + public readonly string ShowPackage = "ShowPackage"; public readonly string ImportStatus = "ImportStatus"; public readonly string UndetectedPages = "UndetectedPages"; public readonly string Create = "Create"; + public readonly string CreatePackage = "CreatePackage"; public readonly string ExpressionBrowser = "ExpressionBrowser"; } @@ -96,9 +104,11 @@ namespace Disco.Web.Areas.Config.Controllers public class ActionNameConstants { public const string Index = "Index"; + public const string ShowPackage = "ShowPackage"; public const string ImportStatus = "ImportStatus"; public const string UndetectedPages = "UndetectedPages"; public const string Create = "Create"; + public const string CreatePackage = "CreatePackage"; public const string ExpressionBrowser = "ExpressionBrowser"; } @@ -111,6 +121,14 @@ namespace Disco.Web.Areas.Config.Controllers { public readonly string id = "id"; } + static readonly ActionParamsClass_ShowPackage s_params_ShowPackage = new ActionParamsClass_ShowPackage(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_ShowPackage ShowPackageParams { get { return s_params_ShowPackage; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_ShowPackage + { + public readonly string id = "id"; + } static readonly ActionParamsClass_Create s_params_Create = new ActionParamsClass_Create(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ActionParamsClass_Create CreateParams { get { return s_params_Create; } } @@ -119,6 +137,14 @@ namespace Disco.Web.Areas.Config.Controllers { public readonly string model = "model"; } + static readonly ActionParamsClass_CreatePackage s_params_CreatePackage = new ActionParamsClass_CreatePackage(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_CreatePackage CreatePackageParams { get { return s_params_CreatePackage; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_CreatePackage + { + public readonly string model = "model"; + } static readonly ActionParamsClass_ExpressionBrowser s_params_ExpressionBrowser = new ActionParamsClass_ExpressionBrowser(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ActionParamsClass_ExpressionBrowser ExpressionBrowserParams { get { return s_params_ExpressionBrowser; } } @@ -140,18 +166,22 @@ namespace Disco.Web.Areas.Config.Controllers { public readonly string _ExpressionsTable = "_ExpressionsTable"; public readonly string Create = "Create"; + public readonly string CreatePackage = "CreatePackage"; public readonly string ExpressionBrowser = "ExpressionBrowser"; public readonly string ImportStatus = "ImportStatus"; public readonly string Index = "Index"; public readonly string Show = "Show"; + public readonly string ShowPackage = "ShowPackage"; public readonly string UndetectedPages = "UndetectedPages"; } public readonly string _ExpressionsTable = "~/Areas/Config/Views/DocumentTemplate/_ExpressionsTable.cshtml"; public readonly string Create = "~/Areas/Config/Views/DocumentTemplate/Create.cshtml"; + public readonly string CreatePackage = "~/Areas/Config/Views/DocumentTemplate/CreatePackage.cshtml"; public readonly string ExpressionBrowser = "~/Areas/Config/Views/DocumentTemplate/ExpressionBrowser.cshtml"; public readonly string ImportStatus = "~/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml"; public readonly string Index = "~/Areas/Config/Views/DocumentTemplate/Index.cshtml"; public readonly string Show = "~/Areas/Config/Views/DocumentTemplate/Show.cshtml"; + public readonly string ShowPackage = "~/Areas/Config/Views/DocumentTemplate/ShowPackage.cshtml"; public readonly string UndetectedPages = "~/Areas/Config/Views/DocumentTemplate/UndetectedPages.cshtml"; } } @@ -173,6 +203,18 @@ namespace Disco.Web.Areas.Config.Controllers return callInfo; } + [NonAction] + partial void ShowPackageOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id); + + [NonAction] + public override System.Web.Mvc.ActionResult ShowPackage(string id) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ShowPackage); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ShowPackageOverride(callInfo, id); + return callInfo; + } + [NonAction] partial void ImportStatusOverride(T4MVC_System_Web_Mvc_ActionResult callInfo); @@ -218,6 +260,29 @@ namespace Disco.Web.Areas.Config.Controllers return callInfo; } + [NonAction] + partial void CreatePackageOverride(T4MVC_System_Web_Mvc_ActionResult callInfo); + + [NonAction] + public override System.Web.Mvc.ActionResult CreatePackage() + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.CreatePackage); + CreatePackageOverride(callInfo); + return callInfo; + } + + [NonAction] + partial void CreatePackageOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, Disco.Web.Areas.Config.Models.DocumentTemplate.CreatePackageModel model); + + [NonAction] + public override System.Web.Mvc.ActionResult CreatePackage(Disco.Web.Areas.Config.Models.DocumentTemplate.CreatePackageModel model) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.CreatePackage); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "model", model); + CreatePackageOverride(callInfo, model); + return callInfo; + } + [NonAction] partial void ExpressionBrowserOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string type, bool StaticDeclaredMembersOnly); diff --git a/Disco.Web/Extensions/T4MVC/T4MVC.cs b/Disco.Web/Extensions/T4MVC/T4MVC.cs index 977cc010..91a8d7a0 100644 --- a/Disco.Web/Extensions/T4MVC/T4MVC.cs +++ b/Disco.Web/Extensions/T4MVC/T4MVC.cs @@ -57,6 +57,7 @@ namespace T4MVC public Disco.Web.Areas.API.Controllers.DeviceModelController DeviceModel = new Disco.Web.Areas.API.Controllers.T4MVC_DeviceModelController(); public Disco.Web.Areas.API.Controllers.DeviceProfileController DeviceProfile = new Disco.Web.Areas.API.Controllers.T4MVC_DeviceProfileController(); public Disco.Web.Areas.API.Controllers.DocumentTemplateController DocumentTemplate = new Disco.Web.Areas.API.Controllers.T4MVC_DocumentTemplateController(); + public Disco.Web.Areas.API.Controllers.DocumentTemplatePackageController DocumentTemplatePackage = new Disco.Web.Areas.API.Controllers.T4MVC_DocumentTemplatePackageController(); public Disco.Web.Areas.API.Controllers.ExpressionsController Expressions = new Disco.Web.Areas.API.Controllers.T4MVC_ExpressionsController(); public Disco.Web.Areas.API.Controllers.JobController Job = new Disco.Web.Areas.API.Controllers.T4MVC_JobController(); public Disco.Web.Areas.API.Controllers.JobPreferencesController JobPreferences = new Disco.Web.Areas.API.Controllers.T4MVC_JobPreferencesController(); diff --git a/Disco.Web/Extensions/T4MVC/T4MVCExtensions.cs b/Disco.Web/Extensions/T4MVC/T4MVCExtensions.cs index d42049e4..9232b629 100644 --- a/Disco.Web/Extensions/T4MVC/T4MVCExtensions.cs +++ b/Disco.Web/Extensions/T4MVC/T4MVCExtensions.cs @@ -69,5 +69,16 @@ namespace Disco.Web.Areas.API.Controllers return callInfo; } + + [NonAction] + public virtual ActionResult GeneratePdfPackage(string id, string DocumentTemplatePackageId) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdfPackage); + + Disco.Web.Controllers.UserController.T4MVCAddUserIdRouteValues(callInfo, id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DocumentTemplatePackageId", DocumentTemplatePackageId); + + return callInfo; + } } } \ No newline at end of file diff --git a/Disco.Web/Models/Device/ShowModel.cs b/Disco.Web/Models/Device/ShowModel.cs index 8213243e..5051863b 100644 --- a/Disco.Web/Models/Device/ShowModel.cs +++ b/Disco.Web/Models/Device/ShowModel.cs @@ -1,4 +1,5 @@ -using Disco.Models.Services.Jobs.JobLists; +using Disco.Models.Services.Documents; +using Disco.Models.Services.Jobs.JobLists; using Disco.Models.UI.Device; using Disco.Services.Plugins; using Disco.Web.Extensions; @@ -23,6 +24,7 @@ namespace Disco.Web.Models.Device public string OrganisationUnit { get; set; } public List DocumentTemplates { get; set; } + public List DocumentTemplatePackages { get; set; } public List DocumentTemplatesSelectListItems { @@ -30,7 +32,8 @@ namespace Disco.Web.Models.Device { var list = new List(); list.Add(new SelectListItem() { Selected = true, Value = string.Empty, Text = "Generate Document" }); - list.AddRange(this.DocumentTemplates.ToSelectListItems()); + list.AddRange(DocumentTemplates.ToSelectListItems()); + list.AddRange(DocumentTemplatePackages.ToSelectListItems()); return list; } } diff --git a/Disco.Web/Models/Job/ShowModel.cs b/Disco.Web/Models/Job/ShowModel.cs index 8bec7a38..54593462 100644 --- a/Disco.Web/Models/Job/ShowModel.cs +++ b/Disco.Web/Models/Job/ShowModel.cs @@ -1,4 +1,5 @@ -using Disco.Models.Services.Job; +using Disco.Models.Services.Documents; +using Disco.Models.Services.Job; using Disco.Models.Services.Jobs.JobLists; using Disco.Models.UI.Job; using Disco.Web.Extensions; @@ -15,6 +16,7 @@ namespace Disco.Web.Models.Job public TimeSpan? LongRunning { get; set; } public List AvailableDocumentTemplates { get; set; } + public List AvailableDocumentTemplatePackages { get; set; } public List UpdatableJobSubTypes { get; set; } public List AvailableQueues { get; set; } @@ -24,7 +26,8 @@ namespace Disco.Web.Models.Job { var list = new List(); list.Add(new SelectListItem() { Selected = true, Value = string.Empty, Text = "Generate Document" }); - list.AddRange(this.AvailableDocumentTemplates.ToSelectListItems()); + list.AddRange(AvailableDocumentTemplates.ToSelectListItems()); + list.AddRange(AvailableDocumentTemplatePackages.ToSelectListItems()); return list; } } diff --git a/Disco.Web/Models/User/ShowModel.cs b/Disco.Web/Models/User/ShowModel.cs index e65a42e5..ff4a8ab2 100644 --- a/Disco.Web/Models/User/ShowModel.cs +++ b/Disco.Web/Models/User/ShowModel.cs @@ -1,5 +1,6 @@ using Disco.Models.Repository; using Disco.Models.Services.Authorization; +using Disco.Models.Services.Documents; using Disco.Models.Services.Jobs.JobLists; using Disco.Models.UI.User; using Disco.Services.Users.UserFlags; @@ -16,6 +17,7 @@ namespace Disco.Web.Models.User public Disco.Models.Repository.User User { get; set; } public JobTableModel Jobs { get; set; } public List DocumentTemplates { get; set; } + public List DocumentTemplatePackages { get; set; } public List AvailableUserFlags { get; set; } @@ -26,7 +28,7 @@ namespace Disco.Web.Models.User { get { - var rootNode = FancyTreeNode.FromClaimNavigatorItem(this.ClaimNavigator, true); + var rootNode = FancyTreeNode.FromClaimNavigatorItem(ClaimNavigator, true); rootNode.expanded = true; return new FancyTreeNode[] { @@ -41,7 +43,8 @@ namespace Disco.Web.Models.User { var list = new List(); list.Add(new SelectListItem() { Selected = true, Value = string.Empty, Text = "Select a Document to Generate" }); - list.AddRange(this.DocumentTemplates.ToSelectListItems()); + list.AddRange(DocumentTemplates.ToSelectListItems()); + list.AddRange(DocumentTemplatePackages.ToSelectListItems()); return list; } } diff --git a/Disco.Web/Views/Device/DeviceParts/_Subject.cshtml b/Disco.Web/Views/Device/DeviceParts/_Subject.cshtml index fdb124e4..767f2a91 100644 --- a/Disco.Web/Views/Device/DeviceParts/_Subject.cshtml +++ b/Disco.Web/Views/Device/DeviceParts/_Subject.cshtml @@ -282,14 +282,20 @@ @Html.DropDownList("Device_Show_GenerateDocument", Model.DocumentTemplatesSelectListItems) \r\n \r\n"); +WriteLiteral("?DocumentTemplateId=\';\r\n var generatePackageUrl = " + +"\'"); - #line 317 "..\..\Views\Device\DeviceParts\_Subject.cshtml" + #line 286 "..\..\Views\Device\DeviceParts\_Subject.cshtml" + Write(Url.Action(MVC.API.Device.GeneratePdfPackage(Model.Device.SerialNumber, null))); + + + #line default + #line hidden +WriteLiteral("?DocumentTemplatePackageId=\';\r\n var $documentTempl" + +"ates = $(\'#Device_Show_GenerateDocument\');\r\n var " + +"$generationHost;\r\n\r\n $documentTemplates.change(fu" + +"nction () {\r\n var v = $documentTemplates.val(" + +");\r\n if (v) {\r\n " + +" var url;\r\n if (v.lastIndexOf(\'P" + +"ackage:\', 0) === 0) {\r\n url = generat" + +"ePackageUrl + v.substring(8);\r\n } else {\r" + +"\n url = generatePdfUrl + v;\r\n " + +" }\r\n\r\n if " + +"($.connection && $.connection.hub && $.connection.hub.transport &&\r\n " + +" $.connection.hub.transport.name == \'foreverF" + +"rame\') {\r\n // SignalR active with for" + +"everFrame transport - use popup window\r\n " + +" window.open(url, \'_blank\', \'height=150,width=250,location=no,menubar=no,resi" + +"zable=no,scrollbars=no,status=no,toolbar=no\');\r\n " + +" } else {\r\n // use iFrame\r\n " + +" if (!$generationHost) {\r\n " + +" $generationHost = $(\'