mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-19 12:59:39 -07:00
Added an about page #865
This commit is contained in:
parent
25d8f9b40d
commit
ba1638187c
9 changed files with 164 additions and 3 deletions
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
|
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li *ngIf="hasRole('Admin') " [routerLinkActive]="['active']"><a [routerLink]="['/Settings/Ombi']"><i class="fa fa-cog"></i> Settings</a></li>
|
<li *ngIf="hasRole('Admin') " [routerLinkActive]="['active']"><a [routerLink]="['/Settings/About']"><i class="fa fa-cog"></i> Settings</a></li>
|
||||||
<li [routerLinkActive]="['active']" class="dropdown">
|
<li [routerLinkActive]="['active']" class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-user"></i> Welcome {{user.name}} <span class="caret"></span></a>
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-user"></i> Welcome {{user.name}} <span class="caret"></span></a>
|
||||||
<ul class="dropdown-menu" role="menu">
|
<ul class="dropdown-menu" role="menu">
|
||||||
|
|
|
@ -101,3 +101,12 @@ export interface IAuthenticationSettings extends ISettings {
|
||||||
requireNonAlphanumeric: boolean;
|
requireNonAlphanumeric: boolean;
|
||||||
requireUppercase: boolean;
|
requireUppercase: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IAbout {
|
||||||
|
version: string;
|
||||||
|
branch: string;
|
||||||
|
osArchitecture: string;
|
||||||
|
osDescription: string;
|
||||||
|
processArchitecture: string;
|
||||||
|
applicationBasePath: string;
|
||||||
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { AuthHttp } from "angular2-jwt";
|
||||||
import { Observable } from "rxjs/Rx";
|
import { Observable } from "rxjs/Rx";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
IAbout,
|
||||||
IAuthenticationSettings,
|
IAuthenticationSettings,
|
||||||
ICustomizationSettings,
|
ICustomizationSettings,
|
||||||
IDiscordNotifcationSettings,
|
IDiscordNotifcationSettings,
|
||||||
|
@ -29,6 +30,10 @@ export class SettingsService extends ServiceAuthHelpers {
|
||||||
super(httpAuth, "/api/v1/Settings");
|
super(httpAuth, "/api/v1/Settings");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public about(): Observable<IAbout> {
|
||||||
|
return this.httpAuth.get(`${this.url}/About/`).map(this.extractData).catch(this.handleError);
|
||||||
|
}
|
||||||
|
|
||||||
public getOmbi(): Observable<IOmbiSettings> {
|
public getOmbi(): Observable<IOmbiSettings> {
|
||||||
return this.httpAuth.get(`${this.url}/Ombi/`).map(this.extractData).catch(this.handleError);
|
return this.httpAuth.get(`${this.url}/Ombi/`).map(this.extractData).catch(this.handleError);
|
||||||
}
|
}
|
||||||
|
|
90
src/Ombi/ClientApp/app/settings/about/about.component.html
Normal file
90
src/Ombi/ClientApp/app/settings/about/about.component.html
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
|
||||||
|
<settings-menu></settings-menu>
|
||||||
|
<div *ngIf="about">
|
||||||
|
<fieldset>
|
||||||
|
<legend>About</legend>
|
||||||
|
<form>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<table class="table table-striped table-hover table-responsive table-condensed">
|
||||||
|
<thead>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span>Version</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>{{about.version}}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span>Branch</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>{{about.branch}}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span>Github</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://github.com/tidusjar/Ombi" target="_blank">https://github.com/tidusjar/Ombi</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span>Gitter</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://gitter.im/tidusjar/Ombi" target="_blank">https://gitter.im/tidusjar/Ombi</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span>Forums</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://forums.ombi.io/" target="_blank">https://forums.ombi.io</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span>OS Architecture</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>{{about.osArchitecture}}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span>OS Description</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>{{about.osDescription}}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span>Process Architecture</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>{{about.processArchitecture}}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span>Application Base Path</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>{{about.applicationBasePath}}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
17
src/Ombi/ClientApp/app/settings/about/about.component.ts
Normal file
17
src/Ombi/ClientApp/app/settings/about/about.component.ts
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import { Component, OnInit } from "@angular/core";
|
||||||
|
import { IAbout } from "../../interfaces/ISettings";
|
||||||
|
import { SettingsService } from "../../services";
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
templateUrl: "./about.component.html",
|
||||||
|
})
|
||||||
|
export class AboutComponent implements OnInit {
|
||||||
|
|
||||||
|
public about: IAbout;
|
||||||
|
|
||||||
|
constructor(private settingsService: SettingsService) { }
|
||||||
|
|
||||||
|
public ngOnInit() {
|
||||||
|
this.settingsService.about().subscribe(x => this.about = x);
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,6 +11,7 @@ import { AuthService } from "../auth/auth.service";
|
||||||
import { RadarrService, SonarrService, TesterService, UpdateService, ValidationService } from "../services";
|
import { RadarrService, SonarrService, TesterService, UpdateService, ValidationService } from "../services";
|
||||||
|
|
||||||
import { PipeModule } from "../pipes/pipe.module";
|
import { PipeModule } from "../pipes/pipe.module";
|
||||||
|
import { AboutComponent } from "./about/about.component";
|
||||||
import { CustomizationComponent } from "./customization/customization.component";
|
import { CustomizationComponent } from "./customization/customization.component";
|
||||||
import { EmbyComponent } from "./emby/emby.component";
|
import { EmbyComponent } from "./emby/emby.component";
|
||||||
import { LandingPageComponent } from "./landingpage/landingpage.component";
|
import { LandingPageComponent } from "./landingpage/landingpage.component";
|
||||||
|
@ -34,6 +35,7 @@ import { AutoCompleteModule, CalendarModule, InputSwitchModule, InputTextModule,
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{ path: "Settings/Ombi", component: OmbiComponent, canActivate: [AuthGuard] },
|
{ path: "Settings/Ombi", component: OmbiComponent, canActivate: [AuthGuard] },
|
||||||
|
{ path: "Settings/About", component: AboutComponent, canActivate: [AuthGuard] },
|
||||||
{ path: "Settings/Plex", component: PlexComponent, canActivate: [AuthGuard] },
|
{ path: "Settings/Plex", component: PlexComponent, canActivate: [AuthGuard] },
|
||||||
{ path: "Settings/Emby", component: EmbyComponent, canActivate: [AuthGuard] },
|
{ path: "Settings/Emby", component: EmbyComponent, canActivate: [AuthGuard] },
|
||||||
{ path: "Settings/Sonarr", component: SonarrComponent, canActivate: [AuthGuard] },
|
{ path: "Settings/Sonarr", component: SonarrComponent, canActivate: [AuthGuard] },
|
||||||
|
@ -86,6 +88,7 @@ const routes: Routes = [
|
||||||
PushbulletComponent,
|
PushbulletComponent,
|
||||||
UserManagementComponent,
|
UserManagementComponent,
|
||||||
UpdateComponent,
|
UpdateComponent,
|
||||||
|
AboutComponent,
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
RouterModule,
|
RouterModule,
|
||||||
|
|
|
@ -67,6 +67,7 @@
|
||||||
<i class="fa fa-tachometer" aria-hidden="true"></i> System <span class="caret"></span>
|
<i class="fa fa-tachometer" aria-hidden="true"></i> System <span class="caret"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
|
<li [routerLinkActive]="['active']"><a [routerLink]="['/Settings/About']">About</a></li>
|
||||||
<li [routerLinkActive]="['active']"><a [routerLink]="['/Settings/Update']">Update</a></li>
|
<li [routerLinkActive]="['active']"><a [routerLink]="['/Settings/Update']">Update</a></li>
|
||||||
<li [routerLinkActive]="['active']"><a [routerLink]="['/Settings/Logs']">Logs (Not available)</a></li>
|
<li [routerLinkActive]="['active']"><a [routerLink]="['/Settings/Logs']">Logs (Not available)</a></li>
|
||||||
<li [routerLinkActive]="['active']"><a [routerLink]="['/Settings/ScheduledJobs']">Scheduled Jobs (Not available)</a></li>
|
<li [routerLinkActive]="['active']"><a [routerLink]="['/Settings/ScheduledJobs']">Scheduled Jobs (Not available)</a></li>
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using Hangfire;
|
using Hangfire;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.PlatformAbstractions;
|
||||||
using Ombi.Api.Emby;
|
using Ombi.Api.Emby;
|
||||||
using Ombi.Attributes;
|
using Ombi.Attributes;
|
||||||
using Ombi.Core.Models.UI;
|
using Ombi.Core.Models.UI;
|
||||||
|
@ -13,6 +15,7 @@ using Ombi.Core.Settings;
|
||||||
using Ombi.Core.Settings.Models;
|
using Ombi.Core.Settings.Models;
|
||||||
using Ombi.Core.Settings.Models.External;
|
using Ombi.Core.Settings.Models.External;
|
||||||
using Ombi.Helpers;
|
using Ombi.Helpers;
|
||||||
|
using Ombi.Models;
|
||||||
using Ombi.Schedule.Jobs;
|
using Ombi.Schedule.Jobs;
|
||||||
using Ombi.Schedule.Jobs.Emby;
|
using Ombi.Schedule.Jobs.Emby;
|
||||||
using Ombi.Schedule.Jobs.Radarr;
|
using Ombi.Schedule.Jobs.Radarr;
|
||||||
|
@ -24,6 +27,7 @@ using Ombi.Store.Repository;
|
||||||
|
|
||||||
namespace Ombi.Controllers
|
namespace Ombi.Controllers
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The Settings Controller
|
/// The Settings Controller
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -42,8 +46,8 @@ namespace Ombi.Controllers
|
||||||
/// <param name="cacher">The cacher.</param>
|
/// <param name="cacher">The cacher.</param>
|
||||||
/// <param name="embyCacher">The embyCacher.</param>
|
/// <param name="embyCacher">The embyCacher.</param>
|
||||||
/// <param name="radarrCacher">The radarrCacher.</param>
|
/// <param name="radarrCacher">The radarrCacher.</param>
|
||||||
public SettingsController(ISettingsResolver resolver,
|
public SettingsController(ISettingsResolver resolver,
|
||||||
IMapper mapper,
|
IMapper mapper,
|
||||||
INotificationTemplatesRepository templateRepo,
|
INotificationTemplatesRepository templateRepo,
|
||||||
IEmbyApi embyApi,
|
IEmbyApi embyApi,
|
||||||
IPlexContentCacher cacher,
|
IPlexContentCacher cacher,
|
||||||
|
@ -89,6 +93,25 @@ namespace Ombi.Controllers
|
||||||
return await Save(ombi);
|
return await Save(ombi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("about")]
|
||||||
|
public AboutViewModel About()
|
||||||
|
{
|
||||||
|
var model = new AboutViewModel
|
||||||
|
{
|
||||||
|
FrameworkDescription = RuntimeInformation.FrameworkDescription,
|
||||||
|
OsArchitecture = RuntimeInformation.OSArchitecture.ToString(),
|
||||||
|
OsDescription = RuntimeInformation.OSDescription,
|
||||||
|
ProcessArchitecture = RuntimeInformation.ProcessArchitecture.ToString(),
|
||||||
|
ApplicationBasePath =PlatformServices.Default.Application.ApplicationBasePath
|
||||||
|
};
|
||||||
|
|
||||||
|
var version = AssemblyHelper.GetRuntimeVersion();
|
||||||
|
var productArray = version.Split('-');
|
||||||
|
model.Version = productArray[0];
|
||||||
|
model.Branch = productArray[1];
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost("ombi/resetApi")]
|
[HttpPost("ombi/resetApi")]
|
||||||
public async Task<string> ResetApiKey()
|
public async Task<string> ResetApiKey()
|
||||||
{
|
{
|
||||||
|
|
13
src/Ombi/Models/AboutViewModel.cs
Normal file
13
src/Ombi/Models/AboutViewModel.cs
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
namespace Ombi.Models
|
||||||
|
{
|
||||||
|
public class AboutViewModel
|
||||||
|
{
|
||||||
|
public string Version { get; set; }
|
||||||
|
public string Branch { get; set; }
|
||||||
|
public string FrameworkDescription { get; set; }
|
||||||
|
public string OsArchitecture { get; set; }
|
||||||
|
public string OsDescription { get; set; }
|
||||||
|
public string ProcessArchitecture { get; set; }
|
||||||
|
public string ApplicationBasePath { get; set; }
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue