diff --git a/src/Ombi.Settings/Settings/Models/CustomPageSettings.cs b/src/Ombi.Settings/Settings/Models/CustomPageSettings.cs new file mode 100644 index 000000000..9a33b799c --- /dev/null +++ b/src/Ombi.Settings/Settings/Models/CustomPageSettings.cs @@ -0,0 +1,9 @@ +namespace Ombi.Settings.Settings.Models +{ + public class CustomPageSettings : Settings + { + public bool Enabled { get; set; } + public string Title { get; set; } + public string Html { get; set; } + } +} \ No newline at end of file diff --git a/src/Ombi/ClientApp/app/app.module.ts b/src/Ombi/ClientApp/app/app.module.ts index 0f268e4d2..6917cc85b 100644 --- a/src/Ombi/ClientApp/app/app.module.ts +++ b/src/Ombi/ClientApp/app/app.module.ts @@ -14,13 +14,16 @@ import { NgbModule } from "@ng-bootstrap/ng-bootstrap"; import { TranslateLoader, TranslateModule } from "@ngx-translate/core"; import { TranslateHttpLoader } from "@ngx-translate/http-loader"; import { CookieService } from "ng2-cookies"; +import { NgxEditorModule } from "ngx-editor"; import { GrowlModule } from "primeng/components/growl/growl"; -import { ButtonModule, CaptchaModule, ConfirmationService, ConfirmDialogModule, DataTableModule, DialogModule, OverlayPanelModule, SharedModule, SidebarModule, TooltipModule } from "primeng/primeng"; +import { ButtonModule, CaptchaModule, ConfirmationService, ConfirmDialogModule, DataTableModule, DialogModule, OverlayPanelModule, SharedModule, SidebarModule, + TooltipModule } from "primeng/primeng"; // Components import { AppComponent } from "./app.component"; import { CookieComponent } from "./auth/cookie.component"; +import { CustomPageComponent } from "./custompage/custompage.component"; import { PageNotFoundComponent } from "./errors/not-found.component"; import { LandingPageComponent } from "./landingpage/landingpage.component"; import { LoginComponent } from "./login/login.component"; @@ -43,6 +46,7 @@ const routes: Routes = [ { path: "", redirectTo: "/search", pathMatch: "full" }, { path: "login", component: LoginComponent }, { path: "Login/OAuth/:pin", component: LoginOAuthComponent }, + { path: "Custom", component: CustomPageComponent }, { path: "login/:landing", component: LoginComponent }, { path: "reset", component: ResetPasswordComponent }, { path: "token", component: TokenResetPasswordComponent }, @@ -88,6 +92,7 @@ export function JwtTokenGetter() { FormsModule, DataTableModule, SharedModule, + NgxEditorModule, DialogModule, MatButtonModule, NgbModule.forRoot(), @@ -121,6 +126,7 @@ export function JwtTokenGetter() { LandingPageComponent, ResetPasswordComponent, TokenResetPasswordComponent, + CustomPageComponent, CookieComponent, LoginOAuthComponent, ], diff --git a/src/Ombi/ClientApp/app/custompage/custompage.component.html b/src/Ombi/ClientApp/app/custompage/custompage.component.html new file mode 100644 index 000000000..545f56cb5 --- /dev/null +++ b/src/Ombi/ClientApp/app/custompage/custompage.component.html @@ -0,0 +1,7 @@ + +
+ + +
+
+
\ No newline at end of file diff --git a/src/Ombi/ClientApp/app/custompage/custompage.component.scss b/src/Ombi/ClientApp/app/custompage/custompage.component.scss new file mode 100644 index 000000000..127ee8b74 --- /dev/null +++ b/src/Ombi/ClientApp/app/custompage/custompage.component.scss @@ -0,0 +1,44 @@ +$primary-colour: #df691a; +$primary-colour-outline: #ff761b; +$bg-colour: #333333; +$bg-colour-disabled: #252424; + +:host app-ngx-editor /deep/ .ngx-toolbar { + background-color: $bg-colour; + border: 1px solid $primary-colour-outline; +} + +:host app-ngx-editor /deep/ .ngx-toolbar-set { + background-color: transparent !important; + border: 1px solid $primary-colour-outline !important; +} + +:host app-ngx-editor /deep/ .ngx-editor-button { + -o-transition: all 0.218s; + -moz-transition: all 0.218s; + -webkit-transition: all 0.218s; + transition: all 0.218s; + color: $primary-colour-outline; + background-color: transparent; + background-image: none; + border-color: $primary-colour-outline !important; +} + +:host app-ngx-editor /deep/ .ngx-editor-button:hover { + color: black; + background-color: $primary-colour !important; + border-color: $primary-colour-outline !important; +} + +:host app-ngx-editor /deep/ .ngx-editor-grippie { + background-color: $bg-colour; + border: 1px solid $primary-colour-outline; +} + +:host app-ngx-editor /deep/ .ngx-editor-textarea { + border: 1px solid $primary-colour-outline !important; +} + +:host app-ngx-editor /deep/ .ngx-editor-message { + display:none !important; +} \ No newline at end of file diff --git a/src/Ombi/ClientApp/app/custompage/custompage.component.ts b/src/Ombi/ClientApp/app/custompage/custompage.component.ts new file mode 100644 index 000000000..dd9259dae --- /dev/null +++ b/src/Ombi/ClientApp/app/custompage/custompage.component.ts @@ -0,0 +1,19 @@ +import { Component, OnInit } from "@angular/core"; + +@Component({ + templateUrl: "./custompage.component.html", + styleUrls: ["./custompage.component.scss"], +}) +export class CustomPageComponent implements OnInit { + + public html: string; + public isEditing: boolean; + + constructor() { +// + } + + public ngOnInit() { + // + } +} diff --git a/src/Ombi/Controllers/SettingsController.cs b/src/Ombi/Controllers/SettingsController.cs index 45efc8067..770745786 100644 --- a/src/Ombi/Controllers/SettingsController.cs +++ b/src/Ombi/Controllers/SettingsController.cs @@ -706,6 +706,27 @@ namespace Ombi.Controllers return emailSettings.Enabled; } + /// + /// Gets the Custom Page Settings. + /// + /// + [HttpGet("CustomPage")] + [AllowAnonymous] + public async Task CustomPageSettings() + { + return await Get(); + } + + /// + /// Saves the Custom Page Settings. + /// + /// + [HttpGet("CustomPage")] + public async Task CustomPageSettings([FromBody] CustomPageSettings page) + { + return await Save(page); + } + /// /// Saves the discord notification settings. /// diff --git a/src/Ombi/package.json b/src/Ombi/package.json index 0d4c31f21..5713b1061 100644 --- a/src/Ombi/package.json +++ b/src/Ombi/package.json @@ -15,20 +15,20 @@ "@angular/animations": "^7.1.4", "@angular/cdk": "^7.2.0", "@angular/common": "^7.1.4", - "@angular/compiler":"^7.1.4", + "@angular/compiler": "^7.1.4", "@angular/compiler-cli": "^7.1.4", "@angular/core": "^7.1.4", - "@angular/forms":"^7.1.4", + "@angular/forms": "^7.1.4", "@angular/http": "^7.1.4", - "@angular/material":"^7.2.0", + "@angular/material": "^7.2.0", "@angular/platform-browser": "^7.1.4", "@angular/platform-browser-dynamic": "^7.1.4", - "@angular/platform-server":"^7.1.4", - "@angular/router":"^7.1.4", + "@angular/platform-server": "^7.1.4", + "@angular/router": "^7.1.4", "@auth0/angular-jwt": "^2.0.0", "@ng-bootstrap/ng-bootstrap": "^3.3.1", - "@ngtools/webpack":"^7.1.4", - "@ngu/carousel": "^1.4.9-beta-2", + "@ngtools/webpack": "^7.1.4", + "@ngu/carousel": "^1.4.9-beta-2", "@ngx-translate/core": "^11.0.1", "@ngx-translate/http-loader": "^4.0.0", "@types/core-js": "^2.5.0", @@ -62,7 +62,9 @@ "moment": "^2.22.2", "natives": "1.1.6", "ng2-cookies": "^1.0.12", + "ngx-bootstrap": "^3.1.4", "ngx-clipboard": "^11.1.1", + "ngx-editor": "^4.1.0", "ngx-infinite-scroll": "^6.0.1", "ngx-moment": "^3.0.1", "ngx-order-pipe": "^2.0.1", diff --git a/src/Ombi/webpack.config.vendor.ts b/src/Ombi/webpack.config.vendor.ts index dc7c282bd..3f360af10 100644 --- a/src/Ombi/webpack.config.vendor.ts +++ b/src/Ombi/webpack.config.vendor.ts @@ -53,6 +53,8 @@ module.exports = (env: any) => { "@ngx-translate/http-loader", "ngx-order-pipe", "@yellowspot/ng-truncate", + "ngx-editor", + "ngx-bootstrap", ]), }, plugins: prod ? [] : [ diff --git a/src/Ombi/yarn.lock b/src/Ombi/yarn.lock index ae028221a..95d3e136b 100644 --- a/src/Ombi/yarn.lock +++ b/src/Ombi/yarn.lock @@ -4182,6 +4182,10 @@ ng2-cookies@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/ng2-cookies/-/ng2-cookies-1.0.12.tgz#3f3e613e0137b0649b705c678074b4bd08149ccc" +ngx-bootstrap@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/ngx-bootstrap/-/ngx-bootstrap-3.1.4.tgz#5105c0227da3b51a1972d04efa1504a79474fd57" + ngx-clipboard@^11.1.1: version "11.1.9" resolved "https://registry.yarnpkg.com/ngx-clipboard/-/ngx-clipboard-11.1.9.tgz#a391853dc49e436de407260863a2c814d73a9332" @@ -4189,6 +4193,12 @@ ngx-clipboard@^11.1.1: ngx-window-token "^1.0.2" tslib "^1.9.0" +ngx-editor@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ngx-editor/-/ngx-editor-4.1.0.tgz#3ec5820627f25a2239094747cccf88a7ca02f79f" + dependencies: + tslib "^1.9.0" + ngx-infinite-scroll@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ngx-infinite-scroll/-/ngx-infinite-scroll-6.0.1.tgz#571e54860ce32839451569bcf6e7a63cfae327bd"