From d86280ae3e6292d3aca9a6a11133329c3fbf326c Mon Sep 17 00:00:00 2001 From: Gary Sharp Date: Wed, 16 Apr 2014 13:16:08 +1000 Subject: [PATCH] Fix various Multi-Domain bugs --- .../DocumentUniqueIdentifier.cs | 19 ++- Disco.BI/BI/Interop/Pdf/PdfImporter.cs | 2 +- Disco.Models/Repository/User/User.cs | 9 ++ .../API/Controllers/JobQueueController.cs | 2 +- .../Areas/API/Models/JobQueue/SubjectItem.cs | 2 +- .../Areas/Config/Models/JobQueue/ShowModel.cs | 2 +- .../DocumentTemplate/ImportStatus.cshtml | 19 ++- .../ImportStatus.generated.cs | 148 +++++++++--------- .../Areas/Config/Views/JobQueue/Show.cshtml | 2 +- .../Config/Views/JobQueue/Show.generated.cs | 134 ++++++++-------- .../Style/Fancytree/disco.fancytree.css | 19 --- .../Style/Fancytree/disco.fancytree.less | 27 +--- .../Style/Fancytree/disco.fancytree.min.css | 2 +- Disco.Web/Disco.Web.csproj | 43 ++--- Disco.Web/T4MVC.cs | 14 +- 15 files changed, 220 insertions(+), 224 deletions(-) diff --git a/Disco.BI/BI/DocumentTemplateBI/DocumentUniqueIdentifier.cs b/Disco.BI/BI/DocumentTemplateBI/DocumentUniqueIdentifier.cs index 6ade8f62..a9380203 100644 --- a/Disco.BI/BI/DocumentTemplateBI/DocumentUniqueIdentifier.cs +++ b/Disco.BI/BI/DocumentTemplateBI/DocumentUniqueIdentifier.cs @@ -1,5 +1,6 @@ using Disco.Data.Repository; using Disco.Models.Repository; +using Disco.Services.Interop.ActiveDirectory; using System; namespace Disco.BI.DocumentTemplateBI { @@ -65,10 +66,14 @@ namespace Disco.BI.DocumentTemplateBI } public DocumentUniqueIdentifier(string TemplateTypeId, string DataId, string CreatorId, DateTime TimeStamp, int? Page = null, string Tag = null) { + var creatorId = (string.IsNullOrEmpty(CreatorId) || CreatorId.IndexOf('\\') > -1) + ? CreatorId + : string.Format(@"{0}\{1}", ActiveDirectory.PrimaryDomain.NetBiosName, CreatorId); + this.Tag = Tag; this.TemplateTypeId = TemplateTypeId; this.DataId = DataId; - this.CreatorId = CreatorId; + this.CreatorId = creatorId; this.TimeStamp = TimeStamp; this.Page = Page ?? 0; } @@ -93,7 +98,11 @@ namespace Disco.BI.DocumentTemplateBI } if (s.Length >= 5) { - this.CreatorId = s[4]; + var creatorId = s[4]; + if (!string.IsNullOrWhiteSpace(creatorId) && creatorId.IndexOf('\\') < 0) + creatorId = string.Format(@"{0}\{1}", ActiveDirectory.PrimaryDomain.NetBiosName, creatorId); + + this.CreatorId = creatorId; } if (s.Length >= 6) { @@ -180,6 +189,12 @@ namespace Disco.BI.DocumentTemplateBI } break; case DocumentTemplate.DocumentTemplateScopes.User: + + // Patch for existing documents (before DBv13 - Multi-Domain Support) + // Add default domain to User Ids + if (this.DataId.IndexOf('\\') < 0) + this.DataId = string.Format(@"{0}\{1}", ActiveDirectory.PrimaryDomain.NetBiosName, this.DataId); + User u = Database.Users.Find(this.DataId); if (u != null) { diff --git a/Disco.BI/BI/Interop/Pdf/PdfImporter.cs b/Disco.BI/BI/Interop/Pdf/PdfImporter.cs index 6f196766..65aa240b 100644 --- a/Disco.BI/BI/Interop/Pdf/PdfImporter.cs +++ b/Disco.BI/BI/Interop/Pdf/PdfImporter.cs @@ -409,7 +409,7 @@ namespace Disco.BI.Interop.Pdf pdfPagesAssigned.Add(PageNumber, new Tuple(docId, pageResult.AttachmentThumbnailImage.ToArray())); docId.LoadComponents(Database); - DocumentImporterLog.LogImportPageDetected(SessionId, PageNumber, docId.DocumentUniqueId, docId.DocumentTemplate.Description, docId.DocumentTemplate.Scope, docId.DataId, docId.DataDescription); + DocumentImporterLog.LogImportPageDetected(SessionId, PageNumber, docId.TemplateTypeId, docId.DocumentTemplate.Description, docId.DocumentTemplate.Scope, docId.DataId, docId.DataDescription); } else { diff --git a/Disco.Models/Repository/User/User.cs b/Disco.Models/Repository/User/User.cs index 9eedea26..7f68fbd5 100644 --- a/Disco.Models/Repository/User/User.cs +++ b/Disco.Models/Repository/User/User.cs @@ -32,6 +32,15 @@ namespace Disco.Models.Repository [NotMapped, Obsolete("Should be using Combined Domain\\User format - UserId")] public string Id + { + get + { + return DomainUsername; + } + } + + [NotMapped] + public string DomainUsername { get { diff --git a/Disco.Web/Areas/API/Controllers/JobQueueController.cs b/Disco.Web/Areas/API/Controllers/JobQueueController.cs index 239a5e78..b20a07d4 100644 --- a/Disco.Web/Areas/API/Controllers/JobQueueController.cs +++ b/Disco.Web/Areas/API/Controllers/JobQueueController.cs @@ -294,7 +294,7 @@ namespace Disco.Web.Areas.API.Controllers if (invalidSubjects.Count > 0) throw new ArgumentException(string.Format("Subjects not found: {0}", string.Join(", ", invalidSubjects)), "Subjects"); - var proposedSubjects = subjects.Select(s => s.Item2.SamAccountName).OrderBy(s => s).ToArray(); + var proposedSubjects = subjects.Select(s => s.Item2.NetBiosId).OrderBy(s => s).ToArray(); subjectIds = string.Join(",", proposedSubjects); diff --git a/Disco.Web/Areas/API/Models/JobQueue/SubjectItem.cs b/Disco.Web/Areas/API/Models/JobQueue/SubjectItem.cs index d34e77a6..309f1168 100644 --- a/Disco.Web/Areas/API/Models/JobQueue/SubjectItem.cs +++ b/Disco.Web/Areas/API/Models/JobQueue/SubjectItem.cs @@ -16,7 +16,7 @@ namespace Disco.Web.Areas.API.Models.JobQueue { return new Models.JobQueue.SubjectItem() { - Id = ADObject.SamAccountName, + Id = ADObject.NetBiosId, Name = ADObject.DisplayName, Type = ADObject is ActiveDirectoryGroup ? "group" : "user" }; diff --git a/Disco.Web/Areas/Config/Models/JobQueue/ShowModel.cs b/Disco.Web/Areas/Config/Models/JobQueue/ShowModel.cs index d57e2dd6..bc6619b5 100644 --- a/Disco.Web/Areas/Config/Models/JobQueue/ShowModel.cs +++ b/Disco.Web/Areas/Config/Models/JobQueue/ShowModel.cs @@ -24,7 +24,7 @@ namespace Disco.Web.Areas.Config.Models.JobQueue { var item = new SubjectDescriptor() { - Id = ADObject.SamAccountName, + Id = ADObject.NetBiosId, Name = ADObject.DisplayName }; diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml b/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml index d6050155..869bd700 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml @@ -168,13 +168,18 @@ self.assignedDataUrl = ko.computed(function () { var t = self.assignedDataType(); var dId = self.assignedDataId(); - switch (t) { - case 'Device': - return urlDeviceShow + dId; - case 'Job': - return urlJobShow + dId; - case 'User': - return urlUserShow + dId; + if (dId !== undefined) { + switch (t) { + case 'Device': + return urlDeviceShow + dId; + case 'Job': + return urlJobShow + dId; + case 'User': + if (dId.indexOf('\\') < 0) + return urlUserShow + dId; + else + return urlUserShow + dId.substr(dId.indexOf('\\') + 1) + '?domain=' + dId.substr(0, dId.indexOf('\\')); + } } return null; }); diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.generated.cs b/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.generated.cs index 5031ed0c..037a4ea9 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.generated.cs +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.generated.cs @@ -2,7 +2,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34011 +// Runtime Version:4.0.30319.34014 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -354,77 +354,81 @@ WriteLiteral("\';\r\n var isLive = false;\r\n\r\n function pageVie " {\r\n return urlManuallyAssign + \'#\' + self.sessionId + \'_\' + self" + ".pageNumber;\r\n });\r\n self.assignedDataUrl = ko.computed(fu" + "nction () {\r\n var t = self.assignedDataType();\r\n v" + -"ar dId = self.assignedDataId();\r\n switch (t) {\r\n " + -" case \'Device\':\r\n return urlDeviceShow + dId;\r\n " + -" case \'Job\':\r\n return urlJobShow + dId;\r\n " + -" case \'User\':\r\n return urlUserShow + dId;\r\n" + -" }\r\n return null;\r\n });\r\n se" + -"lf.thumbnailUrl = ko.computed(function () {\r\n var enabled = self." + -"thumbnailEnabled();\r\n if (enabled > 0) {\r\n ret" + -"urn \'url(\' + urlPageThumbnail + \'?SessionId=\' + self.sessionId + \'&PageNumber=\' " + -"+ self.pageNumber + \'&NoCache=\' + enabled + \')\';\r\n }\r\n " + -" return null;\r\n });\r\n }\r\n\r\n function parseLog(log) " + -"{\r\n if (log.ModuleId === 40 && log.Arguments && log.Arguments.length " + -"> 0) {\r\n // find session\r\n var sessionId = log.Arg" + -"uments[0];\r\n var session = vm.sessionIndex[sessionId];\r\n " + -" if (!session && log.EventTypeId === 10) { // Starting Session (Ignore \'pa" + -"rtial\' sessions)\r\n session = new sessionViewModel(log.Argumen" + -"ts[1]);\r\n vm.sessionIndex[sessionId] = session;\r\n " + -" vm.sessions.unshift(session);\r\n vm.noSessions(false);" + -"\r\n }\r\n if (session) {\r\n switch " + -"(log.EventTypeId) {\r\n case 10: // SessionStarting\r\n " + -" session.startTime(log.FormattedTimestamp.substring(log.For" + -"mattedTimestamp.indexOf(\' \') + 1));\r\n break;\r\n " + -" case 11: // SessionProgress\r\n sessio" + -"n.progressValue(log.Arguments[1]);\r\n session.progress" + -"Status(log.Arguments[2]);\r\n break;\r\n " + -" case 12: // SessionFinished\r\n session.sessionE" + -"nded(true);\r\n session.progressStatus(\'Import Finished" + -"\');\r\n break;\r\n case 15: // Ses" + -"sionWarning\r\n session.messages.unshift(log);\r\n " + -" break;\r\n case 16: // SessionError\r\n " + -" session.messages.unshift(log);\r\n " + -" break;\r\n case 100: // ImportPageStarting\r\n " + -" session.addSessionPage(new sessionPageViewModel(sessionId, l" + -"og.Arguments[1]));\r\n break;\r\n " + -"case 104: // ImportPageImageUpdate\r\n var p = session." + -"sessionPagesIndex[log.Arguments[1]];\r\n if (p) {\r\n " + -" p.updateThumbnail();\r\n }\r" + -"\n break;\r\n case 105: // Import" + -"PageProgress\r\n var p = session.sessionPagesIndex[log." + -"Arguments[1]];\r\n if (p) {\r\n " + -" p.progressValue(log.Arguments[2]);\r\n p.prog" + -"ressStatus(log.Arguments[3]);\r\n }\r\n " + -" break;\r\n case 110: // ImportPageDetected\r\n " + -" var p = session.sessionPagesIndex[log.Arguments[1]];\r\n " + -" if (p) {\r\n p.documentTem" + -"plateId(log.Arguments[2]);\r\n p.documentTemplate(l" + -"og.Arguments[3]);\r\n p.assignedDataType(log.Argume" + -"nts[4]);\r\n p.assignedDataId(log.Arguments[5]);\r\n " + -" p.assignedData(log.Arguments[6]);\r\n " + -" p.detected(true);\r\n if (!isLive" + -") {\r\n p.updateThumbnail();\r\n " + -" }\r\n }\r\n ses" + -"sion.messages.unshift(log);\r\n break;\r\n " + -" case 115: // ImportPageUndetected\r\n var p = " + -"session.sessionPagesIndex[log.Arguments[1]];\r\n if (p)" + -" {\r\n p.undetected(true);\r\n " + -" if (!isLive) {\r\n p.updateThumbnail()" + -";\r\n }\r\n }\r\n " + -" session.messages.unshift(log);\r\n bre" + -"ak;\r\n case 150: // Ignore: ImportPageUndetectedStored\r\n " + -" break;\r\n default:\r\n " + -" session.messages.unshift(log);\r\n }\r\n " + -" }\r\n }\r\n }\r\n function init() {\r\n // Cr" + -"eate View Model\r\n vm = new pageViewModel();\r\n\r\n // Load Lo" + -"gs\r\n var d = new Date();\r\n var loadData = {\r\n " + -" Format: \"json\",\r\n Start: d.getFullYear() + \'-\' + (d.getMonth()" + -" + 1) + \'-\' + d.getDate(),\r\n End: null,\r\n ModuleId" + -": 40,\r\n Take: 2000\r\n };\r\n $.ajax({\r\n " + -" url: \'"); +"ar dId = self.assignedDataId();\r\n if (dId !== undefined) {\r\n " + +" switch (t) {\r\n case \'Device\':\r\n " + +" return urlDeviceShow + dId;\r\n case \'Job\'" + +":\r\n return urlJobShow + dId;\r\n " + +" case \'User\':\r\n if (dId.indexOf(\'\\\\\') < 0)\r\n " + +" return urlUserShow + dId;\r\n el" + +"se\r\n return urlUserShow + dId.substr(dId.indexOf(" + +"\'\\\\\') + 1) + \'?domain=\' + dId.substr(0, dId.indexOf(\'\\\\\'));\r\n " + +" }\r\n }\r\n return null;\r\n });\r\n " + +" self.thumbnailUrl = ko.computed(function () {\r\n var enabled = s" + +"elf.thumbnailEnabled();\r\n if (enabled > 0) {\r\n " + +" return \'url(\' + urlPageThumbnail + \'?SessionId=\' + self.sessionId + \'&PageNumbe" + +"r=\' + self.pageNumber + \'&NoCache=\' + enabled + \')\';\r\n }\r\n " + +" return null;\r\n });\r\n }\r\n\r\n function parseLog(l" + +"og) {\r\n if (log.ModuleId === 40 && log.Arguments && log.Arguments.len" + +"gth > 0) {\r\n // find session\r\n var sessionId = log" + +".Arguments[0];\r\n var session = vm.sessionIndex[sessionId];\r\n " + +" if (!session && log.EventTypeId === 10) { // Starting Session (Ignore" + +" \'partial\' sessions)\r\n session = new sessionViewModel(log.Arg" + +"uments[1]);\r\n vm.sessionIndex[sessionId] = session;\r\n " + +" vm.sessions.unshift(session);\r\n vm.noSessions(fal" + +"se);\r\n }\r\n if (session) {\r\n swi" + +"tch (log.EventTypeId) {\r\n case 10: // SessionStarting\r\n " + +" session.startTime(log.FormattedTimestamp.substring(log" + +".FormattedTimestamp.indexOf(\' \') + 1));\r\n break;\r\n " + +" case 11: // SessionProgress\r\n se" + +"ssion.progressValue(log.Arguments[1]);\r\n session.prog" + +"ressStatus(log.Arguments[2]);\r\n break;\r\n " + +" case 12: // SessionFinished\r\n session.sess" + +"ionEnded(true);\r\n session.progressStatus(\'Import Fini" + +"shed\');\r\n break;\r\n case 15: //" + +" SessionWarning\r\n session.messages.unshift(log);\r\n " + +" break;\r\n case 16: // SessionErro" + +"r\r\n session.messages.unshift(log);\r\n " + +" break;\r\n case 100: // ImportPageStarting\r\n " + +" session.addSessionPage(new sessionPageViewModel(sessionI" + +"d, log.Arguments[1]));\r\n break;\r\n " + +" case 104: // ImportPageImageUpdate\r\n var p = sess" + +"ion.sessionPagesIndex[log.Arguments[1]];\r\n if (p) {\r\n" + +" p.updateThumbnail();\r\n " + +" }\r\n break;\r\n case 105: // Im" + +"portPageProgress\r\n var p = session.sessionPagesIndex[" + +"log.Arguments[1]];\r\n if (p) {\r\n " + +" p.progressValue(log.Arguments[2]);\r\n p." + +"progressStatus(log.Arguments[3]);\r\n }\r\n " + +" break;\r\n case 110: // ImportPageDetected\r\n " + +" var p = session.sessionPagesIndex[log.Arguments[1]];\r" + +"\n if (p) {\r\n p.documen" + +"tTemplateId(log.Arguments[2]);\r\n p.documentTempla" + +"te(log.Arguments[3]);\r\n p.assignedDataType(log.Ar" + +"guments[4]);\r\n p.assignedDataId(log.Arguments[5])" + +";\r\n p.assignedData(log.Arguments[6]);\r\n " + +" p.detected(true);\r\n if (!is" + +"Live) {\r\n p.updateThumbnail();\r\n " + +" }\r\n }\r\n " + +" session.messages.unshift(log);\r\n break;\r\n " + +" case 115: // ImportPageUndetected\r\n var " + +"p = session.sessionPagesIndex[log.Arguments[1]];\r\n if" + +" (p) {\r\n p.undetected(true);\r\n " + +" if (!isLive) {\r\n p.updateThumbna" + +"il();\r\n }\r\n }\r\n " + +" session.messages.unshift(log);\r\n " + +" break;\r\n case 150: // Ignore: ImportPageUndetectedStored" + +"\r\n break;\r\n default:\r\n " + +" session.messages.unshift(log);\r\n }\r\n " + +" }\r\n }\r\n }\r\n function init() {\r\n /" + +"/ Create View Model\r\n vm = new pageViewModel();\r\n\r\n // Loa" + +"d Logs\r\n var d = new Date();\r\n var loadData = {\r\n " + +" Format: \"json\",\r\n Start: d.getFullYear() + \'-\' + (d.getMon" + +"th() + 1) + \'-\' + d.getDate(),\r\n End: null,\r\n Modu" + +"leId: 40,\r\n Take: 2000\r\n };\r\n $.ajax({\r\n " + +" url: \'"); - #line 283 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" + #line 288 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" Write(Url.Action(MVC.API.Logging.RetrieveEvents())); @@ -453,7 +457,7 @@ WriteLiteral(@"', liveConnection = $.connection('"); - #line 303 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" + #line 308 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" Write(Url.Content("~/API/Logging/Notifications")); @@ -462,7 +466,7 @@ WriteLiteral(@"', WriteLiteral("\', { addToGroups: \'"); - #line 303 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" + #line 308 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" Write(Disco.BI.DocumentTemplateBI.Importer.DocumentImporterLog.Current.LiveLogGroupName); diff --git a/Disco.Web/Areas/Config/Views/JobQueue/Show.cshtml b/Disco.Web/Areas/Config/Views/JobQueue/Show.cshtml index 86161895..b69f1e23 100644 --- a/Disco.Web/Areas/Config/Views/JobQueue/Show.cshtml +++ b/Disco.Web/Areas/Config/Views/JobQueue/Show.cshtml @@ -429,7 +429,7 @@ $.ajax({ url: '@Url.Action(MVC.API.JobQueue.Subject())', - method: 'get', + method: 'post', data: { Id: id } }).done(function (response) { if (response) { diff --git a/Disco.Web/Areas/Config/Views/JobQueue/Show.generated.cs b/Disco.Web/Areas/Config/Views/JobQueue/Show.generated.cs index 7096c6b1..dc43a109 100644 --- a/Disco.Web/Areas/Config/Views/JobQueue/Show.generated.cs +++ b/Disco.Web/Areas/Config/Views/JobQueue/Show.generated.cs @@ -2,7 +2,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34011 +// Runtime Version:4.0.30319.34014 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -1373,53 +1373,53 @@ WriteLiteral("\',\r\n minLength: #line default #line hidden -WriteLiteral("\',\r\n method: \'get\',\r\n " + -" data: { Id: id }\r\n }).done" + -"(function (response) {\r\n if (response) {\r" + -"\n if (list.find(\'li[data-subjectid=\"\'" + -" + response.Id + \'\"]\').filter(\'[data-status!=\"removed\"]\').length == 0) {\r\n\r\n " + -" var liIcon = $(\'\').addClass(\'fa f" + -"a-lg\');\r\n if (response.Type === \'" + -"user\')\r\n liIcon.addClass(\'fa-" + -"user\');\r\n else\r\n " + -" liIcon.addClass(\'fa-users\');\r\n\r\n " + -" var li = $(\'
  • \')\r\n " + -" .append(liIcon)\r\n " + -" .append($(\'\').text(response.Id == response.Name ? response" + -".Id : response.Name + \' [\' + response.Id + \']\'))\r\n " + -" .append($(\'\').addClass(\'fa fa-times-circle remove\'))\r\n " + -" .addClass(response.Type)\r\n " + -" .attr(\'data-subjectid\', respons" + -"e.Id)\r\n .attr(\'data-subjectst" + -"atus\', \'new\');\r\n\r\n list.append(li" + -");\r\n\r\n updateNoSubjects();\r\n " + -" } else {\r\n " + -" alert(\'That subject has already been added\');\r\n " + -" }\r\n } else {\r" + -"\n alert(\'Unknown Id\');\r\n " + -" }\r\n }).fail(functi" + -"on (jqXHR, textStatus, errorThrown) {\r\n a" + -"lert(\'Error: \' + errorThrown);\r\n });\r\n " + -" }\r\n\r\n function updat" + -"eNoSubjects() {\r\n if (list.find(\'li:visible\')" + -".length > 0)\r\n noSubjects.hide();\r\n " + -" else\r\n noSu" + -"bjects.show();\r\n }\r\n\r\n " + -" function saveChanges() {\r\n var form = $(" + -"\'#Config_JobQueues_Subjects_Update_Dialog_Form\').empty();\r\n\r\n " + -" list.find(\'li[data-subjectstatus!=\"removed\"]\').each(function ()" + -" {\r\n var subjectId = $(this).attr(\'data-s" + -"ubjectid\');\r\n\r\n form.append($(\'\')." + -"attr({\r\n \'name\': \'Subjects\',\r\n " + -" \'type\': \'hidden\'\r\n " + -" }).val(subjectId));\r\n\r\n }).get" + -"();\r\n\r\n form.submit();\r\n\r\n " + -" dialog.dialog(\"disable\");\r\n " + -"dialog.dialog(\"option\", \"buttons\", null);\r\n }\r\n\r\n" + -" $(function () {\r\n " + -" $(\'#Config_JobQueues_Subjects_Update\').click(showDialog);\r\n " + -" });\r\n\r\n })();\r\n " + -" \r\n \r\n"); +WriteLiteral("\',\r\n method: \'post\',\r\n " + +" data: { Id: id }\r\n }).don" + +"e(function (response) {\r\n if (response) {" + +"\r\n if (list.find(\'li[data-subjectid=\"" + +"\' + response.Id + \'\"]\').filter(\'[data-status!=\"removed\"]\').length == 0) {\r\n\r\n " + +" var liIcon = $(\'\').addClass(\'fa " + +"fa-lg\');\r\n if (response.Type === " + +"\'user\')\r\n liIcon.addClass(\'fa" + +"-user\');\r\n else\r\n " + +" liIcon.addClass(\'fa-users\');\r\n\r\n " + +" var li = $(\'
  • \')\r\n " + +" .append(liIcon)\r\n " + +" .append($(\'\').text(response.Id == response.Name ? respons" + +"e.Id : response.Name + \' [\' + response.Id + \']\'))\r\n " + +" .append($(\'\').addClass(\'fa fa-times-circle remove\'))\r\n" + +" .addClass(response.Type)\r\n " + +" .attr(\'data-subjectid\', respon" + +"se.Id)\r\n .attr(\'data-subjects" + +"tatus\', \'new\');\r\n\r\n list.append(l" + +"i);\r\n\r\n updateNoSubjects();\r\n " + +" } else {\r\n " + +" alert(\'That subject has already been added\');\r\n " + +" }\r\n } else {" + +"\r\n alert(\'Unknown Id\');\r\n " + +" }\r\n }).fail(funct" + +"ion (jqXHR, textStatus, errorThrown) {\r\n " + +"alert(\'Error: \' + errorThrown);\r\n });\r\n " + +" }\r\n\r\n function upda" + +"teNoSubjects() {\r\n if (list.find(\'li:visible\'" + +").length > 0)\r\n noSubjects.hide();\r\n " + +" else\r\n noS" + +"ubjects.show();\r\n }\r\n\r\n " + +" function saveChanges() {\r\n var form = $" + +"(\'#Config_JobQueues_Subjects_Update_Dialog_Form\').empty();\r\n\r\n " + +" list.find(\'li[data-subjectstatus!=\"removed\"]\').each(function (" + +") {\r\n var subjectId = $(this).attr(\'data-" + +"subjectid\');\r\n\r\n form.append($(\'\')" + +".attr({\r\n \'name\': \'Subjects\',\r\n " + +" \'type\': \'hidden\'\r\n " + +" }).val(subjectId));\r\n\r\n }).ge" + +"t();\r\n\r\n form.submit();\r\n\r\n " + +" dialog.dialog(\"disable\");\r\n " + +" dialog.dialog(\"option\", \"buttons\", null);\r\n }\r\n\r" + +"\n $(function () {\r\n " + +" $(\'#Config_JobQueues_Subjects_Update\').click(showDialog);\r\n " + +" });\r\n\r\n })();\r\n " + +" \r\n \r\n"); #line 499 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" @@ -1613,15 +1613,15 @@ WriteLiteral(">\r\n"); #line hidden WriteLiteral(" (jt.Id +, Tuple.Create(Tuple.Create("", 28541), Tuple.Create(jt.Id #line default #line hidden -, 28540), false) +, 28541), false) ); WriteLiteral(" class=\"jobTypes\""); @@ -1629,29 +1629,29 @@ WriteLiteral(" class=\"jobTypes\""); WriteLiteral(">\r\n

    \r\n (jt.Id +, Tuple.Create(Tuple.Create("", 28661), Tuple.Create(jt.Id #line default #line hidden -, 28660), false) +, 28661), false) ); WriteLiteral(" class=\"jobType\""); WriteLiteral(" type=\"checkbox\""); -WriteAttribute("value", Tuple.Create(" value=\"", 28701), Tuple.Create("\"", 28717) +WriteAttribute("value", Tuple.Create(" value=\"", 28702), Tuple.Create("\"", 28718) #line 546 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - , Tuple.Create(Tuple.Create("", 28709), Tuple.Create(jt.Id + , Tuple.Create(Tuple.Create("", 28710), Tuple.Create(jt.Id #line default #line hidden -, 28709), false) +, 28710), false) ); WriteLiteral(" "); @@ -1665,15 +1665,15 @@ WriteLiteral(" "); #line hidden WriteLiteral(" />(jt.Id + , Tuple.Create(Tuple.Create("", 28801), Tuple.Create(jt.Id #line default #line hidden -, 28800), false) +, 28801), false) ); WriteLiteral(">"); @@ -1687,15 +1687,15 @@ WriteLiteral(">"); #line hidden WriteLiteral("

    \r\n (jt.Id +, Tuple.Create(Tuple.Create("", 28891), Tuple.Create(jt.Id #line default #line hidden -, 28890), false) +, 28891), false) ); WriteLiteral(" class=\"jobSubTypes\""); diff --git a/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.css b/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.css index d3178617..df332816 100644 --- a/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.css +++ b/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.css @@ -505,22 +505,3 @@ span.fancytree-node.fancytree-selected { font-style: normal; background: none; } -span.fancytree-checkbox { - margin-left: 3px; - background-position: -96px -32px; -} -span.fancytree-checkbox:hover { - background-position: -96px -32px; -} -.fancytree-partsel span.fancytree-checkbox { - background-position: -128px -32px; -} -.fancytree-partsel span.fancytree-checkbox:hover { - background-position: -128px -32px; -} -.fancytree-selected span.fancytree-checkbox { - background-position: -112px -32px; -} -.fancytree-selected span.fancytree-checkbox:hover { - background-position: -112px -32px; -} diff --git a/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.less b/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.less index 79b9eacd..810aa34a 100644 --- a/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.less +++ b/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.less @@ -40,29 +40,4 @@ span.fancytree-node.fancytree-selected { font-style: normal; background: none; - } - - span.fancytree-checkbox { - margin-left: 3px; - background-position: -96px -32px; - } - - span.fancytree-checkbox:hover { - background-position: -96px -32px; - } - - .fancytree-partsel span.fancytree-checkbox { - background-position: -128px -32px; - } - - .fancytree-partsel span.fancytree-checkbox:hover { - background-position: -128px -32px; - } - - .fancytree-selected span.fancytree-checkbox { - background-position: -112px -32px; - } - - .fancytree-selected span.fancytree-checkbox:hover { - background-position: -112px -32px; - } \ No newline at end of file + } \ No newline at end of file diff --git a/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.min.css b/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.min.css index 4426e640..dc3b9863 100644 --- a/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.min.css +++ b/Disco.Web/ClientSource/Style/Fancytree/disco.fancytree.min.css @@ -1 +1 @@ -.ui-helper-hidden{display:none}.fancytree-container{font-size:10pt;white-space:nowrap;padding:3px;margin:0;background-color:#fff;border:1px dotted gray;overflow:auto;height:100%}ul.fancytree-container ul{padding:0 0 0 16px;margin:0}ul.fancytree-container li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0;padding:1px 0 0 0}ul.fancytree-container li.fancytree-lastsib{background-image:none}ul.fancytree-no-connector>li{background-image:none}.ui-fancytree-disabled ul.fancytree-container{opacity:.5;background-color:silver}span.fancytree-node{display:inline-block;width:100%;border:1px solid transparent}span.fancytree-empty,span.fancytree-vline,span.fancytree-expander,span.fancytree-icon,span.fancytree-checkbox,span.fancytree-radio,span.fancytree-drag-helper-img,#fancytree-drop-marker{width:16px;height:16px;display:inline-block;vertical-align:top;background-repeat:no-repeat;background-position:left;background-image:url('data:image/png;base64,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');background-position:0 0}span.fancytree-custom-icon{display:inline-block}.fancytree-container img{width:16px;height:16px;margin-left:3px;vertical-align:top;border-style:none}span.fancytree-expander{background-position:0 -80px;cursor:pointer}span.fancytree-expander:hover{background-position:-16px -80px}.fancytree-exp-n span.fancytree-expander:hover{background-position:-16px -80px}.fancytree-exp-e span.fancytree-expander,.fancytree-exp-ed span.fancytree-expander,.fancytree-exp-el span.fancytree-expander,.fancytree-exp-edl span.fancytree-expander{background-position:-32px -80px}.fancytree-exp-e span.fancytree-expander:hover,.fancytree-exp-ed span.fancytree-expander:hover,.fancytree-exp-el span.fancytree-expander:hover,.fancytree-exp-edl span.fancytree-expander:hover{background-position:-48px -80px}.fancytree-loading span.fancytree-expander{background-position:0 0;background-image:url(data:image/gif;base64,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)}.fancytree-exp-n span.fancytree-expander,.fancytree-exp-nl span.fancytree-expander{background-image:none;cursor:default}span.fancytree-checkbox{margin-left:3px;background-position:0 -32px}span.fancytree-checkbox:hover{background-position:-16px -32px}.fancytree-partsel span.fancytree-checkbox{background-position:-64px -32px}.fancytree-partsel span.fancytree-checkbox:hover{background-position:-80px -32px}.fancytree-selected span.fancytree-checkbox{background-position:-32px -32px}.fancytree-selected span.fancytree-checkbox:hover{background-position:-48px -32px}.fancytree-radio span.fancytree-checkbox{margin-left:3px;background-position:0 -48px}.fancytree-radio span.fancytree-checkbox:hover{background-position:-16px -48px}.fancytree-radio .fancytree-partsel span.fancytree-checkbox{background-position:-64px -48px}.fancytree-radio .fancytree-partsel span.fancytree-checkbox:hover{background-position:-80px -48px}.fancytree-radio .fancytree-selected span.fancytree-checkbox{background-position:-32px -48px}.fancytree-radio .fancytree-selected span.fancytree-checkbox:hover{background-position:-48px -48px}span.fancytree-icon{margin-left:3px;background-position:0 0}.fancytree-has-children span.fancytree-icon{}.fancytree-ico-cf span.fancytree-icon{background-position:0 -16px}.fancytree-ico-ef span.fancytree-icon{background-position:-64px -16px}.fancytree-statusnode-wait span.fancytree-icon{background-image:url(data:image/gif;base64,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)}.fancytree-statusnode-error span.fancytree-icon{background-position:0 -112px}span.fancytree-title{display:inline-block}a.fancytree-title{text-decoration:none}.fancytree-title{display:inline-block;padding-left:3px;padding-right:3px;color:#000;vertical-align:top;margin:0;margin-left:3px;cursor:pointer}span.fancytree-node:hover{background-color:#e5f3fb;border-color:#70c0e7}.fancytree-container.fancytree-focused span.fancytree-node.fancytree-focused{border-color:#39f}span.fancytree-node.fancytree-active,span.fancytree-node.fancytree-selected{background-color:#f7f7f7;border-color:#dedede}.fancytree-container.fancytree-focused span.fancytree-node.fancytree-active,.fancytree-container.fancytree-focused span.fancytree-node.fancytree-selected,span.fancytree-node.fancytree-active:hover,span.fancytree-node.fancytree-selected:hover{background-color:#cbe8f6;border-color:#26a0da}span.fancytree-node.fancytree-selected{font-style:italic}table.fancytree-ext-table{border-collapse:collapse}table.fancytree-ext-table tbody tr:hover{background-color:#e5f3fb;outline:1px solid #70c0e7}table.fancytree-ext-table.fancytree-container.fancytree-focused span.fancytree-node.fancytree-focused{outline:1px solid #39f}table.fancytree-ext-table.fancytree-focused tbody tr.fancytree-focused{outline:1px solid #26a0da}table.fancytree-ext-table.fancytree-focused tbody tr.fancytree-active,table.fancytree-ext-table.fancytree-focused tbody tr.fancytree-selected{background-color:#cbe8f6;outline:1px solid #26a0da}table.fancytree-ext-table tbody tr.fancytree-active,table.fancytree-ext-table tbody tr.fancytree-selected{background-color:#f7f7f7;outline:1px solid #dedede}table.fancytree-ext-columnview td{position:relative}table.fancytree-ext-columnview td>ul{padding:0}table.fancytree-ext-columnview td>ul li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0;padding:1px 0 0 0}table.fancytree-ext-columnview tbody tr td{border:1px solid gray;vertical-align:top;overflow:auto}table.fancytree-ext-columnview span.fancytree-node{position:relative}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#cbe8f6}table.fancytree-ext-columnview span.fancytree-cv-right{background-position:0 -80px;position:absolute;right:3px}.fancytree-ext-filter span.fancytree-node .fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter span.fancytree-node.fancytree-submatch .fancytree-title{color:#000;font-weight:normal}.fancytree-ext-filter span.fancytree-node.fancytree-match .fancytree-title{color:#000;font-weight:bold}div.fancytree-drag-helper a{border:1px solid gray;background-color:#fff;padding-left:5px;padding-right:5px;opacity:.8}span.fancytree-drag-helper-img{}div.fancytree-drag-helper{}div.fancytree-drop-accept span.fancytree-drag-helper-img{background-position:-32px -112px}div.fancytree-drag-helper.fancytree-drop-reject{border-color:red}div.fancytree-drop-reject span.fancytree-drag-helper-img{background-position:-16px -112px}#fancytree-drop-marker{width:24px;position:absolute;background-position:0 -128px;margin:0}#fancytree-drop-marker.fancytree-drop-after,#fancytree-drop-marker.fancytree-drop-before{width:64px;background-position:0 -144px}#fancytree-drop-marker.fancytree-drop-copy{background-position:-64px -128px}#fancytree-drop-marker.fancytree-drop-move{background-position:-64px -128px}span.fancytree-drag-source{background-color:#e0e0e0}span.fancytree-drag-source a{color:gray}span.fancytree-drop-target{}span.fancytree-drop-target.fancytree-drop-accept a{background-color:#3169c6!important;color:#fff!important;text-decoration:none}span.fancytree-drop-target.fancytree-drop-reject{}.fancytree-container{border:none}span.fancytree-node{padding:1px;border:none}span.fancytree-node>span.fancytree-icon{background:none;display:inline-block;font-family:FontAwesome;font-size:1.2em;width:14px}span.fancytree-ico-ef>span.fancytree-icon:before{color:#9e9e9e;font-size:1em;content:""}span.fancytree-ico-cf>span.fancytree-icon:before{color:#9e9e9e;font-size:1em;content:""}span.fancytree-ico-c>span.fancytree-icon:before{color:#e51400;content:""}span.fancytree-ico-c.fancytree-selected>span.fancytree-icon:before{color:#60a917;content:""}span.fancytree-node.fancytree-selected{font-style:normal;background:none}span.fancytree-checkbox{margin-left:3px;background-position:-96px -32px}span.fancytree-checkbox:hover{background-position:-96px -32px}.fancytree-partsel span.fancytree-checkbox{background-position:-128px -32px}.fancytree-partsel span.fancytree-checkbox:hover{background-position:-128px -32px}.fancytree-selected span.fancytree-checkbox{background-position:-112px -32px}.fancytree-selected span.fancytree-checkbox:hover{background-position:-112px -32px} \ No newline at end of file +.ui-helper-hidden{display:none}.fancytree-container{font-size:10pt;white-space:nowrap;padding:3px;margin:0;background-color:#fff;border:1px dotted gray;overflow:auto;height:100%}ul.fancytree-container ul{padding:0 0 0 16px;margin:0}ul.fancytree-container li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0;padding:1px 0 0 0}ul.fancytree-container li.fancytree-lastsib{background-image:none}ul.fancytree-no-connector>li{background-image:none}.ui-fancytree-disabled ul.fancytree-container{opacity:.5;background-color:silver}span.fancytree-node{display:inline-block;width:100%;border:1px solid transparent}span.fancytree-empty,span.fancytree-vline,span.fancytree-expander,span.fancytree-icon,span.fancytree-checkbox,span.fancytree-radio,span.fancytree-drag-helper-img,#fancytree-drop-marker{width:16px;height:16px;display:inline-block;vertical-align:top;background-repeat:no-repeat;background-position:left;background-image:url('data:image/png;base64,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');background-position:0 0}span.fancytree-custom-icon{display:inline-block}.fancytree-container img{width:16px;height:16px;margin-left:3px;vertical-align:top;border-style:none}span.fancytree-expander{background-position:0 -80px;cursor:pointer}span.fancytree-expander:hover{background-position:-16px -80px}.fancytree-exp-n span.fancytree-expander:hover{background-position:-16px -80px}.fancytree-exp-e span.fancytree-expander,.fancytree-exp-ed span.fancytree-expander,.fancytree-exp-el span.fancytree-expander,.fancytree-exp-edl span.fancytree-expander{background-position:-32px -80px}.fancytree-exp-e span.fancytree-expander:hover,.fancytree-exp-ed span.fancytree-expander:hover,.fancytree-exp-el span.fancytree-expander:hover,.fancytree-exp-edl span.fancytree-expander:hover{background-position:-48px -80px}.fancytree-loading span.fancytree-expander{background-position:0 0;background-image:url(data:image/gif;base64,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)}.fancytree-exp-n span.fancytree-expander,.fancytree-exp-nl span.fancytree-expander{background-image:none;cursor:default}span.fancytree-checkbox{margin-left:3px;background-position:0 -32px}span.fancytree-checkbox:hover{background-position:-16px -32px}.fancytree-partsel span.fancytree-checkbox{background-position:-64px -32px}.fancytree-partsel span.fancytree-checkbox:hover{background-position:-80px -32px}.fancytree-selected span.fancytree-checkbox{background-position:-32px -32px}.fancytree-selected span.fancytree-checkbox:hover{background-position:-48px -32px}.fancytree-radio span.fancytree-checkbox{margin-left:3px;background-position:0 -48px}.fancytree-radio span.fancytree-checkbox:hover{background-position:-16px -48px}.fancytree-radio .fancytree-partsel span.fancytree-checkbox{background-position:-64px -48px}.fancytree-radio .fancytree-partsel span.fancytree-checkbox:hover{background-position:-80px -48px}.fancytree-radio .fancytree-selected span.fancytree-checkbox{background-position:-32px -48px}.fancytree-radio .fancytree-selected span.fancytree-checkbox:hover{background-position:-48px -48px}span.fancytree-icon{margin-left:3px;background-position:0 0}.fancytree-has-children span.fancytree-icon{}.fancytree-ico-cf span.fancytree-icon{background-position:0 -16px}.fancytree-ico-ef span.fancytree-icon{background-position:-64px -16px}.fancytree-statusnode-wait span.fancytree-icon{background-image:url(data:image/gif;base64,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)}.fancytree-statusnode-error span.fancytree-icon{background-position:0 -112px}span.fancytree-title{display:inline-block}a.fancytree-title{text-decoration:none}.fancytree-title{display:inline-block;padding-left:3px;padding-right:3px;color:#000;vertical-align:top;margin:0;margin-left:3px;cursor:pointer}span.fancytree-node:hover{background-color:#e5f3fb;border-color:#70c0e7}.fancytree-container.fancytree-focused span.fancytree-node.fancytree-focused{border-color:#39f}span.fancytree-node.fancytree-active,span.fancytree-node.fancytree-selected{background-color:#f7f7f7;border-color:#dedede}.fancytree-container.fancytree-focused span.fancytree-node.fancytree-active,.fancytree-container.fancytree-focused span.fancytree-node.fancytree-selected,span.fancytree-node.fancytree-active:hover,span.fancytree-node.fancytree-selected:hover{background-color:#cbe8f6;border-color:#26a0da}span.fancytree-node.fancytree-selected{font-style:italic}table.fancytree-ext-table{border-collapse:collapse}table.fancytree-ext-table tbody tr:hover{background-color:#e5f3fb;outline:1px solid #70c0e7}table.fancytree-ext-table.fancytree-container.fancytree-focused span.fancytree-node.fancytree-focused{outline:1px solid #39f}table.fancytree-ext-table.fancytree-focused tbody tr.fancytree-focused{outline:1px solid #26a0da}table.fancytree-ext-table.fancytree-focused tbody tr.fancytree-active,table.fancytree-ext-table.fancytree-focused tbody tr.fancytree-selected{background-color:#cbe8f6;outline:1px solid #26a0da}table.fancytree-ext-table tbody tr.fancytree-active,table.fancytree-ext-table tbody tr.fancytree-selected{background-color:#f7f7f7;outline:1px solid #dedede}table.fancytree-ext-columnview td{position:relative}table.fancytree-ext-columnview td>ul{padding:0}table.fancytree-ext-columnview td>ul li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0;padding:1px 0 0 0}table.fancytree-ext-columnview tbody tr td{border:1px solid gray;vertical-align:top;overflow:auto}table.fancytree-ext-columnview span.fancytree-node{position:relative}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#cbe8f6}table.fancytree-ext-columnview span.fancytree-cv-right{background-position:0 -80px;position:absolute;right:3px}.fancytree-ext-filter span.fancytree-node .fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter span.fancytree-node.fancytree-submatch .fancytree-title{color:#000;font-weight:normal}.fancytree-ext-filter span.fancytree-node.fancytree-match .fancytree-title{color:#000;font-weight:bold}div.fancytree-drag-helper a{border:1px solid gray;background-color:#fff;padding-left:5px;padding-right:5px;opacity:.8}span.fancytree-drag-helper-img{}div.fancytree-drag-helper{}div.fancytree-drop-accept span.fancytree-drag-helper-img{background-position:-32px -112px}div.fancytree-drag-helper.fancytree-drop-reject{border-color:red}div.fancytree-drop-reject span.fancytree-drag-helper-img{background-position:-16px -112px}#fancytree-drop-marker{width:24px;position:absolute;background-position:0 -128px;margin:0}#fancytree-drop-marker.fancytree-drop-after,#fancytree-drop-marker.fancytree-drop-before{width:64px;background-position:0 -144px}#fancytree-drop-marker.fancytree-drop-copy{background-position:-64px -128px}#fancytree-drop-marker.fancytree-drop-move{background-position:-64px -128px}span.fancytree-drag-source{background-color:#e0e0e0}span.fancytree-drag-source a{color:gray}span.fancytree-drop-target{}span.fancytree-drop-target.fancytree-drop-accept a{background-color:#3169c6!important;color:#fff!important;text-decoration:none}span.fancytree-drop-target.fancytree-drop-reject{}.fancytree-container{border:none}span.fancytree-node{padding:1px;border:none}span.fancytree-node>span.fancytree-icon{background:none;display:inline-block;font-family:FontAwesome;font-size:1.2em;width:14px}span.fancytree-ico-ef>span.fancytree-icon:before{color:#9e9e9e;font-size:1em;content:""}span.fancytree-ico-cf>span.fancytree-icon:before{color:#9e9e9e;font-size:1em;content:""}span.fancytree-ico-c>span.fancytree-icon:before{color:#e51400;content:""}span.fancytree-ico-c.fancytree-selected>span.fancytree-icon:before{color:#60a917;content:""}span.fancytree-node.fancytree-selected{font-style:normal;background:none} \ No newline at end of file diff --git a/Disco.Web/Disco.Web.csproj b/Disco.Web/Disco.Web.csproj index 97c6ecea..cbe194e8 100644 --- a/Disco.Web/Disco.Web.csproj +++ b/Disco.Web/Disco.Web.csproj @@ -869,6 +869,11 @@ True Index.cshtml + + _ViewStart.cshtml + True + True + Index.cshtml True @@ -1181,6 +1186,12 @@ Config.less + + AppMaintenance.less + + + AppMaintenance.less + BundleSite.less @@ -1223,9 +1234,9 @@ Dialog.less - + Device.less - + Device.less @@ -1256,24 +1267,23 @@ - + disco.fancytree.less - + disco.fancytree.less - + ui.fancytree.less - + - - + @@ -1284,18 +1294,11 @@ - - - InitialConfig.less - - - InitialConfig.less - IsotopeStyles.css @@ -1452,7 +1455,7 @@ - + Designer @@ -1569,10 +1572,10 @@ RazorGenerator _ViewStart.generated.cs - + RazorGenerator Administrators.generated.cs - + RazorGenerator _ViewStart.generated.cs @@ -1896,6 +1899,10 @@ RazorGenerator Index.generated.cs + + RazorGenerator + _ViewStart.generated.cs + RazorGenerator Index.generated.cs diff --git a/Disco.Web/T4MVC.cs b/Disco.Web/T4MVC.cs index 4865ff26..fff4b91e 100644 --- a/Disco.Web/T4MVC.cs +++ b/Disco.Web/T4MVC.cs @@ -476,6 +476,10 @@ namespace Links private const string URLPATH = "~/ClientSource/Style"; public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); } public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); } + public static readonly string AppMaintenance_less = Url("AppMaintenance.less"); + public static readonly string AppMaintenance_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/AppMaintenance.min.css") ? Url("AppMaintenance.min.css") : Url("AppMaintenance.css"); + + public static readonly string AppMaintenance_min_css = Url("AppMaintenance.min.css"); public static readonly string BundleSite_less = Url("BundleSite.less"); public static readonly string BundleSite_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/BundleSite.min.css") ? Url("BundleSite.min.css") : Url("BundleSite.css"); @@ -600,8 +604,7 @@ namespace Links } public static readonly string BackgroundDocument_png = Url("BackgroundDocument.png"); - public static readonly string BackgroundInitialConfig_jpg = Url("BackgroundInitialConfig.jpg"); - public static readonly string BackgroundInitialHeading_jpg = Url("BackgroundInitialHeading.jpg"); + public static readonly string BackgroundInitial_jpg = Url("BackgroundInitial.jpg"); public static readonly string BackgroundPage_png = Url("BackgroundPage.png"); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public static class DeviceTypes { @@ -620,7 +623,6 @@ namespace Links } public static readonly string Heading_png = Url("Heading.png"); - public static readonly string Heading64_png = Url("Heading64.png"); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public static class Status { private const string URLPATH = "~/ClientSource/Style/Images/Status"; @@ -635,10 +637,6 @@ namespace Links } - public static readonly string InitialConfig_less = Url("InitialConfig.less"); - public static readonly string InitialConfig_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/InitialConfig.min.css") ? Url("InitialConfig.min.css") : Url("InitialConfig.css"); - - public static readonly string InitialConfig_min_css = Url("InitialConfig.min.css"); public static readonly string IsotopeStyles_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/IsotopeStyles.min.css") ? Url("IsotopeStyles.min.css") : Url("IsotopeStyles.css"); public static readonly string IsotopeStyles_min_css = Url("IsotopeStyles.min.css"); @@ -2120,8 +2118,10 @@ namespace Disco.Web.Controllers public _ViewNamesClass ViewNames { get { return s_ViewNames; } } public class _ViewNamesClass { + public readonly string _ViewStart = "_ViewStart"; public readonly string Index = "Index"; } + public readonly string _ViewStart = "~/Views/Update/_ViewStart.cshtml"; public readonly string Index = "~/Views/Update/Index.cshtml"; } }