+
diff --git a/client/src/app/+admin/admin-moderation.component.ts b/client/src/app/+admin/admin-moderation.component.ts
new file mode 100644
index 000000000..b07457869
--- /dev/null
+++ b/client/src/app/+admin/admin-moderation.component.ts
@@ -0,0 +1,87 @@
+import { Component, OnInit } from '@angular/core'
+import { RouterOutlet } from '@angular/router'
+import { AuthService, ServerService } from '@app/core'
+import { HorizontalMenuComponent, HorizontalMenuEntry } from '@app/shared/shared-main/menu/horizontal-menu.component'
+import { UserRight, UserRightType } from '@peertube/peertube-models'
+
+@Component({
+ templateUrl: './admin-moderation.component.html',
+ standalone: true,
+ imports: [ HorizontalMenuComponent, RouterOutlet ]
+})
+export class AdminModerationComponent implements OnInit {
+ menuEntries: HorizontalMenuEntry[] = []
+
+ constructor (
+ private auth: AuthService,
+ private server: ServerService
+ ) { }
+
+ ngOnInit () {
+ this.server.configReloaded.subscribe(() => this.buildMenu())
+
+ this.buildMenu()
+ }
+
+ private buildMenu () {
+ this.menuEntries = []
+
+ if (this.hasRight(UserRight.MANAGE_ABUSES)) {
+ this.menuEntries.push({
+ label: $localize`Reports`,
+ routerLink: '/admin/moderation/abuses/list'
+ })
+ }
+
+ if (this.hasRight(UserRight.MANAGE_REGISTRATIONS)) {
+ this.menuEntries.push({
+ label: $localize`Registrations`,
+ routerLink: '/admin/moderation/registrations/list'
+ })
+ }
+
+ if (this.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST)) {
+ this.menuEntries.push({
+ label: $localize`Video blocks`,
+ routerLink: '/admin/moderation/video-blocks/list'
+ })
+ }
+
+ if (this.hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST) || this.hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST)) {
+ const item: HorizontalMenuEntry = {
+ label: $localize`Mutes`,
+ routerLink: '',
+ children: []
+ }
+
+ if (this.hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST)) {
+ item.children.push({
+ label: $localize`Muted accounts`,
+ routerLink: '/admin/moderation/blocklist/accounts'
+ })
+ }
+
+ if (this.hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST)) {
+ item.children.push({
+ label: $localize`Muted servers`,
+ routerLink: '/admin/moderation/blocklist/servers'
+ })
+ }
+
+ item.routerLink = item.children[0].routerLink
+
+ this.menuEntries.push(item)
+ }
+
+ if (this.hasRight(UserRight.MANAGE_INSTANCE_WATCHED_WORDS)) {
+ this.menuEntries.push({
+ label: $localize`Watched words`,
+ routerLink: '/admin/moderation/watched-words/list'
+ })
+ }
+ }
+
+ private hasRight (right: UserRightType) {
+ return this.auth.getUser().hasRight(right)
+ }
+}
diff --git a/client/src/app/+admin/admin-overview.component.html b/client/src/app/+admin/admin-overview.component.html
new file mode 100644
index 000000000..4622b7cb9
--- /dev/null
+++ b/client/src/app/+admin/admin-overview.component.html
@@ -0,0 +1,11 @@
+
diff --git a/client/src/app/+admin/admin-overview.component.ts b/client/src/app/+admin/admin-overview.component.ts
new file mode 100644
index 000000000..ffd9aee12
--- /dev/null
+++ b/client/src/app/+admin/admin-overview.component.ts
@@ -0,0 +1,54 @@
+import { Component, OnInit } from '@angular/core'
+import { RouterOutlet } from '@angular/router'
+import { AuthService } from '@app/core'
+import { HorizontalMenuComponent, HorizontalMenuEntry } from '@app/shared/shared-main/menu/horizontal-menu.component'
+import { UserRight, UserRightType } from '@peertube/peertube-models'
+
+@Component({
+ templateUrl: './admin-overview.component.html',
+ standalone: true,
+ imports: [ HorizontalMenuComponent, RouterOutlet ]
+})
+export class AdminOverviewComponent implements OnInit {
+ menuEntries: HorizontalMenuEntry[] = []
+
+ constructor (
+ private auth: AuthService
+ ) { }
+
+ ngOnInit () {
+ this.buildMenu()
+ }
+
+ private buildMenu () {
+ this.menuEntries = []
+
+ if (this.hasRight(UserRight.MANAGE_USERS)) {
+ this.menuEntries.push({
+ label: $localize`Users`,
+ routerLink: '/admin/overview/users'
+ })
+ }
+
+ if (this.hasRight(UserRight.SEE_ALL_VIDEOS)) {
+ this.menuEntries.push({
+ label: $localize`Videos`,
+ routerLink: '/admin/overview/videos',
+ queryParams: {
+ search: 'isLocal:true'
+ }
+ })
+ }
+
+ if (this.hasRight(UserRight.SEE_ALL_COMMENTS)) {
+ this.menuEntries.push({
+ label: $localize`Comments`,
+ routerLink: '/admin/overview/comments'
+ })
+ }
+ }
+
+ private hasRight (right: UserRightType) {
+ return this.auth.getUser().hasRight(right)
+ }
+}
diff --git a/client/src/app/+admin/admin-settings.component.html b/client/src/app/+admin/admin-settings.component.html
new file mode 100644
index 000000000..742aa4e68
--- /dev/null
+++ b/client/src/app/+admin/admin-settings.component.html
@@ -0,0 +1,11 @@
+
diff --git a/client/src/app/+admin/admin-settings.component.ts b/client/src/app/+admin/admin-settings.component.ts
new file mode 100644
index 000000000..e028edcef
--- /dev/null
+++ b/client/src/app/+admin/admin-settings.component.ts
@@ -0,0 +1,179 @@
+import { Component, OnInit } from '@angular/core'
+import { RouterOutlet } from '@angular/router'
+import { AuthService, ServerService } from '@app/core'
+import { HorizontalMenuComponent, HorizontalMenuEntry } from '@app/shared/shared-main/menu/horizontal-menu.component'
+import { PluginType, UserRight, UserRightType } from '@peertube/peertube-models'
+
+@Component({
+ templateUrl: './admin-settings.component.html',
+ standalone: true,
+ imports: [ HorizontalMenuComponent, RouterOutlet ]
+})
+export class AdminSettingsComponent implements OnInit {
+ menuEntries: HorizontalMenuEntry[] = []
+
+ constructor (
+ private auth: AuthService,
+ private server: ServerService
+ ) { }
+
+ ngOnInit () {
+ this.server.configReloaded.subscribe(() => this.buildMenu())
+
+ this.buildMenu()
+ }
+
+ private buildMenu () {
+ this.menuEntries = []
+
+ this.buildConfigurationItems()
+ this.buildFederationItems()
+ this.buildPluginItems()
+ this.buildRunnerItems()
+ this.buildSystemItems()
+ }
+
+ private buildFederationItems () {
+ if (!this.hasRight(UserRight.MANAGE_SERVER_FOLLOW)) return
+
+ this.menuEntries.push({
+ label: $localize`Federation`,
+ routerLink: '/admin/settings/follows/following-list',
+ children: [
+ {
+ label: $localize`Following`,
+ routerLink: '/admin/settings/follows/following-list'
+ },
+ {
+ label: $localize`Followers`,
+ routerLink: '/admin/settings/follows/followers-list'
+ },
+ {
+ label: $localize`Video redundancies`,
+ routerLink: '/admin/settings/follows/video-redundancies-list'
+ }
+ ]
+ })
+ }
+
+ private buildConfigurationItems () {
+ if (this.hasRight(UserRight.MANAGE_CONFIGURATION)) {
+ this.menuEntries.push({ label: $localize`Configuration`, routerLink: '/admin/settings/config' })
+ }
+ }
+
+ private buildPluginItems () {
+ if (this.hasRight(UserRight.MANAGE_PLUGINS)) {
+ this.menuEntries.push({
+ label: $localize`Plugins/Themes`,
+ routerLink: '/admin/settings/plugins',
+ queryParams: {
+ pluginType: PluginType.PLUGIN
+ },
+ children: [
+ {
+ label: 'Installed plugins',
+ routerLink: '/admin/settings/plugins/list-installed',
+ queryParams: {
+ pluginType: PluginType.PLUGIN
+ }
+ },
+ {
+ label: 'Search plugins',
+ routerLink: '/admin/settings/plugins/search',
+ queryParams: {
+ pluginType: PluginType.PLUGIN
+ }
+ },
+ {
+ label: 'Installed themes',
+ routerLink: '/admin/settings/plugins/list-installed',
+ queryParams: {
+ pluginType: PluginType.THEME
+ }
+ },
+ {
+ label: 'Search themes',
+ routerLink: '/admin/settings/plugins/search',
+ queryParams: {
+ pluginType: PluginType.THEME
+ }
+ }
+ ]
+ })
+ }
+ }
+
+ private buildRunnerItems () {
+ if (!this.isRemoteRunnersEnabled() || !this.hasRight(UserRight.MANAGE_RUNNERS)) return
+
+ this.menuEntries.push({
+ label: $localize`Runners`,
+ routerLink: '/admin/settings/system/runners/runners-list',
+ children: [
+ {
+ label: $localize`Remote runners`,
+ routerLink: '/admin/settings/system/runners/runners-list'
+ },
+
+ {
+ label: $localize`Runner jobs`,
+ routerLink: '/admin/settings/system/runners/jobs-list'
+ },
+
+ {
+ label: $localize`Registration tokens`,
+ routerLink: '/admin/settings/system/runners/registration-tokens-list'
+ }
+ ]
+ })
+ }
+
+ private buildSystemItems () {
+ const systemItems: HorizontalMenuEntry = {
+ label: $localize`System`,
+ routerLink: '',
+ children: []
+ }
+
+ if (this.hasRight(UserRight.MANAGE_JOBS)) {
+ systemItems.children.push({
+ label: $localize`Local jobs`,
+ routerLink: '/admin/settings/system/jobs'
+ })
+ }
+
+ if (this.hasRight(UserRight.MANAGE_LOGS)) {
+ systemItems.children.push({
+ label: $localize`Logs`,
+ routerLink: '/admin/settings/system/logs'
+ })
+ }
+
+ if (this.hasRight(UserRight.MANAGE_DEBUG)) {
+ systemItems.children.push({
+ label: $localize`Debug`,
+ routerLink: '/admin/settings/system/debug'
+ })
+ }
+
+ if (systemItems.children.length === 0) return
+
+ systemItems.routerLink = systemItems.children[0].routerLink
+
+ this.menuEntries.push(systemItems)
+ }
+
+ private hasRight (right: UserRightType) {
+ return this.auth.getUser().hasRight(right)
+ }
+
+ private isRemoteRunnersEnabled () {
+ const config = this.server.getHTMLConfig()
+
+ return config.transcoding.remoteRunners.enabled ||
+ config.live.transcoding.remoteRunners.enabled ||
+ config.videoStudio.remoteRunners.enabled ||
+ config.videoTranscription.remoteRunners.enabled
+ }
+}
diff --git a/client/src/app/+admin/admin.component.html b/client/src/app/+admin/admin.component.html
deleted file mode 100644
index 64986685d..000000000
--- a/client/src/app/+admin/admin.component.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/client/src/app/+admin/admin.component.scss b/client/src/app/+admin/admin.component.scss
deleted file mode 100644
index bdc0f8ce1..000000000
--- a/client/src/app/+admin/admin.component.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-@use '_variables' as *;
-@use '_mixins' as *;
-
-my-top-menu-dropdown {
- flex-grow: 1;
-}
-
-.root {
- @include sub-menu-h1;
-}
diff --git a/client/src/app/+admin/admin.component.ts b/client/src/app/+admin/admin.component.ts
deleted file mode 100644
index d021ce52f..000000000
--- a/client/src/app/+admin/admin.component.ts
+++ /dev/null
@@ -1,240 +0,0 @@
-import { NgClass } from '@angular/common'
-import { Component, OnInit } from '@angular/core'
-import { RouterOutlet } from '@angular/router'
-import { AuthService, ScreenService, ServerService } from '@app/core'
-import { ListOverflowItem } from '@app/shared/shared-main/menu/list-overflow.component'
-import { TopMenuDropdownParam } from '@app/shared/shared-main/menu/top-menu-dropdown.component'
-import { UserRight, UserRightType } from '@peertube/peertube-models'
-import { TopMenuDropdownComponent } from '../shared/shared-main/menu/top-menu-dropdown.component'
-
-@Component({
- templateUrl: './admin.component.html',
- styleUrls: [ './admin.component.scss' ],
- standalone: true,
- imports: [ TopMenuDropdownComponent, NgClass, RouterOutlet ]
-})
-export class AdminComponent implements OnInit {
- items: ListOverflowItem[] = []
- menuEntries: TopMenuDropdownParam[] = []
-
- constructor (
- private auth: AuthService,
- private screen: ScreenService,
- private server: ServerService
- ) { }
-
- get isBroadcastMessageDisplayed () {
- return this.screen.isBroadcastMessageDisplayed
- }
-
- ngOnInit () {
- this.server.configReloaded.subscribe(() => this.buildMenu())
-
- this.buildMenu()
- }
-
- private buildMenu () {
- this.menuEntries = []
-
- this.buildOverviewItems()
- this.buildFederationItems()
- this.buildModerationItems()
- this.buildConfigurationItems()
- this.buildPluginItems()
- this.buildSystemItems()
- }
-
- private buildOverviewItems () {
- const overviewItems: TopMenuDropdownParam = {
- label: $localize`Overview`,
- children: []
- }
-
- if (this.hasRight(UserRight.MANAGE_USERS)) {
- overviewItems.children.push({
- label: $localize`Users`,
- routerLink: '/admin/users',
- iconName: 'user'
- })
- }
-
- if (this.hasRight(UserRight.SEE_ALL_VIDEOS)) {
- overviewItems.children.push({
- label: $localize`Videos`,
- routerLink: '/admin/videos',
- queryParams: {
- search: 'isLocal:true'
- },
- iconName: 'videos'
- })
- }
-
- if (this.hasRight(UserRight.SEE_ALL_COMMENTS)) {
- overviewItems.children.push({
- label: $localize`Comments`,
- routerLink: '/admin/comments',
- iconName: 'message-circle'
- })
- }
-
- if (overviewItems.children.length !== 0) {
- this.menuEntries.push(overviewItems)
- }
- }
-
- private buildFederationItems () {
- if (!this.hasRight(UserRight.MANAGE_SERVER_FOLLOW)) return
-
- this.menuEntries.push({
- label: $localize`Federation`,
- children: [
- {
- label: $localize`Following`,
- routerLink: '/admin/follows/following-list',
- iconName: 'following'
- },
- {
- label: $localize`Followers`,
- routerLink: '/admin/follows/followers-list',
- iconName: 'follower'
- },
- {
- label: $localize`Video redundancies`,
- routerLink: '/admin/follows/video-redundancies-list',
- iconName: 'videos'
- }
- ]
- })
- }
-
- private buildModerationItems () {
- const moderationItems: TopMenuDropdownParam = {
- label: $localize`Moderation`,
- children: []
- }
-
- if (this.hasRight(UserRight.MANAGE_REGISTRATIONS)) {
- moderationItems.children.push({
- label: $localize`Registrations`,
- routerLink: '/admin/moderation/registrations/list',
- iconName: 'user'
- })
- }
-
- if (this.hasRight(UserRight.MANAGE_ABUSES)) {
- moderationItems.children.push({
- label: $localize`Reports`,
- routerLink: '/admin/moderation/abuses/list',
- iconName: 'flag'
- })
- }
-
- if (this.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST)) {
- moderationItems.children.push({
- label: $localize`Video blocks`,
- routerLink: '/admin/moderation/video-blocks/list',
- iconName: 'cross'
- })
- }
-
- if (this.hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST)) {
- moderationItems.children.push({
- label: $localize`Muted accounts`,
- routerLink: '/admin/moderation/blocklist/accounts',
- iconName: 'user-x'
- })
- }
-
- if (this.hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST)) {
- moderationItems.children.push({
- label: $localize`Muted servers`,
- routerLink: '/admin/moderation/blocklist/servers',
- iconName: 'peertube-x'
- })
- }
-
- if (this.hasRight(UserRight.MANAGE_INSTANCE_WATCHED_WORDS)) {
- moderationItems.children.push({
- label: $localize`Watched words`,
- routerLink: '/admin/moderation/watched-words/list',
- iconName: 'eye-open'
- })
- }
-
- if (moderationItems.children.length !== 0) this.menuEntries.push(moderationItems)
- }
-
- private buildConfigurationItems () {
- if (this.hasRight(UserRight.MANAGE_CONFIGURATION)) {
- this.menuEntries.push({ label: $localize`Configuration`, routerLink: '/admin/config' })
- }
- }
-
- private buildPluginItems () {
- if (this.hasRight(UserRight.MANAGE_PLUGINS)) {
- this.menuEntries.push({ label: $localize`Plugins/Themes`, routerLink: '/admin/plugins' })
- }
- }
-
- private buildSystemItems () {
- const systemItems: TopMenuDropdownParam = {
- label: $localize`System`,
- children: []
- }
-
- if (this.isRemoteRunnersEnabled() && this.hasRight(UserRight.MANAGE_RUNNERS)) {
- systemItems.children.push({
- label: $localize`Remote runners`,
- iconName: 'codesandbox',
- routerLink: '/admin/system/runners/runners-list'
- })
-
- systemItems.children.push({
- label: $localize`Runner jobs`,
- iconName: 'globe',
- routerLink: '/admin/system/runners/jobs-list'
- })
- }
-
- if (this.hasRight(UserRight.MANAGE_JOBS)) {
- systemItems.children.push({
- label: $localize`Local jobs`,
- iconName: 'circle-tick',
- routerLink: '/admin/system/jobs'
- })
- }
-
- if (this.hasRight(UserRight.MANAGE_LOGS)) {
- systemItems.children.push({
- label: $localize`Logs`,
- iconName: 'playlists',
- routerLink: '/admin/system/logs'
- })
- }
-
- if (this.hasRight(UserRight.MANAGE_DEBUG)) {
- systemItems.children.push({
- label: $localize`Debug`,
- iconName: 'cog',
- routerLink: '/admin/system/debug'
- })
- }
-
- if (systemItems.children.length !== 0) {
- this.menuEntries.push(systemItems)
- }
- }
-
- private hasRight (right: UserRightType) {
- return this.auth.getUser().hasRight(right)
- }
-
- private isRemoteRunnersEnabled () {
- const config = this.server.getHTMLConfig()
-
- return config.transcoding.remoteRunners.enabled ||
- config.live.transcoding.remoteRunners.enabled ||
- config.videoStudio.remoteRunners.enabled ||
- config.videoTranscription.remoteRunners.enabled
- }
-}
diff --git a/client/src/app/+admin/config/config.routes.ts b/client/src/app/+admin/config/config.routes.ts
index 96a4f3771..072c2dd21 100644
--- a/client/src/app/+admin/config/config.routes.ts
+++ b/client/src/app/+admin/config/config.routes.ts
@@ -3,7 +3,7 @@ import { EditCustomConfigComponent } from '@app/+admin/config/edit-custom-config
import { UserRightGuard } from '@app/core'
import { UserRight } from '@peertube/peertube-models'
-export const ConfigRoutes: Routes = [
+export const configRoutes: Routes = [
{
path: 'config',
canActivate: [ UserRightGuard ],
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
index 15bd1c2e0..b5f31e5d9 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
+++ b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
@@ -4,7 +4,7 @@
APPEARANCE
- Default trending page
+ Default trending algorithm
@@ -151,7 +145,7 @@
@@ -296,7 +290,7 @@
i18n-labelText labelText="Allow import with HTTP URL (e.g. YouTube)"
>
- ⚠️ If enabled, we recommend to use a HTTP proxy to prevent private URL access from your PeerTube server
+ ⚠️ If enabled, we recommend to use a HTTP proxy to prevent private URL access from your PeerTube server
@@ -393,7 +387,7 @@
>
- Use remote runners to process transcription tasks.
+ Use remote runners to process transcription tasks.
Remote runners has to register on your instance first.
@@ -472,7 +466,7 @@
⚠️ This functionality depends heavily on the moderation of instances followed by the search index you select.
- You should only use moderated search indexes in production, or
host your own .
+ You should only use moderated search indexes in production, or
host your own .
@@ -595,7 +589,7 @@
@@ -646,7 +640,7 @@
⚠️ This functionality requires a lot of attention and extra moderation.
- See the documentation for more information about the expected URL
+ See the documentation for more information about the expected URL
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts
index 6b136742f..4fe9c9ccb 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts
+++ b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts
@@ -2,7 +2,7 @@ import { NgClass, NgFor, NgIf } from '@angular/common'
import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'
import { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'
import { RouterLink } from '@angular/router'
-import { MenuService, ThemeService } from '@app/core'
+import { ThemeService } from '@app/core'
import { AlertComponent } from '@app/shared/shared-main/common/alert.component'
import { HTMLServerConfig } from '@peertube/peertube-models'
import { pairwise } from 'rxjs/operators'
@@ -12,7 +12,6 @@ import { PeertubeCheckboxComponent } from '../../../shared/shared-forms/peertube
import { SelectCustomValueComponent } from '../../../shared/shared-forms/select/select-custom-value.component'
import { SelectOptionsComponent } from '../../../shared/shared-forms/select/select-options.component'
import { HelpComponent } from '../../../shared/shared-main/buttons/help.component'
-import { PeerTubeTemplateDirective } from '../../../shared/shared-main/common/peertube-template.directive'
import { UserRealQuotaInfoComponent } from '../../shared/user-real-quota-info.component'
import { ConfigService } from '../shared/config.service'
@@ -34,7 +33,6 @@ import { ConfigService } from '../shared/config.service'
NgClass,
UserRealQuotaInfoComponent,
SelectOptionsComponent,
- PeerTubeTemplateDirective,
AlertComponent
]
})
@@ -53,7 +51,6 @@ export class EditBasicConfigurationComponent implements OnInit, OnChanges {
constructor (
private configService: ConfigService,
- private menuService: MenuService,
private themeService: ThemeService
) {}
@@ -62,7 +59,11 @@ export class EditBasicConfigurationComponent implements OnInit, OnChanges {
this.checkSignupField()
this.checkImportSyncField()
- this.availableThemes = this.themeService.buildAvailableThemes()
+ this.availableThemes = [
+ this.themeService.getDefaultThemeItem(),
+
+ ...this.themeService.buildAvailableThemes()
+ ]
this.exportExpirationOptions = [
{ id: 1000 * 3600 * 24, label: $localize`1 day` },
@@ -156,17 +157,22 @@ export class EditBasicConfigurationComponent implements OnInit, OnChanges {
}
buildLandingPageOptions () {
- this.defaultLandingPageOptions = this.menuService.buildCommonLinks(this.serverConfig)
- .links
- .map(o => ({
- id: o.path,
- label: o.label,
- description: o.path
- }))
- }
+ let links: { label: string, path: string }[] = []
- getDefaultThemeLabel () {
- return this.themeService.getDefaultThemeLabel()
+ if (this.serverConfig.homepage.enabled) {
+ links.push({ label: $localize`Home`, path: '/home' })
+ }
+
+ links = links.concat([
+ { label: $localize`Discover`, path: '/videos/overview' },
+ { label: $localize`Browse videos`, path: '/videos/browse' }
+ ])
+
+ this.defaultLandingPageOptions = links.map(o => ({
+ id: o.path,
+ label: o.label,
+ description: o.path
+ }))
}
private checkImportSyncField () {
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html
index f2e704ba2..294299e20 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html
+++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html
@@ -87,6 +87,7 @@
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss
index 01fb2c535..f2884ad29 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss
+++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss
@@ -1,5 +1,6 @@
@use '_variables' as *;
@use '_mixins' as *;
+@use '_form-mixins' as *;
$form-base-input-width: 340px;
$form-max-width: 500px;
@@ -33,8 +34,8 @@ input[type=number] {
input[type=number] + span {
position: absolute;
- top: 0.2em;
- right: 2.5rem;
+ top: 0.4em;
+ right: 3em;
@media screen and (max-width: $mobile-view) {
display: none;
@@ -42,13 +43,13 @@ input[type=number] {
}
input[disabled] {
- background-color: #f9f9f9;
+ opacity: 0.8;
pointer-events: none;
}
}
input[type=checkbox] {
- @include peertube-checkbox(1px);
+ @include peertube-checkbox;
}
.peertube-select-container {
@@ -65,8 +66,6 @@ my-select-custom-value {
input[type=submit] {
display: flex;
- @include peertube-button;
- @include orange-button;
@include margin-left(auto);
+ .form-error {
@@ -131,18 +130,6 @@ ngb-tabset:not(.previews) ::ng-deep {
height: 0;
width: 100%;
justify-content: right;
-
- .callout-link {
- position: relative;
- right: 3.3em;
- top: .3em;
- font-size: 90%;
- color: pvar(--mainColor);
- background-color: pvar(--mainBackgroundColor);
- padding: 0 .3em;
-
- @include peertube-button-link;
- }
}
my-actor-banner-edit {
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-instance-information.component.html b/client/src/app/+admin/config/edit-custom-config/edit-instance-information.component.html
index 71cb05491..4b12ac768 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-instance-information.component.html
+++ b/client/src/app/+admin/config/edit-custom-config/edit-instance-information.component.html
@@ -106,7 +106,7 @@
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.html b/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.html
index b55a3d9b0..a60372dd1 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.html
+++ b/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.html
@@ -166,7 +166,7 @@
>
- Use remote runners to process live transcoding.
+ Use remote runners to process live transcoding.
Remote runners has to register on your instance first.
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html b/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html
index 5b1efceff..3c804f0cc 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html
+++ b/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html
@@ -4,7 +4,7 @@
-
+
Estimating a server's capacity to transcode and stream videos isn't easy and we can't tune PeerTube automatically.
@@ -12,7 +12,7 @@
- However, you may want to read our guidelines before tweaking the following values.
+ However, you may want to read our guidelines before tweaking the following values.
@@ -192,7 +192,7 @@
>
- Use remote runners to process VOD transcoding.
+ Use remote runners to process VOD transcoding.
Remote runners has to register on your instance first.
@@ -278,7 +278,7 @@
>
- Use remote runners to process studio transcoding tasks.
+ Use remote runners to process studio transcoding tasks.
Remote runners has to register on your instance first.
diff --git a/client/src/app/+admin/follows/followers-list/followers-list.component.html b/client/src/app/+admin/follows/followers-list/followers-list.component.html
index 8bb1871dd..c665dce36 100644
--- a/client/src/app/+admin/follows/followers-list/followers-list.component.html
+++ b/client/src/app/+admin/follows/followers-list/followers-list.component.html
@@ -1,10 +1,3 @@
-
-
-
-
Followers of your instance
-
-
-
0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [first]="pagination.start"
[rowsPerPageOptions]="rowsPerPageOptions" [sortField]="sort.field" [sortOrder]="sort.order"
@@ -16,7 +9,7 @@
diff --git a/client/src/app/+admin/follows/following-list/following-list.component.html b/client/src/app/+admin/follows/following-list/following-list.component.html
index ab13f6449..fbe173de9 100644
--- a/client/src/app/+admin/follows/following-list/following-list.component.html
+++ b/client/src/app/+admin/follows/following-list/following-list.component.html
@@ -1,10 +1,3 @@
-
-
-
-
Subscriptions of your instance
-
-
-
0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [first]="pagination.start"
[rowsPerPageOptions]="rowsPerPageOptions" [sortField]="sort.field" [sortOrder]="sort.order"
@@ -16,7 +9,7 @@
@@ -27,7 +20,7 @@
-
+
diff --git a/client/src/app/+admin/follows/following-list/following-list.component.scss b/client/src/app/+admin/follows/following-list/following-list.component.scss
index 3f184e2b5..89bde6b87 100644
--- a/client/src/app/+admin/follows/following-list/following-list.component.scss
+++ b/client/src/app/+admin/follows/following-list/following-list.component.scss
@@ -2,19 +2,7 @@
@use '_mixins' as *;
a {
- display: inline-block;
-
- @include disable-default-a-behaviour;
-
- &,
- &:hover {
- color: pvar(--mainForegroundColor);
- }
-
- span {
- font-size: 80%;
- color: pvar(--inputPlaceholderColor);
- }
+ color: pvar(--fg);
}
my-delete-button {
diff --git a/client/src/app/+admin/follows/follows.routes.ts b/client/src/app/+admin/follows/follows.routes.ts
index e187f83ea..567941230 100644
--- a/client/src/app/+admin/follows/follows.routes.ts
+++ b/client/src/app/+admin/follows/follows.routes.ts
@@ -5,7 +5,7 @@ import { UserRight } from '@peertube/peertube-models'
import { FollowersListComponent } from './followers-list'
import { FollowingListComponent } from './following-list/following-list.component'
-export const FollowsRoutes: Routes = [
+export const followsRoutes: Routes = [
{
path: 'follows',
canActivate: [ UserRightGuard ],
diff --git a/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.html b/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.html
index 7ded2a6f9..d0fde3d30 100644
--- a/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.html
+++ b/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.html
@@ -1,10 +1,3 @@
-
-
-
-
Videos redundancies
-
-
-