Merge branch 'dev' into dev
This commit is contained in:
		| @ -75,7 +75,7 @@ else | ||||
|                         <td> | ||||
|                             <h3 style="display: inline;"><a href="@context.ProductUrl" target="_new">@context.Name</a></h3>  by:  <strong><a href="@context.OwnerUrl" target="new">@context.Owner</a></strong><br /> | ||||
|                             @(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)<br /> | ||||
|                             <strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>  |  @SharedLocalizer["Search.Version"]: <strong>@context.Version</strong> | ||||
|                             <strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>  |  @SharedLocalizer["Search.Version"]: <strong>@context.Version</strong>  |  @SharedLocalizer["Search.Source"]: <strong>@context.PackageUrl</strong> | ||||
|                         </td> | ||||
|                         <td style="vertical-align: middle;"> | ||||
|                             <button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadLanguage(context.PackageId, context.Version))>@SharedLocalizer["Download"]</button> | ||||
| @ -85,10 +85,6 @@ else | ||||
|                 <button type="button" class="btn btn-success" @onclick="InstallLanguages">@SharedLocalizer["Install"]</button> | ||||
|                 <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 <ModuleMessage Type="MessageType.Info" Message="No Translations Are Available To Download"></ModuleMessage> | ||||
|             } | ||||
|         </TabPanel> | ||||
|         <TabPanel Name="Upload" ResourceKey="Upload" Security="SecurityAccessLevel.Host"> | ||||
|             <table class="table table-borderless"> | ||||
|  | ||||
| @ -7,57 +7,54 @@ | ||||
| @inject IStringLocalizer<Add> Localizer | ||||
| @inject IStringLocalizer<SharedResources> SharedLocalizer | ||||
|  | ||||
| @if (_packages != null) | ||||
| { | ||||
|     <TabStrip> | ||||
|         @if (_packages.Count > 0) | ||||
| <TabStrip> | ||||
|     <TabPanel Name="Download" ResourceKey="Download"> | ||||
|         @if (_packages != null && _packages.Count > 0) | ||||
|         { | ||||
|             <TabPanel Name="Download" ResourceKey="Download"> | ||||
|                 <ModuleMessage Type="MessageType.Info" Message="Download one or more modules from the list below. Once you are ready click Install to complete the installation."></ModuleMessage> | ||||
|             <ModuleMessage Type="MessageType.Info" Message="Download one or more modules from the list below. Once you are ready click Install to complete the installation."></ModuleMessage> | ||||
|  | ||||
|                 <table class="table table-borderless" style=" margin: auto; width: 50% !important;"> | ||||
|                     <tr> | ||||
|                         <td> | ||||
|                             <input id="search" class="form-control" placeholder="@SharedLocalizer["Search.Hint"]" @bind="@_search" /> | ||||
|                         </td> | ||||
|                         <td> | ||||
|                             <button type="button" class="btn btn-primary" @onclick="Search">@SharedLocalizer["Search"]</button>  | ||||
|                             <button type="button" class="btn btn-secondary" @onclick="Reset">@SharedLocalizer["Reset"]</button> | ||||
|                         </td> | ||||
|                     </tr> | ||||
|                 </table> | ||||
|  | ||||
|                 <Pager Items="@_packages"> | ||||
|                     <Row> | ||||
|                         <td> | ||||
|                             <h3 style="display: inline;"><a href="@context.ProductUrl" target="_new">@context.Name</a></h3>  by:  <strong><a href="@context.OwnerUrl" target="new">@context.Owner</a></strong><br /> | ||||
|                             @(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)<br /> | ||||
|                             <strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>  |  @SharedLocalizer["Search.Version"]: <strong>@context.Version</strong> | ||||
|                         </td> | ||||
|                         <td style="vertical-align: middle;"> | ||||
|                             <button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadModule(context.PackageId, context.Version))>@SharedLocalizer["Download"]</button> | ||||
|                         </td> | ||||
|                     </Row> | ||||
|                 </Pager> | ||||
|             </TabPanel> | ||||
|         } | ||||
|         <TabPanel Name="Upload" ResourceKey="Upload"> | ||||
|             <table class="table table-borderless"> | ||||
|             <table class="table table-borderless" style=" margin: auto; width: 50% !important;"> | ||||
|                 <tr> | ||||
|                     <td> | ||||
|                         <Label HelpText="Upload one or more module packages. Once they are uploaded click Install to complete the installation." ResourceKey="Module">Module: </Label> | ||||
|                         <input id="search" class="form-control" placeholder="@SharedLocalizer["Search.Hint"]" @bind="@_search" /> | ||||
|                     </td> | ||||
|                     <td> | ||||
|                         <FileManager Filter="nupkg" ShowFiles="false" Folder="Packages" UploadMultiple="true" /> | ||||
|                         <button type="button" class="btn btn-primary" @onclick="Search">@SharedLocalizer["Search"]</button>  | ||||
|                         <button type="button" class="btn btn-secondary" @onclick="Reset">@SharedLocalizer["Reset"]</button> | ||||
|                     </td> | ||||
|                 </tr> | ||||
|             </table> | ||||
|         </TabPanel> | ||||
|     </TabStrip> | ||||
|  | ||||
|     <button type="button" class="btn btn-success" @onclick="InstallModules">@SharedLocalizer["Install"]</button> | ||||
|     <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> | ||||
| } | ||||
|             <Pager Items="@_packages"> | ||||
|                 <Row> | ||||
|                     <td> | ||||
|                         <h3 style="display: inline;"><a href="@context.ProductUrl" target="_new">@context.Name</a></h3>  by:  <strong><a href="@context.OwnerUrl" target="new">@context.Owner</a></strong><br /> | ||||
|                         @(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)<br /> | ||||
|                         <strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>  |  @SharedLocalizer["Search.Version"]: <strong>@context.Version</strong>  |  @SharedLocalizer["Search.Source"]: <strong>@context.PackageUrl</strong> | ||||
|                     </td> | ||||
|                     <td style="vertical-align: middle;"> | ||||
|                         <button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadModule(context.PackageId, context.Version))>@SharedLocalizer["Download"]</button> | ||||
|                     </td> | ||||
|                 </Row> | ||||
|             </Pager> | ||||
|         } | ||||
|     </TabPanel> | ||||
|     <TabPanel Name="Upload" ResourceKey="Upload"> | ||||
|         <table class="table table-borderless"> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label HelpText="Upload one or more module packages. Once they are uploaded click Install to complete the installation." ResourceKey="Module">Module: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <FileManager Filter="nupkg" ShowFiles="false" Folder="Packages" UploadMultiple="true" /> | ||||
|                 </td> | ||||
|             </tr> | ||||
|         </table> | ||||
|     </TabPanel> | ||||
| </TabStrip> | ||||
|  | ||||
| <button type="button" class="btn btn-success" @onclick="InstallModules">@SharedLocalizer["Install"]</button> | ||||
| <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> | ||||
|  | ||||
| @code { | ||||
|     private List<Package> _packages; | ||||
| @ -83,11 +80,14 @@ | ||||
|         var moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); | ||||
|         _packages = await PackageService.GetPackagesAsync("module", _search); | ||||
|  | ||||
|         foreach (Package package in _packages.ToArray()) | ||||
|         if (_packages != null) | ||||
|         { | ||||
|             if (moduledefinitions.Exists(item => item.PackageName == package.PackageId)) | ||||
|             foreach (Package package in _packages.ToArray()) | ||||
|             { | ||||
|                 _packages.Remove(package); | ||||
|                 if (moduledefinitions.Exists(item => item.PackageName == package.PackageId)) | ||||
|                 { | ||||
|                     _packages.Remove(package); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -5,98 +5,149 @@ | ||||
| @inject IStringLocalizer<Index> Localizer | ||||
| @inject IStringLocalizer<SharedResources> SharedLocalizer | ||||
|  | ||||
| <table class="table table-borderless"> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <Label For="version" HelpText="Framework Version" ResourceKey="FrameworkVersion">Framework Version: </Label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input id="version" class="form-control" @bind="@_version" readonly /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <Label For="runtime" HelpText="Blazor Runtime (Server or WebAssembly)" ResourceKey="BlazorRuntime">Blazor Runtime: </Label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <select id="runtime" class="form-control" @bind="@_runtime"> | ||||
|                 <option value="Server">@Localizer["Server"]</option> | ||||
|                 <option value="WebAssembly">@Localizer["WebAssembly"]</option> | ||||
|             </select> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <Label For="rendermode" HelpText="Blazor Server Render Mode" ResourceKey="RenderMode">Render Mode: </Label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <select id="rendermode" class="form-control" @bind="@_rendermode"> | ||||
|                 <option value="Server">@Localizer["Server"]</option> | ||||
|                 <option value="ServerPrerendered">@Localizer["ServerPrerendered"]</option> | ||||
|             </select> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <Label For="clrversion" HelpText="Common Language Runtime Version" ResourceKey="ClrVerion">CLR Version: </Label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input id="clrversion" class="form-control" @bind="@_clrversion" readonly /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <Label For="osversion" HelpText="Operating System Version" ResourceKey="OsVersion">OS Version: </Label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input id="osversion" class="form-control" @bind="@_osversion" readonly /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <Label For="serverpath" HelpText="Server Path" ResourceKey="ServerPath">Server Path: </Label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input id="serverpath" class="form-control" @bind="@_serverpath" readonly /> | ||||
|         </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|         <td> | ||||
|             <Label For="servertime" HelpText="Server Time" ResourceKey="ServerTime">Server Time: </Label> | ||||
|         </td> | ||||
|         <td> | ||||
|             <input id="servertime" class="form-control" @bind="@_servertime" readonly /> | ||||
|         </td> | ||||
|     </tr> | ||||
| </table> | ||||
| <button type="button" class="btn btn-success" @onclick="SaveConfig">@SharedLocalizer["Save"]</button>  | ||||
| <a class="btn btn-primary" href="swagger/index.html" target="_new">@Localizer["Access.ApiFramework"]</a>  | ||||
| <ActionDialog Header="Restart Application" Message="Are You Sure You Wish To Restart The Application?" Action="Restart Application" Security="SecurityAccessLevel.Host" Class="btn btn-danger" OnClick="@(async () => await RestartApplication())" ResourceKey="RestartApplication" /> | ||||
| <TabStrip> | ||||
|     <TabPanel Name="Info" Heading="Info" ResourceKey="Info"> | ||||
|         <table class="table table-borderless"> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="version" HelpText="Framework Version" ResourceKey="FrameworkVersion">Framework Version: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <input id="version" class="form-control" @bind="@_version" readonly /> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="clrversion" HelpText="Common Language Runtime Version" ResourceKey="CLRVersion">CLR Version: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <input id="clrversion" class="form-control" @bind="@_clrversion" readonly /> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="osversion" HelpText="Operating System Version" ResourceKey="OSVersion">OS Version: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <input id="osversion" class="form-control" @bind="@_osversion" readonly /> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="serverpath" HelpText="Server Path" ResourceKey="ServerPath">Server Path: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <input id="serverpath" class="form-control" @bind="@_serverpath" readonly /> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="servertime" HelpText="Server Time" ResourceKey="ServerTime">Server Time: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <input id="servertime" class="form-control" @bind="@_servertime" readonly /> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="installationid" HelpText="The Unique Identifier For Your Installation" ResourceKey="InstallationId">Installation ID: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <input id="installationid" class="form-control" @bind="@_installationid" readonly /> | ||||
|                 </td> | ||||
|             </tr> | ||||
|         </table> | ||||
|         <a class="btn btn-primary" href="swagger/index.html" target="_new">@Localizer["Access.ApiFramework"]</a>  | ||||
|         <ActionDialog Header="Restart Application" Message="Are You Sure You Wish To Restart The Application?" Action="Restart Application" Security="SecurityAccessLevel.Host" Class="btn btn-danger" OnClick="@(async () => await RestartApplication())" ResourceKey="RestartApplication" /> | ||||
|     </TabPanel> | ||||
|     <TabPanel Name="Options" Heading="Options" ResourceKey="Options"> | ||||
|         <table class="table table-borderless"> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="runtime" HelpText="Blazor Runtime (Server or WebAssembly)" ResourceKey="BlazorRuntime">Blazor Runtime: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <select id="runtime" class="form-control" @bind="@_runtime"> | ||||
|                         <option value="Server">@Localizer["Server"]</option> | ||||
|                         <option value="WebAssembly">@Localizer["WebAssembly"]</option> | ||||
|                     </select> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="rendermode" HelpText="Blazor Server Render Mode" ResourceKey="RenderMode">Render Mode: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <select id="rendermode" class="form-control" @bind="@_rendermode"> | ||||
|                         <option value="Server">@Localizer["Server"]</option> | ||||
|                         <option value="ServerPrerendered">@Localizer["ServerPrerendered"]</option> | ||||
|                     </select> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="detailederrors" HelpText="Specify If Detailed Errors Are Enabled For Blazor. This Option Should Not Not Be Enabled In Production." ResourceKey="DetailedErrors">Detailed Errors? </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <select id="detailederrors" class="form-control" @bind="@_detailederrors"> | ||||
|                         <option value="true">@SharedLocalizer["True"]</option> | ||||
|                         <option value="false">@SharedLocalizer["False"]</option> | ||||
|                     </select> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label For="logginglevel" HelpText="The Minimum Logging Level For The Event Log. This Option Can Be Used To Control The Volume Of Items Stored In Your Event Log." ResourceKey="LoggingLevel">Logging Level: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <select id="logginglevel" class="form-control" @bind="@_logginglevel"> | ||||
|                         <option value="Trace">@Localizer["Trace"]</option> | ||||
|                         <option value="Debug">@Localizer["Debug"]</option> | ||||
|                         <option value="Information">@Localizer["Information"]</option> | ||||
|                         <option value="Warning">@Localizer["Warning"]</option> | ||||
|                         <option value="Error">@Localizer["Error"]</option> | ||||
|                         <option value="Critical">@Localizer["Critical"]</option> | ||||
|                     </select> | ||||
|                 </td> | ||||
|             </tr> | ||||
|         </table> | ||||
|         <button type="button" class="btn btn-success" @onclick="SaveConfig">@SharedLocalizer["Save"]</button>  | ||||
|         <ActionDialog Header="Restart Application" Message="Are You Sure You Wish To Restart The Application?" Action="Restart Application" Security="SecurityAccessLevel.Host" Class="btn btn-danger" OnClick="@(async () => await RestartApplication())" ResourceKey="RestartApplication" /> | ||||
|     </TabPanel> | ||||
| </TabStrip> | ||||
|  | ||||
| @code { | ||||
|     public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; | ||||
|  | ||||
|     private string _version = string.Empty; | ||||
|     private string _runtime = string.Empty; | ||||
|     private string _rendermode = string.Empty; | ||||
|     private string _clrversion = string.Empty; | ||||
|     private string _osversion = string.Empty; | ||||
|     private string _serverpath = string.Empty; | ||||
|     private string _servertime = string.Empty; | ||||
|     private string _installationid = string.Empty; | ||||
|  | ||||
|     private string _runtime = string.Empty; | ||||
|     private string _rendermode = string.Empty; | ||||
|     private string _detailederrors = string.Empty; | ||||
|     private string _logginglevel = string.Empty; | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         _version = Constants.Version; | ||||
|         _runtime = PageState.Runtime.ToString(); | ||||
|  | ||||
|         Dictionary<string, string> systeminfo = await SystemService.GetSystemInfoAsync(); | ||||
|         if (systeminfo != null) | ||||
|         { | ||||
|             _rendermode = systeminfo["rendermode"]; | ||||
|             _clrversion = systeminfo["clrversion"]; | ||||
|             _osversion = systeminfo["osversion"]; | ||||
|             _serverpath = systeminfo["serverpath"]; | ||||
|             _servertime = systeminfo["servertime"]; | ||||
|             _installationid = systeminfo["installationid"]; | ||||
|  | ||||
|             _runtime = systeminfo["runtime"]; | ||||
|             _rendermode = systeminfo["rendermode"]; | ||||
|             _detailederrors = systeminfo["detailederrors"]; | ||||
|             _logginglevel = systeminfo["logginglevel"]; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -107,6 +158,8 @@ | ||||
|             var settings = new Dictionary<string, string>(); | ||||
|             settings.Add("runtime", _runtime); | ||||
|             settings.Add("rendermode", _rendermode); | ||||
|             settings.Add("detailederrors", _detailederrors); | ||||
|             settings.Add("logginglevel", _logginglevel); | ||||
|             await SystemService.UpdateSystemInfoAsync(settings); | ||||
|             AddModuleMessage(Localizer["Success.UpdateConfig.Restart"], MessageType.Success); | ||||
|         } | ||||
| @ -123,7 +176,7 @@ | ||||
|         { | ||||
|             ShowProgressIndicator(); | ||||
|             var interop = new Interop(JSRuntime); | ||||
|             await interop.RedirectBrowser(NavigateUrl(""), 10); | ||||
|             await interop.RedirectBrowser(NavigateUrl(""), 20); | ||||
|             await InstallationService.RestartAsync(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|  | ||||
| @ -7,57 +7,54 @@ | ||||
| @inject IStringLocalizer<Add> Localizer | ||||
| @inject IStringLocalizer<SharedResources> SharedLocalizer | ||||
|  | ||||
| @if (_packages != null) | ||||
| { | ||||
|     <TabStrip> | ||||
|         @if (_packages.Count > 0) | ||||
| <TabStrip> | ||||
|     <TabPanel Name="Download" ResourceKey="Download"> | ||||
|         @if (_packages != null && _packages.Count > 0) | ||||
|         { | ||||
|             <TabPanel Name="Download" ResourceKey="Download"> | ||||
|                 <ModuleMessage Type="MessageType.Info" Message="Download one or more themes from the list below. Once you are ready click Install to complete the installation."></ModuleMessage> | ||||
|             <ModuleMessage Type="MessageType.Info" Message="Download one or more themes from the list below. Once you are ready click Install to complete the installation."></ModuleMessage> | ||||
|  | ||||
|                 <table class="table table-borderless" style=" margin: auto; width: 50% !important;"> | ||||
|                     <tr> | ||||
|                         <td> | ||||
|                             <input id="search" class="form-control" placeholder="@SharedLocalizer["Search.Hint"]" @bind="@_search" /> | ||||
|                         </td> | ||||
|                         <td> | ||||
|                             <button type="button" class="btn btn-primary" @onclick="Search">@SharedLocalizer["Search"]</button>  | ||||
|                             <button type="button" class="btn btn-secondary" @onclick="Reset">@SharedLocalizer["Reset"]</button> | ||||
|                         </td> | ||||
|                     </tr> | ||||
|                 </table> | ||||
|  | ||||
|                 <Pager Items="@_packages"> | ||||
|                     <Row> | ||||
|                         <td> | ||||
|                             <h3 style="display: inline;"><a href="@context.ProductUrl" target="_new">@context.Name</a></h3>  @SharedLocalizer["Search.By"]:  <strong><a href="@context.OwnerUrl" target="new">@context.Owner</a></strong><br /> | ||||
|                             @(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)<br /> | ||||
|                             <strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>  |  @SharedLocalizer["Search.Version"]: <strong>@context.Version</strong> | ||||
|                         </td> | ||||
|                         <td style="vertical-align: middle;"> | ||||
|                             <button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadTheme(context.PackageId, context.Version))>@SharedLocalizer["Download"]</button> | ||||
|                         </td> | ||||
|                     </Row> | ||||
|                 </Pager> | ||||
|             </TabPanel> | ||||
|         } | ||||
|         <TabPanel Name="Upload" ResourceKey="Upload"> | ||||
|             <table class="table table-borderless"> | ||||
|             <table class="table table-borderless" style=" margin: auto; width: 50% !important;"> | ||||
|                 <tr> | ||||
|                     <td> | ||||
|                         <Label HelpText="Upload one or more theme packages. Once they are uploaded click Install to complete the installation." ResourceKey="Theme">Theme: </Label> | ||||
|                         <input id="search" class="form-control" placeholder="@SharedLocalizer["Search.Hint"]" @bind="@_search" /> | ||||
|                     </td> | ||||
|                     <td> | ||||
|                         <FileManager Filter="nupkg" ShowFiles="false" Folder="Packages" UploadMultiple="@true" /> | ||||
|                         <button type="button" class="btn btn-primary" @onclick="Search">@SharedLocalizer["Search"]</button>  | ||||
|                         <button type="button" class="btn btn-secondary" @onclick="Reset">@SharedLocalizer["Reset"]</button> | ||||
|                     </td> | ||||
|                 </tr> | ||||
|             </table> | ||||
|         </TabPanel> | ||||
|     </TabStrip> | ||||
|  | ||||
|     <button type="button" class="btn btn-success" @onclick="InstallThemes">@SharedLocalizer["Install"]</button> | ||||
|     <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> | ||||
| } | ||||
|             <Pager Items="@_packages"> | ||||
|                 <Row> | ||||
|                     <td> | ||||
|                         <h3 style="display: inline;"><a href="@context.ProductUrl" target="_new">@context.Name</a></h3>  @SharedLocalizer["Search.By"]:  <strong><a href="@context.OwnerUrl" target="new">@context.Owner</a></strong><br /> | ||||
|                         @(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)<br /> | ||||
|                         <strong>@(String.Format("{0:n0}", context.Downloads))</strong> @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: <strong>@context.ReleaseDate.ToString("MMM dd, yyyy")</strong>  |  @SharedLocalizer["Search.Version"]: <strong>@context.Version</strong>  |  @SharedLocalizer["Search.Source"]: <strong>@context.PackageUrl</strong> | ||||
|                     </td> | ||||
|                     <td style="vertical-align: middle;"> | ||||
|                         <button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadTheme(context.PackageId, context.Version))>@SharedLocalizer["Download"]</button> | ||||
|                     </td> | ||||
|                 </Row> | ||||
|             </Pager> | ||||
|         } | ||||
|     </TabPanel> | ||||
|     <TabPanel Name="Upload" ResourceKey="Upload"> | ||||
|         <table class="table table-borderless"> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label HelpText="Upload one or more theme packages. Once they are uploaded click Install to complete the installation." ResourceKey="Theme">Theme: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <FileManager Filter="nupkg" ShowFiles="false" Folder="Packages" UploadMultiple="@true" /> | ||||
|                 </td> | ||||
|             </tr> | ||||
|         </table> | ||||
|     </TabPanel> | ||||
| </TabStrip> | ||||
|  | ||||
| <button type="button" class="btn btn-success" @onclick="InstallThemes">@SharedLocalizer["Install"]</button> | ||||
| <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> | ||||
|  | ||||
| @code { | ||||
|     private List<Package> _packages; | ||||
| @ -83,11 +80,14 @@ | ||||
|         var themes = await ThemeService.GetThemesAsync(); | ||||
|         _packages = await PackageService.GetPackagesAsync("theme", _search); | ||||
|  | ||||
|         foreach (Package package in _packages.ToArray()) | ||||
|         if (_packages != null) | ||||
|         { | ||||
|             if (themes.Exists(item => item.PackageName == package.PackageId)) | ||||
|             foreach (Package package in _packages.ToArray()) | ||||
|             { | ||||
|                 _packages.Remove(package); | ||||
|                 if (themes.Exists(item => item.PackageName == package.PackageId)) | ||||
|                 { | ||||
|                     _packages.Remove(package); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -7,37 +7,34 @@ | ||||
| @inject IStringLocalizer<Index> Localizer | ||||
| @inject IStringLocalizer<SharedResources> SharedLocalizer | ||||
|  | ||||
| @if (_package != null) | ||||
| { | ||||
|     <TabStrip> | ||||
|         <TabPanel Name="Download" ResourceKey="Download"> | ||||
|             @if (_upgradeavailable) | ||||
|             { | ||||
|                 <ModuleMessage Type="MessageType.Info" Message="Select The Download Button To Download The Framework Upgrade Package And Then Select Upgrade"></ModuleMessage> | ||||
|                 <button type="button" class="btn btn-primary" @onclick=@(async () => await Download(Constants.PackageId, @_package.Version))>@SharedLocalizer["Download"] @_package.Version</button> | ||||
|                 <button type="button" class="btn btn-success" @onclick="Upgrade">@SharedLocalizer["Upgrade"]</button> | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 <ModuleMessage Type="MessageType.Info" Message="Framework Is Already Up To Date"></ModuleMessage> | ||||
|             } | ||||
|         </TabPanel> | ||||
|         <TabPanel Name="Upload" ResourceKey="Upload"> | ||||
|             <ModuleMessage Type="MessageType.Info" Message="Upload A Framework Package (Oqtane.Framework.version.nupkg) And Then Select Upgrade"></ModuleMessage> | ||||
|             <table class="table table-borderless"> | ||||
|                 <tr> | ||||
|                     <td> | ||||
|                         <Label HelpText="Upload A Framework Package And Then Select Upgrade" ResourceKey="Framework">Framework: </Label> | ||||
|                     </td> | ||||
|                     <td> | ||||
|                         <FileManager Filter="nupkg" ShowFiles="false" Folder="Packages" /> | ||||
|                     </td> | ||||
|                 </tr> | ||||
|             </table> | ||||
| <TabStrip> | ||||
|     <TabPanel Name="Download" ResourceKey="Download"> | ||||
|         @if (_package != null && _upgradeavailable) | ||||
|         { | ||||
|             <ModuleMessage Type="MessageType.Info" Message="Select The Download Button To Download The Framework Upgrade Package And Then Select Upgrade"></ModuleMessage> | ||||
|             <button type="button" class="btn btn-primary" @onclick=@(async () => await Download(Constants.PackageId, @_package.Version))>@SharedLocalizer["Download"] @_package.Version</button> | ||||
|             <button type="button" class="btn btn-success" @onclick="Upgrade">@SharedLocalizer["Upgrade"]</button> | ||||
|         </TabPanel> | ||||
|     </TabStrip> | ||||
| } | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             <ModuleMessage Type="MessageType.Info" Message="Framework Is Already Up To Date"></ModuleMessage> | ||||
|         } | ||||
|     </TabPanel> | ||||
|     <TabPanel Name="Upload" ResourceKey="Upload"> | ||||
|         <ModuleMessage Type="MessageType.Info" Message="Upload A Framework Package (Oqtane.Framework.version.nupkg) And Then Select Upgrade"></ModuleMessage> | ||||
|         <table class="table table-borderless"> | ||||
|             <tr> | ||||
|                 <td> | ||||
|                     <Label HelpText="Upload A Framework Package And Then Select Upgrade" ResourceKey="Framework">Framework: </Label> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                     <FileManager Filter="nupkg" ShowFiles="false" Folder="Packages" /> | ||||
|                 </td> | ||||
|             </tr> | ||||
|         </table> | ||||
|         <button type="button" class="btn btn-success" @onclick="Upgrade">@SharedLocalizer["Upgrade"]</button> | ||||
|     </TabPanel> | ||||
| </TabStrip> | ||||
|  | ||||
| @code { | ||||
|     private Package _package; | ||||
| @ -76,7 +73,7 @@ | ||||
|             AddModuleMessage(Localizer["Info.Upgrade.Wait"], MessageType.Info); | ||||
|             ShowProgressIndicator(); | ||||
|             var interop = new Interop(JSRuntime); | ||||
|             await interop.RedirectBrowser(NavigateUrl(), 30); | ||||
|             await interop.RedirectBrowser(NavigateUrl(), 20); | ||||
|             await InstallationService.Upgrade(); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 gjwalk
					gjwalk