diff --git a/Disco.Services/Logging/LogContext.cs b/Disco.Services/Logging/LogContext.cs index d0e3733e..69d91577 100644 --- a/Disco.Services/Logging/LogContext.cs +++ b/Disco.Services/Logging/LogContext.cs @@ -243,7 +243,8 @@ namespace Disco.Services.Logging .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(0, 0)) // Midnight .Build(); - _ReInitializeScheduler.ScheduleJob(reInitalizeJobDetail, reInitalizeTrigger); + if (!_ReInitializeScheduler.CheckExists(reInitalizeTrigger.Key)) + _ReInitializeScheduler.ScheduleJob(reInitalizeJobDetail, reInitalizeTrigger); } private LogContext(string PersistantStorePath, string PersistantStoreConnectionString) diff --git a/Disco.Web/Areas/Config/Views/AuthorizationRole/Index.cshtml b/Disco.Web/Areas/Config/Views/AuthorizationRole/Index.cshtml index 4550a0c0..b26bf849 100644 --- a/Disco.Web/Areas/Config/Views/AuthorizationRole/Index.cshtml +++ b/Disco.Web/Areas/Config/Views/AuthorizationRole/Index.cshtml @@ -141,6 +141,7 @@ else } updateNoSubjects(); + return false; } function add() { @@ -152,7 +153,7 @@ else data: { Id: id } }).done(function (response) { if (response) { - if (list.find('li[data-subjectid="' + response.Id + '"]').length == 0) { + if (list.find('li[data-subjectid="' + response.Id.replace('\\', '\\\\') + '"]').length == 0) { var liIcon = $('').addClass('fa fa-lg'); if (response.Type === 'user') @@ -180,6 +181,7 @@ else }).fail(function (jqXHR, textStatus, errorThrown) { alert('Error: ' + errorThrown); }); + return false; } function updateNoSubjects() { @@ -218,4 +220,4 @@ else
Update Disco Administrators [@Model.AdministratorSubjects.Count] @Html.ActionLinkButton("Create Authorization Role", MVC.Config.AuthorizationRole.Create()) -
\ No newline at end of file + diff --git a/Disco.Web/Areas/Config/Views/AuthorizationRole/Index.generated.cs b/Disco.Web/Areas/Config/Views/AuthorizationRole/Index.generated.cs index 93c07df4..b5116f03 100644 --- a/Disco.Web/Areas/Config/Views/AuthorizationRole/Index.generated.cs +++ b/Disco.Web/Areas/Config/Views/AuthorizationRole/Index.generated.cs @@ -412,11 +412,11 @@ WriteLiteral("\',\r\n minLength: 2,\r\n ");\r\n\r\n if ($this.is(\'[data-subjectstatus=\"new\"]\')) {\r\n " + " $this.remove();\r\n } else {\r\n $this.attr(\'data-subject" + "status\', \'removed\').hide();\r\n }\r\n\r\n updateNoSubjects();\r\n " + -" }\r\n\r\n function add() {\r\n var id = textAdd.val();\r\n\r\n " + -" $.ajax({\r\n url: \'"); +" return false;\r\n }\r\n\r\n function add() {\r\n var" + +" id = textAdd.val();\r\n\r\n $.ajax({\r\n url: \'"); - #line 150 "..\..\Areas\Config\Views\AuthorizationRole\Index.cshtml" + #line 151 "..\..\Areas\Config\Views\AuthorizationRole\Index.cshtml" Write(Url.Action(MVC.API.AuthorizationRole.Subject())); @@ -424,35 +424,35 @@ WriteLiteral("\',\r\n minLength: 2,\r\n #line hidden WriteLiteral("\',\r\n method: \'post\',\r\n data: { Id: id }\r\n " + " }).done(function (response) {\r\n if (response) {\r\n " + -" if (list.find(\'li[data-subjectid=\"\' + response.Id + \'\"]\').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 ? response.Id : response.Name + \' [\'" + -" + response.Id + \']\'))\r\n .append($(\'\').addClass(\'f" + -"a fa-times-circle remove\'))\r\n .addClass(response.Type" + -")\r\n .attr(\'data-subjectid\', response.Id)\r\n " + -" .attr(\'data-subjectstatus\', \'new\');\r\n\r\n " + -"list.append(li);\r\n\r\n updateNoSubjects();\r\n " + -" } else {\r\n alert(\'That subject has already been adde" + -"d\');\r\n }\r\n } else {\r\n alert" + -"(\'Unknown Id\');\r\n }\r\n }).fail(function (jqXHR, textSta" + -"tus, errorThrown) {\r\n alert(\'Error: \' + errorThrown);\r\n " + -" });\r\n }\r\n\r\n function updateNoSubjects() {\r\n if (l" + -"ist.find(\'li:visible\').length > 0)\r\n noSubjects.hide();\r\n " + -" else\r\n noSubjects.show();\r\n }\r\n\r\n function save" + -"Changes() {\r\n var form = $(\'#Config_AuthRoles_Subjects_Update_Dialog_" + -"Form\').empty();\r\n\r\n list.find(\'li[data-subjectstatus!=\"removed\"]\').ea" + -"ch(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(subj" + -"ectId));\r\n\r\n }).get();\r\n\r\n form.submit();\r\n\r\n d" + -"ialog.dialog(\"disable\");\r\n dialog.dialog(\"option\", \"buttons\", null);\r" + -"\n }\r\n\r\n $(function () {\r\n $(\'#Config_AuthRoles_UpdateAd" + -"ministrators\').click(showDialog);\r\n });\r\n\r\n })();\r\n\r\n\r\n\').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 v" + +"ar li = $(\'
  • \')\r\n .append(liIcon)\r\n " + +" .append($(\'\').text(response.Id == response.Name ? response.Id " + +": response.Name + \' [\' + response.Id + \']\'))\r\n .appen" + +"d($(\'\').addClass(\'fa fa-times-circle remove\'))\r\n ." + +"addClass(response.Type)\r\n .attr(\'data-subjectid\', res" + +"ponse.Id)\r\n .attr(\'data-subjectstatus\', \'new\');\r\n\r\n " + +" list.append(li);\r\n\r\n updateNoSubjec" + +"ts();\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(fu" + +"nction (jqXHR, textStatus, errorThrown) {\r\n alert(\'Error: \' + err" + +"orThrown);\r\n });\r\n return false;\r\n }\r\n\r\n " + +" function updateNoSubjects() {\r\n if (list.find(\'li:visible\').leng" + +"th > 0)\r\n noSubjects.hide();\r\n else\r\n n" + +"oSubjects.show();\r\n }\r\n\r\n function saveChanges() {\r\n va" + +"r form = $(\'#Config_AuthRoles_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.a" + +"ppend($(\'\').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 $(fun" + +"ction () {\r\n $(\'#Config_AuthRoles_UpdateAdministrators\').click(showDi" + +"alog);\r\n });\r\n\r\n })();\r\n\r\n\r\nUpdate Disco Administrators ["); - #line 219 "..\..\Areas\Config\Views\AuthorizationRole\Index.cshtml" + #line 221 "..\..\Areas\Config\Views\AuthorizationRole\Index.cshtml" Write(Model.AdministratorSubjects.Count); @@ -478,13 +478,13 @@ WriteLiteral("]\r\n"); WriteLiteral(" "); - #line 220 "..\..\Areas\Config\Views\AuthorizationRole\Index.cshtml" + #line 222 "..\..\Areas\Config\Views\AuthorizationRole\Index.cshtml" Write(Html.ActionLinkButton("Create Authorization Role", MVC.Config.AuthorizationRole.Create())); #line default #line hidden -WriteLiteral("\r\n"); +WriteLiteral("\r\n\r\n"); } } diff --git a/Disco.Web/Areas/Config/Views/AuthorizationRole/Show.cshtml b/Disco.Web/Areas/Config/Views/AuthorizationRole/Show.cshtml index 1d61e35b..5c0cad9b 100644 --- a/Disco.Web/Areas/Config/Views/AuthorizationRole/Show.cshtml +++ b/Disco.Web/Areas/Config/Views/AuthorizationRole/Show.cshtml @@ -50,11 +50,11 @@ var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id);
  • @if (sg.IsGroup) { - @displayName + @displayName } else { - @displayName + @displayName }
  • } @@ -69,13 +69,13 @@ { var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id);
  • @if (sg.IsGroup) - { - @displayName - } - else - { - @displayName - }
  • + { + @displayName + } + else + { + @displayName + } } @@ -174,7 +174,7 @@ data: { Id: id } }).done(function(response){ if (response){ - if (list.find('li[data-subjectid="'+response.Id+'"]').length == 0){ + if (list.find('li[data-subjectid="'+response.Id.replace('\\', '\\\\')+'"]').length == 0){ var liIcon = $('').addClass('fa fa-lg'); if (response.Type === 'user') diff --git a/Disco.Web/Areas/Config/Views/AuthorizationRole/Show.generated.cs b/Disco.Web/Areas/Config/Views/AuthorizationRole/Show.generated.cs index 926d26ed..20d65989 100644 --- a/Disco.Web/Areas/Config/Views/AuthorizationRole/Show.generated.cs +++ b/Disco.Web/Areas/Config/Views/AuthorizationRole/Show.generated.cs @@ -211,7 +211,7 @@ WriteLiteral(">"); #line default #line hidden -WriteLiteral(" "); #line 53 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - + #line default #line hidden #line 53 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - Write(displayName); + Write(displayName); #line default #line hidden #line 53 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - + } else { @@ -240,17 +240,17 @@ WriteLiteral(">
    "); #line default #line hidden -WriteLiteral(" (Url.Action(MVC.User.Show(sg.Id)) +, Tuple.Create(Tuple.Create("", 2683), Tuple.Create(Url.Action(MVC.User.Show(sg.Id)) #line default #line hidden -, 2773), false) -, Tuple.Create(Tuple.Create("", 2808), Tuple.Create("#UserDetailTab-Authorization", 2808), true) +, 2683), false) +, Tuple.Create(Tuple.Create("", 2718), Tuple.Create("#UserDetailTab-Authorization", 2718), true) ); WriteLiteral(">
    "); #line 57 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - Write(displayName); + Write(displayName); #line default @@ -343,14 +343,14 @@ WriteLiteral(">\r\n"); #line hidden WriteLiteral(" (sg.IsGroup ? "group" : "user" +, Tuple.Create(Tuple.Create("", 3805), Tuple.Create(sg.IsGroup ? "group" : "user" #line default #line hidden -, 3895), false) +, 3805), false) ); WriteLiteral(" data-subjectid=\""); @@ -369,12 +369,12 @@ WriteLiteral(">"); #line 71 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" if (sg.IsGroup) - { + { #line default #line hidden -WriteLiteral(" "); #line 73 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - + #line default #line hidden #line 73 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - Write(displayName); + Write(displayName); #line default #line hidden #line 73 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - - } - else - { + + } + else + { #line default #line hidden -WriteLiteral(" "); #line 77 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - + #line default #line hidden #line 77 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - Write(displayName); + Write(displayName); #line default #line hidden #line 77 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - - } + + } #line default #line hidden @@ -465,14 +465,14 @@ WriteLiteral(">Add\r\n \r\n WriteLiteral(" id=\"Config_AuthRoles_Subjects_Update_Dialog_Form\""); -WriteAttribute("action", Tuple.Create(" action=\"", 5172), Tuple.Create("\"", 5269) +WriteAttribute("action", Tuple.Create(" action=\"", 5168), Tuple.Create("\"", 5265) #line 86 "..\..\Areas\Config\Views\AuthorizationRole\Show.cshtml" - , Tuple.Create(Tuple.Create("", 5181), Tuple.Create(Url.Action(MVC.API.AuthorizationRole.UpdateSubjects(Model.Token.Role.Id, null, true)) + , Tuple.Create(Tuple.Create("", 5177), Tuple.Create(Url.Action(MVC.API.AuthorizationRole.UpdateSubjects(Model.Token.Role.Id, null, true)) #line default #line hidden -, 5181), false) +, 5177), false) ); WriteLiteral(" method=\"post\""); @@ -552,49 +552,49 @@ WriteLiteral("\',\r\n minLength: 2,\r WriteLiteral("\',\r\n method: \'post\',\r\n " + " data: { Id: id }\r\n }).done(function(r" + "esponse){\r\n if (response){\r\n " + -" if (list.find(\'li[data-subjectid=\"\'+response.Id+\'\"]\').len" + -"gth == 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 liI" + -"con.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 f" + -"a-times-circle remove\'))\r\n .addCl" + -"ass(response.Type)\r\n .attr(\'data-" + -"subjectid\', response.Id)\r\n .attr(" + -"\'data-subjectstatus\', \'new\');\r\n\r\n lis" + -"t.append(li);\r\n\r\n updateNoSubjects();" + -" \r\n " + -" }else{\r\n alert(\'That subject has al" + -"ready been added\');\r\n }\r\n " + -" }else{\r\n alert(\'Unkno" + -"wn Id\');\r\n }\r\n " + -" }).fail(function(jqXHR, textStatus, errorThrown){\r\n " + -" alert(\'Error: \' + errorThrown);\r\n });\r\n " + -" }\r\n\r\n function updateNo" + -"Subjects(){\r\n if (list.find(\'li:visible\').length " + -"> 0)\r\n noSubjects.hide();\r\n " + -" else\r\n noSubjects.show();\r\n " + -" }\r\n\r\n function saveChanges(){" + -"\r\n var form = $(\'#Config_AuthRoles_Subjects_Updat" + -"e_Dialog_Form\').empty();\r\n\r\n list.find(\'li[data-s" + -"ubjectstatus!=\"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(s" + -"ubjectId));\r\n\r\n }).get();\r\n\r\n " + -" form.submit();\r\n\r\n dialog.dialog(\"dis" + -"able\");\r\n dialog.dialog(\"option\", \"buttons\", null" + -");\r\n }\r\n\r\n $(function(){\r\n" + -" $(\'#Config_AuthRoles_Subjects_Update\').click(sho" + -"wDialog);\r\n });\r\n\r\n })();\r\n " + -" \r\n \r\n \r\n <" + -"/tr>\r\n \r\n \').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($(\'<" + +"span>\').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\', response.Id)\r\n " + +" .attr(\'data-subjectstatus\', \'new\');\r\n\r\n " + +" list.append(li);\r\n\r\n " + +" updateNoSubjects(); \r\n " + +" }else{\r\n aler" + +"t(\'That subject has already been added\');\r\n " + +" }\r\n }else{\r\n " + +" alert(\'Unknown Id\');\r\n }\r\n " + +" }).fail(function(jqXHR, textStatus, errorThrown){\r\n " + +" alert(\'Error: \' + errorThrown);\r\n " + +" });\r\n }\r\n\r\n " + +" function updateNoSubjects(){\r\n if (list.find" + +"(\'li:visible\').length > 0)\r\n noSubjects.hide(" + +");\r\n else\r\n no" + +"Subjects.show();\r\n }\r\n\r\n f" + +"unction saveChanges(){\r\n var form = $(\'#Config_Au" + +"thRoles_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 }).get();\r\n" + +"\r\n form.submit();\r\n\r\n " + +" dialog.dialog(\"disable\");\r\n dialog.dialog(\"op" + +"tion\", \"buttons\", null);\r\n }\r\n\r\n " + +" $(function(){\r\n $(\'#Config_AuthRoles_Subje" + +"cts_Update\').click(showDialog);\r\n });\r\n\r\n " + +" })();\r\n \r\n \r\n " + +" \r\n \r\n \r\n table { margin-top: 10px; margin-bottom: 4px; } +/* Administrators */ +#initialConfig_Administrators table { + margin-top: 15px; +} +#initialConfig_Administrators #Config_AuthRoles_Subjects li, +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li { + padding: 4px 0 4px 4px; +} +#initialConfig_Administrators #Config_AuthRoles_Subjects li i.fa-user, +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li i.fa-user, +#initialConfig_Administrators #Config_AuthRoles_Subjects li i.fa-users, +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li i.fa-users { + min-width: 22px; +} +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_ListContainer { + height: 280px; + overflow-y: auto; + background-color: #ffffff; + border: 1px solid #d8d8d8; +} +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_None { + padding-top: 15px; + display: block; + text-align: center; +} +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_AddContainer { + padding-top: 10px; + padding-left: 10px; +} +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li { + cursor: pointer; +} +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li:hover { + background-color: #f4f4f4; +} +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li:hover .remove { + opacity: .8; +} +#initialConfig_Administrators #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; +} +#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li .remove:hover { + opacity: 1; +} /* Complete */ #initialConfig_Complete span.icon { margin-right: 4px; diff --git a/Disco.Web/ClientSource/Style/InitialConfig.less b/Disco.Web/ClientSource/Style/InitialConfig.less index 3bb60346..545d3159 100644 --- a/Disco.Web/ClientSource/Style/InitialConfig.less +++ b/Disco.Web/ClientSource/Style/InitialConfig.less @@ -7,17 +7,14 @@ header, #header { } } -#dialogWait -{ +#dialogWait { padding-top: 30px; - .ajaxLoading - { + .ajaxLoading { margin-right: 15px; } - div - { + div { padding-left: 31px; } } @@ -33,27 +30,22 @@ header, #header { } } -div.actionBar -{ +div.actionBar { margin-top: 70px !important; background-color: rgba(240, 240, 240, 0.2); } -div.form > table -{ +div.form > table { background-color: #fff; } - /* Welcome */ -#initialConfig_Welcome -{ +#initialConfig_Welcome { div.form { margin-top: 40px; } - #OrganisationName - { + #OrganisationName { font-size: 1.2em; padding: 6px; margin-top: 10px; @@ -63,26 +55,21 @@ div.form > table } /* FileStore */ -#initialConfig_FileStore -{ - #treeFilesystem .dynatree-container - { +#initialConfig_FileStore { + #treeFilesystem .dynatree-container { height: 280px; overflow-y: auto; position: relative; } - #treeFilesystemActions - { + #treeFilesystemActions { margin: 10px 0 2px 0; text-align: right; } } -#dialogCreateDirectory -{ - #createDirectoryName - { +#dialogCreateDirectory { + #createDirectoryName { font-size: 1.2em; padding: 6px; margin-top: 10px; @@ -90,21 +77,81 @@ div.form > table } } +/* Administrators */ +#initialConfig_Administrators { + + table { + margin-top: 15px; + } + + #Config_AuthRoles_Subjects, #Config_AuthRoles_Subjects_Update_Dialog_List { + li { + padding: 4px 0 4px 4px; + + i.fa-user, i.fa-users { + min-width: 22px; + } + } + } + + #Config_AuthRoles_Subjects_Update_Dialog_ListContainer { + height: 280px; + overflow-y: auto; + background-color: @white; + border: 1px solid @TableDataDarkBorderColour; + } + + #Config_AuthRoles_Subjects_Update_Dialog_None { + padding-top: 15px; + display: block; + text-align: center; + } + + #Config_AuthRoles_Subjects_Update_Dialog_AddContainer { + padding-top: 10px; + padding-left: 10px; + } + + #Config_AuthRoles_Subjects_Update_Dialog_List { + li { + cursor: pointer; + + &:hover { + background-color: @TableDataBorderColour; + + .remove { + opacity: .8; + } + } + + .remove { + margin-top: 2px; + padding-right: 6px; + float: right; + cursor: pointer; + opacity: 0; + color: @StatusRemove; + font-size: 1.3em; + + &:hover { + opacity: 1; + } + } + } + } +} + /* Complete */ -#initialConfig_Complete -{ - span.icon - { +#initialConfig_Complete { + span.icon { margin-right: 4px; } - .testResult - { + .testResult { padding-left: 24px; } - .exception - { + .exception { border: 1px dashed #FF9696; background-color: #FFD8D8; margin-top: 10px; diff --git a/Disco.Web/ClientSource/Style/InitialConfig.min.css b/Disco.Web/ClientSource/Style/InitialConfig.min.css index 73d4dbbb..70accb81 100644 --- a/Disco.Web/ClientSource/Style/InitialConfig.min.css +++ b/Disco.Web/ClientSource/Style/InitialConfig.min.css @@ -1 +1 @@ -header #heading,#header #heading{display:none}#dialogWait{padding-top:30px}#dialogWait .ajaxLoading{margin-right:15px}#dialogWait div{padding-left:31px}#layout_Page{background:url('data:image/jpg;base64,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') right bottom no-repeat #fff}#layout_Page h1:first-child{margin:0 -30px;padding:20px 20px 6px 20px!important;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) left top repeat-x;min-height:50px}div.actionBar{margin-top:70px!important;background-color:rgba(240,240,240,.2)}div.form>table{background-color:#fff}#initialConfig_Welcome div.form{margin-top:40px}#initialConfig_Welcome #OrganisationName{font-size:1.2em;padding:6px;margin-top:10px;margin-bottom:4px;width:374px}#initialConfig_FileStore #treeFilesystem .dynatree-container{height:280px;overflow-y:auto;position:relative}#initialConfig_FileStore #treeFilesystemActions{margin:10px 0 2px 0;text-align:right}#dialogCreateDirectory #createDirectoryName{font-size:1.2em;padding:6px;margin-top:10px;margin-bottom:4px}#initialConfig_Complete span.icon{margin-right:4px}#initialConfig_Complete .testResult{padding-left:24px}#initialConfig_Complete .exception{border:1px dashed #ff9696;background-color:#ffd8d8;margin-top:10px;padding:6px} \ No newline at end of file +header #heading,#header #heading{display:none}#dialogWait{padding-top:30px}#dialogWait .ajaxLoading{margin-right:15px}#dialogWait div{padding-left:31px}#layout_Page{background:url('data:image/jpg;base64,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') right bottom no-repeat #fff}#layout_Page h1:first-child{margin:0 -30px;padding:20px 20px 6px 20px!important;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) left top repeat-x;min-height:50px}div.actionBar{margin-top:70px!important;background-color:rgba(240,240,240,.2)}div.form>table{background-color:#fff}#initialConfig_Welcome div.form{margin-top:40px}#initialConfig_Welcome #OrganisationName{font-size:1.2em;padding:6px;margin-top:10px;margin-bottom:4px;width:374px}#initialConfig_FileStore #treeFilesystem .dynatree-container{height:280px;overflow-y:auto;position:relative}#initialConfig_FileStore #treeFilesystemActions{margin:10px 0 2px 0;text-align:right}#dialogCreateDirectory #createDirectoryName{font-size:1.2em;padding:6px;margin-top:10px;margin-bottom:4px}#initialConfig_Administrators table{margin-top:15px}#initialConfig_Administrators #Config_AuthRoles_Subjects li,#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li{padding:4px 0 4px 4px}#initialConfig_Administrators #Config_AuthRoles_Subjects li i.fa-user,#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li i.fa-user,#initialConfig_Administrators #Config_AuthRoles_Subjects li i.fa-users,#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li i.fa-users{min-width:22px}#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_ListContainer{height:280px;overflow-y:auto;background-color:#fff;border:1px solid #d8d8d8}#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_None{padding-top:15px;display:block;text-align:center}#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_AddContainer{padding-top:10px;padding-left:10px}#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li{cursor:pointer}#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li:hover{background-color:#f4f4f4}#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li:hover .remove{opacity:.8}#initialConfig_Administrators #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}#initialConfig_Administrators #Config_AuthRoles_Subjects_Update_Dialog_List li .remove:hover{opacity:1}#initialConfig_Complete span.icon{margin-right:4px}#initialConfig_Complete .testResult{padding-left:24px}#initialConfig_Complete .exception{border:1px dashed #ff9696;background-color:#ffd8d8;margin-top:10px;padding:6px} \ No newline at end of file diff --git a/Disco.Web/Controllers/InitialConfigController.cs b/Disco.Web/Controllers/InitialConfigController.cs index 27160681..689d7eac 100644 --- a/Disco.Web/Controllers/InitialConfigController.cs +++ b/Disco.Web/Controllers/InitialConfigController.cs @@ -10,6 +10,10 @@ using System.Text.RegularExpressions; using System.IO.Compression; using System.Management; using System.Web; +using Disco.Services.Users; +using Disco.Services.Interop.ActiveDirectory; +using Disco.Models.Interop.ActiveDirectory; +using Disco.Services.Authorization; namespace Disco.Web.Controllers { @@ -228,9 +232,12 @@ namespace Disco.Web.Controllers ModelState.AddModelError(string.Empty, string.Format("Unable to extract File Store template: [{0}] {1}", ex.GetType().Name, ex.Message)); } } + + // Initialize Core Environment + AppConfig.InitalizeCoreEnvironment(database); } - return RedirectToAction(MVC.InitialConfig.Complete()); + return RedirectToAction(MVC.InitialConfig.Administrators()); } m.ExpandDirectoryModel(); @@ -245,6 +252,81 @@ namespace Disco.Web.Controllers #region Administrators + public virtual ActionResult Administrators() + { + var administratorSubjects = UserService.AdministratorSubjectIds + .Select(subjectId => ActiveDirectory.RetrieveObject(subjectId)) + .Where(item => item != null) + .Select(item => Disco.Web.Areas.Config.Models.AuthorizationRole.SubjectDescriptorModel.FromActiveDirectoryObject(item)) + .OrderBy(item => item.Name).ToList(); + + var m = new AdministratorsModel() + { + AdministratorSubjects = administratorSubjects + }; + + return View(m); + } + public virtual ActionResult AdministratorsSearch(string term) + { + var groupResults = ActiveDirectory.SearchGroups(term).Cast(); + var userResults = ActiveDirectory.SearchUserAccounts(term).Cast(); + + var results = groupResults.Concat(userResults).OrderBy(r => r.SamAccountName) + .Select(r => Disco.Web.Areas.API.Models.AuthorizationRole.SubjectItem.FromActiveDirectoryObject(r)).ToList(); + + return Json(results, JsonRequestBehavior.AllowGet); + } + public virtual ActionResult AdministratorsSubject(string Id) + { + if (string.IsNullOrWhiteSpace(Id)) + return Json(null, JsonRequestBehavior.AllowGet); + else if (!Id.Contains(@"\")) + Id = string.Format(@"{0}\{1}", ActiveDirectory.PrimaryDomain.NetBiosName, Id); + + var subject = ActiveDirectory.RetrieveObject(Id); + + if (subject == null || !(subject is ActiveDirectoryUserAccount || subject is ActiveDirectoryGroup)) + return Json(null, JsonRequestBehavior.AllowGet); + else + return Json(Disco.Web.Areas.API.Models.AuthorizationRole.SubjectItem.FromActiveDirectoryObject(subject), JsonRequestBehavior.AllowGet); + } + [HttpPost] + public virtual ActionResult Administrators(string[] Subjects) + { + string[] proposedSubjects; + string[] removedSubjects = null; + string[] addedSubjects = null; + + // Validate Subjects + if (Subjects != null || Subjects.Length > 0) + { + + var subjects = Subjects.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()).Select(s => new Tuple(s, ActiveDirectory.RetrieveObject(s))).ToList(); + var invalidSubjects = subjects.Where(s => s.Item2 == null).ToList(); + + if (invalidSubjects.Count > 0) + throw new ArgumentException(string.Format("Subjects not found: {0}", string.Join(", ", invalidSubjects)), "Subjects"); + + proposedSubjects = subjects.Select(s => s.Item2.NetBiosId).OrderBy(s => s).ToArray(); + var currentSubjects = UserService.AdministratorSubjectIds; + removedSubjects = currentSubjects.Except(proposedSubjects).ToArray(); + addedSubjects = proposedSubjects.Except(currentSubjects).ToArray(); + + using (DiscoDataContext database = new DiscoDataContext()) + { + UserService.UpdateAdministratorSubjectIds(database, proposedSubjects); + } + + if (removedSubjects != null && removedSubjects.Length > 0) + AuthorizationLog.LogAdministratorSubjectsRemoved("", removedSubjects); + if (addedSubjects != null && addedSubjects.Length > 0) + AuthorizationLog.LogAdministratorSubjectsAdded("", addedSubjects); + } + + return RedirectToAction(MVC.InitialConfig.Complete()); + } + #endregion #region Complete diff --git a/Disco.Web/Disco.Web.csproj b/Disco.Web/Disco.Web.csproj index ef3bd98f..97c6ecea 100644 --- a/Disco.Web/Disco.Web.csproj +++ b/Disco.Web/Disco.Web.csproj @@ -546,6 +546,12 @@ True + + + Administrators.cshtml + True + True + True True @@ -1563,6 +1569,10 @@ RazorGenerator _ViewStart.generated.cs + + RazorGenerator + Administrators.generated.cs + RazorGenerator _ViewStart.generated.cs diff --git a/Disco.Web/Models/InitialConfig/AdministratorsModel.cs b/Disco.Web/Models/InitialConfig/AdministratorsModel.cs new file mode 100644 index 00000000..87e90da1 --- /dev/null +++ b/Disco.Web/Models/InitialConfig/AdministratorsModel.cs @@ -0,0 +1,10 @@ +using Disco.Web.Areas.Config.Models.AuthorizationRole; +using System.Collections.Generic; + +namespace Disco.Web.Models.InitialConfig +{ + public class AdministratorsModel + { + public List AdministratorSubjects { get; set; } + } +} \ No newline at end of file diff --git a/Disco.Web/T4MVC.cs b/Disco.Web/T4MVC.cs index dbff35df..4865ff26 100644 --- a/Disco.Web/T4MVC.cs +++ b/Disco.Web/T4MVC.cs @@ -1099,6 +1099,18 @@ namespace Disco.Web.Controllers { return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.FileStoreBranch); } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult AdministratorsSearch() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AdministratorsSearch); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult AdministratorsSubject() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AdministratorsSubject); + } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public InitialConfigController Actions { get { return MVC.InitialConfig; } } @@ -1120,6 +1132,9 @@ namespace Disco.Web.Controllers public readonly string Database = "Database"; public readonly string FileStore = "FileStore"; public readonly string FileStoreBranch = "FileStoreBranch"; + public readonly string Administrators = "Administrators"; + public readonly string AdministratorsSearch = "AdministratorsSearch"; + public readonly string AdministratorsSubject = "AdministratorsSubject"; public readonly string Complete = "Complete"; public readonly string RestartWebApp = "RestartWebApp"; } @@ -1132,6 +1147,9 @@ namespace Disco.Web.Controllers public const string Database = "Database"; public const string FileStore = "FileStore"; public const string FileStoreBranch = "FileStoreBranch"; + public const string Administrators = "Administrators"; + public const string AdministratorsSearch = "AdministratorsSearch"; + public const string AdministratorsSubject = "AdministratorsSubject"; public const string Complete = "Complete"; public const string RestartWebApp = "RestartWebApp"; } @@ -1169,6 +1187,30 @@ namespace Disco.Web.Controllers { public readonly string Path = "Path"; } + static readonly ActionParamsClass_AdministratorsSearch s_params_AdministratorsSearch = new ActionParamsClass_AdministratorsSearch(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_AdministratorsSearch AdministratorsSearchParams { get { return s_params_AdministratorsSearch; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_AdministratorsSearch + { + public readonly string term = "term"; + } + static readonly ActionParamsClass_AdministratorsSubject s_params_AdministratorsSubject = new ActionParamsClass_AdministratorsSubject(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_AdministratorsSubject AdministratorsSubjectParams { get { return s_params_AdministratorsSubject; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_AdministratorsSubject + { + public readonly string Id = "Id"; + } + static readonly ActionParamsClass_Administrators s_params_Administrators = new ActionParamsClass_Administrators(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_Administrators AdministratorsParams { get { return s_params_Administrators; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_Administrators + { + public readonly string Subjects = "Subjects"; + } static readonly ViewsClass s_views = new ViewsClass(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ViewsClass Views { get { return s_views; } } @@ -1180,6 +1222,7 @@ namespace Disco.Web.Controllers public class _ViewNamesClass { public readonly string _ViewStart = "_ViewStart"; + public readonly string Administrators = "Administrators"; public readonly string Complete = "Complete"; public readonly string Database = "Database"; public readonly string FileStore = "FileStore"; @@ -1187,6 +1230,7 @@ namespace Disco.Web.Controllers public readonly string Welcome = "Welcome"; } public readonly string _ViewStart = "~/Views/InitialConfig/_ViewStart.cshtml"; + public readonly string Administrators = "~/Views/InitialConfig/Administrators.cshtml"; public readonly string Complete = "~/Views/InitialConfig/Complete.cshtml"; public readonly string Database = "~/Views/InitialConfig/Database.cshtml"; public readonly string FileStore = "~/Views/InitialConfig/FileStore.cshtml"; @@ -1276,6 +1320,45 @@ namespace Disco.Web.Controllers return callInfo; } + partial void AdministratorsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo); + + public override System.Web.Mvc.ActionResult Administrators() + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Administrators); + AdministratorsOverride(callInfo); + return callInfo; + } + + partial void AdministratorsSearchOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string term); + + public override System.Web.Mvc.ActionResult AdministratorsSearch(string term) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AdministratorsSearch); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "term", term); + AdministratorsSearchOverride(callInfo, term); + return callInfo; + } + + partial void AdministratorsSubjectOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string Id); + + public override System.Web.Mvc.ActionResult AdministratorsSubject(string Id) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AdministratorsSubject); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Id", Id); + AdministratorsSubjectOverride(callInfo, Id); + return callInfo; + } + + partial void AdministratorsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string[] Subjects); + + public override System.Web.Mvc.ActionResult Administrators(string[] Subjects) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Administrators); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Subjects", Subjects); + AdministratorsOverride(callInfo, Subjects); + return callInfo; + } + partial void CompleteOverride(T4MVC_System_Web_Mvc_ActionResult callInfo); public override System.Web.Mvc.ActionResult Complete() diff --git a/Disco.Web/Views/InitialConfig/Administrators.cshtml b/Disco.Web/Views/InitialConfig/Administrators.cshtml new file mode 100644 index 00000000..769f605f --- /dev/null +++ b/Disco.Web/Views/InitialConfig/Administrators.cshtml @@ -0,0 +1,176 @@ +@model Disco.Web.Models.InitialConfig.AdministratorsModel +@{ + ViewBag.Title = null; +} +

    @CommonHelpers.Breadcrumbs(Html.ToBreadcrumb("Initial Configuration", MVC.InitialConfig.Index(), "Disco Administrators"))

    +
    +
    +
    + Disco Administrators have access to the entire Disco application. + Domain Admins is a required member and is always included regardless of configuration. +
    + + + + +
    +
    + None Associated +
      + @foreach (var sg in Model.AdministratorSubjects) + { + var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id); +
    • @if (sg.IsGroup) + { + @displayName + } + else + { + @displayName + }
    • + } +
    +
    +
    + + Add +
    +
    +
    +
    +
    +

    Validating Configuration

    +
    Please wait while the Disco configuration is validated
    +
    +@using (Html.BeginForm()) +{ +
    + +
    +} + diff --git a/Disco.Web/Views/InitialConfig/Administrators.generated.cs b/Disco.Web/Views/InitialConfig/Administrators.generated.cs new file mode 100644 index 00000000..4cc90ee7 --- /dev/null +++ b/Disco.Web/Views/InitialConfig/Administrators.generated.cs @@ -0,0 +1,373 @@ +#pragma warning disable 1591 +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Disco.Web.Views.InitialConfig +{ + 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.BI.Extensions; + 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("~/Views/InitialConfig/Administrators.cshtml")] + public partial class Administrators : Disco.Services.Web.WebViewPage + { + public Administrators() + { + } + public override void Execute() + { + + #line 2 "..\..\Views\InitialConfig\Administrators.cshtml" + + ViewBag.Title = null; + + + #line default + #line hidden +WriteLiteral("\r\n

    "); + + + #line 5 "..\..\Views\InitialConfig\Administrators.cshtml" +Write(CommonHelpers.Breadcrumbs(Html.ToBreadcrumb("Initial Configuration", MVC.InitialConfig.Index(), "Disco Administrators"))); + + + #line default + #line hidden +WriteLiteral("

    \r\n\r\n +
    + Disco Administrators have access to the entire Disco application. + Domain Admins is a required member and is always included regardless of configuration. +
    + + + \r\n \r\n " + +"
    + \r\n None Associated\r\n \r\n"); + + + #line 18 "..\..\Views\InitialConfig\Administrators.cshtml" + + + #line default + #line hidden + + #line 18 "..\..\Views\InitialConfig\Administrators.cshtml" + foreach (var sg in Model.AdministratorSubjects) + { + var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id); + + + #line default + #line hidden +WriteLiteral(" (sg.IsGroup ? "group" : "user" + + #line default + #line hidden +, 1169), false) +); + +WriteLiteral(" data-subjectid=\""); + + + #line 21 "..\..\Views\InitialConfig\Administrators.cshtml" + Write(sg.Id); + + + #line default + #line hidden +WriteLiteral("\""); + +WriteLiteral(">"); + + + #line 21 "..\..\Views\InitialConfig\Administrators.cshtml" + if (sg.IsGroup) + { + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 23 "..\..\Views\InitialConfig\Administrators.cshtml" + + + #line default + #line hidden + + #line 23 "..\..\Views\InitialConfig\Administrators.cshtml" + Write(displayName); + + + #line default + #line hidden + + #line 23 "..\..\Views\InitialConfig\Administrators.cshtml" + + } + else + { + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 27 "..\..\Views\InitialConfig\Administrators.cshtml" + + + #line default + #line hidden + + #line 27 "..\..\Views\InitialConfig\Administrators.cshtml" + Write(displayName); + + + #line default + #line hidden + + #line 27 "..\..\Views\InitialConfig\Administrators.cshtml" + + } + + #line default + #line hidden +WriteLiteral("\r\n"); + + + #line 29 "..\..\Views\InitialConfig\Administrators.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n \r\n \r\n Add\r\n \r\n
    \r\n \r\n\r\n\r\n

    Validating Configuration

    \r\n
    Please wait while the Disco confi" + +"guration is validated
    \r\n\r\n"); + + + #line 45 "..\..\Views\InitialConfig\Administrators.cshtml" + using (Html.BeginForm()) +{ + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n \r\n"); + + + #line 50 "..\..\Views\InitialConfig\Administrators.cshtml" +} + + + #line default + #line hidden +WriteLiteral(@"\r\n"); + + } + } +} +#pragma warning restore 1591 diff --git a/Disco.Web/Views/InitialConfig/Database.generated.cs b/Disco.Web/Views/InitialConfig/Database.generated.cs index 87659dc9..04312e83 100644 --- a/Disco.Web/Views/InitialConfig/Database.generated.cs +++ b/Disco.Web/Views/InitialConfig/Database.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. diff --git a/Disco.Web/Views/InitialConfig/RestartWebApp.cshtml b/Disco.Web/Views/InitialConfig/RestartWebApp.cshtml index b73f01cc..d0e2f094 100644 --- a/Disco.Web/Views/InitialConfig/RestartWebApp.cshtml +++ b/Disco.Web/Views/InitialConfig/RestartWebApp.cshtml @@ -22,7 +22,7 @@ }).closest('.ui-dialog').find('.ui-dialog-titlebar-close').hide(); var refresh = function () { - window.location.href = '/'; + window.location.href = '/Config'; } window.setTimeout(refresh, 2000); diff --git a/Disco.Web/Views/InitialConfig/RestartWebApp.generated.cs b/Disco.Web/Views/InitialConfig/RestartWebApp.generated.cs index e468190a..02cae9b3 100644 --- a/Disco.Web/Views/InitialConfig/RestartWebApp.generated.cs +++ b/Disco.Web/Views/InitialConfig/RestartWebApp.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. @@ -97,7 +97,7 @@ WriteLiteral(@">Please wait while the Disco environment is initialized }).closest('.ui-dialog').find('.ui-dialog-titlebar-close').hide(); var refresh = function () { - window.location.href = '/'; + window.location.href = '/Config'; } window.setTimeout(refresh, 2000); diff --git a/Disco.Web/Views/InitialConfig/_ViewStart.cshtml b/Disco.Web/Views/InitialConfig/_ViewStart.cshtml index e1d2e5ae..c0e35417 100644 --- a/Disco.Web/Views/InitialConfig/_ViewStart.cshtml +++ b/Disco.Web/Views/InitialConfig/_ViewStart.cshtml @@ -1,5 +1,5 @@ @{ - ViewContext.ViewBag.IsInitialConfig = true; + ViewContext.ViewData.Add("IsInitialConfig", true); Layout = MVC.Shared.Views._PublicLayout; Html.BundleDeferred("~/Style/InitialConfig"); } \ No newline at end of file diff --git a/Disco.Web/Views/InitialConfig/_ViewStart.generated.cs b/Disco.Web/Views/InitialConfig/_ViewStart.generated.cs index 421b057e..ae2cd335 100644 --- a/Disco.Web/Views/InitialConfig/_ViewStart.generated.cs +++ b/Disco.Web/Views/InitialConfig/_ViewStart.generated.cs @@ -47,7 +47,7 @@ namespace Disco.Web.Views.InitialConfig #line 1 "..\..\Views\InitialConfig\_ViewStart.cshtml" - ViewContext.ViewBag.IsInitialConfig = true; + ViewContext.ViewData.Add("IsInitialConfig", true); Layout = MVC.Shared.Views._PublicLayout; Html.BundleDeferred("~/Style/InitialConfig"); diff --git a/Disco.Web/Views/Shared/_PublicLayout.cshtml b/Disco.Web/Views/Shared/_PublicLayout.cshtml index 37e21d15..8696eddd 100644 --- a/Disco.Web/Views/Shared/_PublicLayout.cshtml +++ b/Disco.Web/Views/Shared/_PublicLayout.cshtml @@ -5,7 +5,8 @@ - Disco@{if(ViewBag.Title != null){<text> - @CommonHelpers.BreadcrumbsTitle(ViewBag.Title)</text>}} + Disco@{if (ViewBag.Title != null) + {<text> - @CommonHelpers.BreadcrumbsTitle(ViewBag.Title)</text>}} @@ -19,21 +20,24 @@
    - @if (ViewBag.IsInitialConfig != null){ - - } + @if (!ViewContext.ViewData.ContainsKey("IsInitialConfig")) + { + + } - @if(ViewBag.Title != null){
    @CommonHelpers.Breadcrumbs(ViewBag.Title)
    } + @if (ViewBag.Title != null) + {
    @CommonHelpers.Breadcrumbs(ViewBag.Title)
    }
    @RenderBody()
    - Disco v@(Disco.Web.DiscoApplication.Version) @if (ViewBag.IsInitialConfig != null){@@ @(Disco.Web.DiscoApplication.OrganisationName) | @Html.ActionLink("Credits", MVC.Public.Public.Credits()) | @Html.ActionLink("Licence", MVC.Public.Public.Licence())} + Disco v@(Disco.Web.DiscoApplication.Version) @if (ViewBag.IsInitialConfig != null) + {@@ @(Disco.Web.DiscoApplication.OrganisationName) | @Html.ActionLink("Credits", MVC.Public.Public.Credits()) | @Html.ActionLink("Licence", MVC.Public.Public.Licence())}
    @{ Disco.Services.Plugins.Features.UIExtension.UIExtensions.ExecuteExtensionResult(this); } diff --git a/Disco.Web/Views/Shared/_PublicLayout.generated.cs b/Disco.Web/Views/Shared/_PublicLayout.generated.cs index c1d82734..1ca5e9c4 100644 --- a/Disco.Web/Views/Shared/_PublicLayout.generated.cs +++ b/Disco.Web/Views/Shared/_PublicLayout.generated.cs @@ -57,22 +57,23 @@ WriteLiteral("\r\n\r\n\r\n\r\n Disco"); #line 8 "..\..\Views\Shared\_PublicLayout.cshtml" - if(ViewBag.Title != null){ + if (ViewBag.Title != null) + { #line default #line hidden WriteLiteral(" - "); - #line 8 "..\..\Views\Shared\_PublicLayout.cshtml" - Write(CommonHelpers.BreadcrumbsTitle(ViewBag.Title)); + #line 9 "..\..\Views\Shared\_PublicLayout.cshtml" + Write(CommonHelpers.BreadcrumbsTitle(ViewBag.Title)); #line default #line hidden - #line 8 "..\..\Views\Shared\_PublicLayout.cshtml" - } + #line 9 "..\..\Views\Shared\_PublicLayout.cshtml" + } #line default #line hidden @@ -107,7 +108,7 @@ WriteLiteral(" />\r\n"); WriteLiteral(" "); - #line 13 "..\..\Views\Shared\_PublicLayout.cshtml" + #line 14 "..\..\Views\Shared\_PublicLayout.cshtml" Write(Html.BundleRenderDeferred()); @@ -118,7 +119,7 @@ WriteLiteral("\r\n"); WriteLiteral(" "); - #line 14 "..\..\Views\Shared\_PublicLayout.cshtml" + #line 15 "..\..\Views\Shared\_PublicLayout.cshtml" Write(RenderSection("head", false)); @@ -138,14 +139,14 @@ WriteLiteral(" id=\"heading\""); WriteLiteral(">\r\n <a"); -WriteAttribute("href", Tuple.Create(" href=\"", 703), Tuple.Create("\"", 738) +WriteAttribute("href", Tuple.Create(" href=\"", 724), Tuple.Create("\"", 759) - #line 20 "..\..\Views\Shared\_PublicLayout.cshtml" -, Tuple.Create(Tuple.Create("", 710), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Job.Index()) + #line 21 "..\..\Views\Shared\_PublicLayout.cshtml" +, Tuple.Create(Tuple.Create("", 731), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Job.Index()) #line default #line hidden -, 710), false) +, 731), false) ); WriteLiteral("><i"); @@ -155,48 +156,49 @@ WriteLiteral(" title=\"Disco - ICT Management\""); WriteLiteral("></i></a>\r\n </div>\r\n"); - #line 22 "..\..\Views\Shared\_PublicLayout.cshtml" + #line 23 "..\..\Views\Shared\_PublicLayout.cshtml" #line default #line hidden - #line 22 "..\..\Views\Shared\_PublicLayout.cshtml" - if (ViewBag.IsInitialConfig != null){ + #line 23 "..\..\Views\Shared\_PublicLayout.cshtml" + if (!ViewContext.ViewData.ContainsKey("IsInitialConfig")) + { #line default #line hidden -WriteLiteral("\r\n <nav>\r\n <ul"); +WriteLiteral("\r\n <nav>\r\n <ul"); WriteLiteral(" id=\"menu\""); -WriteLiteral(">\r\n <li"); +WriteLiteral(">\r\n <li"); WriteLiteral(" class=\"active\""); WriteLiteral(">"); - #line 25 "..\..\Views\Shared\_PublicLayout.cshtml" - Write(Html.ActionLink("Reports", MVC.Public.Public.Index())); + #line 27 "..\..\Views\Shared\_PublicLayout.cshtml" + Write(Html.ActionLink("Reports", MVC.Public.Public.Index())); #line default #line hidden -WriteLiteral("</li>\r\n <li>"); +WriteLiteral("</li>\r\n <li>"); - #line 26 "..\..\Views\Shared\_PublicLayout.cshtml" - Write(Html.ActionLink("Administration", MVC.Job.Index(), accesskey: "1")); + #line 28 "..\..\Views\Shared\_PublicLayout.cshtml" + Write(Html.ActionLink("Administration", MVC.Job.Index(), accesskey: "1")); #line default #line hidden -WriteLiteral("</li>\r\n </ul>\r\n </nav>\r\n "); +WriteLiteral("</li>\r\n </ul>\r\n </nav>\r\n "); - #line 29 "..\..\Views\Shared\_PublicLayout.cshtml" - } + #line 31 "..\..\Views\Shared\_PublicLayout.cshtml" + } #line default @@ -204,14 +206,15 @@ WriteLiteral("</li>\r\n </ul>\r\n </nav>\r\n WriteLiteral(" </header>\r\n"); - #line 31 "..\..\Views\Shared\_PublicLayout.cshtml" + #line 33 "..\..\Views\Shared\_PublicLayout.cshtml" #line default #line hidden - #line 31 "..\..\Views\Shared\_PublicLayout.cshtml" - if(ViewBag.Title != null){ + #line 33 "..\..\Views\Shared\_PublicLayout.cshtml" + if (ViewBag.Title != null) + { #line default #line hidden @@ -222,8 +225,8 @@ WriteLiteral(" id=\"layout_PageHeading\""); WriteLiteral(">"); - #line 31 "..\..\Views\Shared\_PublicLayout.cshtml" - Write(CommonHelpers.Breadcrumbs(ViewBag.Title)); + #line 34 "..\..\Views\Shared\_PublicLayout.cshtml" + Write(CommonHelpers.Breadcrumbs(ViewBag.Title)); #line default @@ -231,8 +234,8 @@ WriteLiteral(">"); WriteLiteral("</div>"); - #line 31 "..\..\Views\Shared\_PublicLayout.cshtml" - } + #line 34 "..\..\Views\Shared\_PublicLayout.cshtml" + } #line default @@ -246,7 +249,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 33 "..\..\Views\Shared\_PublicLayout.cshtml" + #line 36 "..\..\Views\Shared\_PublicLayout.cshtml" Write(RenderBody()); @@ -255,7 +258,7 @@ WriteLiteral(" "); WriteLiteral("\r\n </section>\r\n <footer>\r\n Disco v"); - #line 36 "..\..\Views\Shared\_PublicLayout.cshtml" + #line 39 "..\..\Views\Shared\_PublicLayout.cshtml" Write(Disco.Web.DiscoApplication.Version); @@ -264,16 +267,17 @@ WriteLiteral("\r\n </section>\r\n <footer>\r\n Disco v" WriteLiteral(" "); - #line 36 "..\..\Views\Shared\_PublicLayout.cshtml" - if (ViewBag.IsInitialConfig != null){ + #line 39 "..\..\Views\Shared\_PublicLayout.cshtml" + if (ViewBag.IsInitialConfig != null) + { #line default #line hidden WriteLiteral("@ "); - #line 36 "..\..\Views\Shared\_PublicLayout.cshtml" - Write(Disco.Web.DiscoApplication.OrganisationName); + #line 40 "..\..\Views\Shared\_PublicLayout.cshtml" + Write(Disco.Web.DiscoApplication.OrganisationName); #line default @@ -281,8 +285,8 @@ WriteLiteral("@ "); WriteLiteral(" | "); - #line 36 "..\..\Views\Shared\_PublicLayout.cshtml" - Write(Html.ActionLink("Credits", MVC.Public.Public.Credits())); + #line 40 "..\..\Views\Shared\_PublicLayout.cshtml" + Write(Html.ActionLink("Credits", MVC.Public.Public.Credits())); #line default @@ -290,15 +294,15 @@ WriteLiteral(" | "); WriteLiteral(" | "); - #line 36 "..\..\Views\Shared\_PublicLayout.cshtml" - Write(Html.ActionLink("Licence", MVC.Public.Public.Licence())); + #line 40 "..\..\Views\Shared\_PublicLayout.cshtml" + Write(Html.ActionLink("Licence", MVC.Public.Public.Licence())); #line default #line hidden - #line 36 "..\..\Views\Shared\_PublicLayout.cshtml" - } + #line 40 "..\..\Views\Shared\_PublicLayout.cshtml" + } #line default @@ -306,13 +310,13 @@ WriteLiteral(" | "); WriteLiteral(" </footer>\r\n </div>\r\n"); - #line 39 "..\..\Views\Shared\_PublicLayout.cshtml" + #line 43 "..\..\Views\Shared\_PublicLayout.cshtml" #line default #line hidden - #line 39 "..\..\Views\Shared\_PublicLayout.cshtml" + #line 43 "..\..\Views\Shared\_PublicLayout.cshtml" Disco.Services.Plugins.Features.UIExtension.UIExtensions.ExecuteExtensionResult(this); #line default