diff --git a/src/Squidex/Startup.cs b/src/Squidex/Startup.cs index fed70d24d..41396cb36 100644 --- a/src/Squidex/Startup.cs +++ b/src/Squidex/Startup.cs @@ -26,6 +26,7 @@ using Squidex.Config.Swagger; using Squidex.Config.Web; using Squidex.Pipeline; using Squidex.Store.MongoDb; +// ReSharper disable InvertIf // ReSharper disable ConvertClosureToMethodGroup // ReSharper disable AccessToModifiedClosure @@ -179,14 +180,19 @@ namespace Squidex app.UseStaticFiles(new StaticFileOptions { - OnPrepareResponse = (context) => + OnPrepareResponse = context => { - var headers = context.Context.Response.GetTypedHeaders(); + var response = context.Context.Response; - headers.CacheControl = new CacheControlHeaderValue + if (!string.Equals(response.ContentType, "text/html", StringComparison.OrdinalIgnoreCase)) { - MaxAge = TimeSpan.FromDays(60) - }; + var headers = response.GetTypedHeaders(); + + headers.CacheControl = new CacheControlHeaderValue + { + MaxAge = TimeSpan.FromDays(60) + }; + } } }); } diff --git a/src/Squidex/app-config/webpack.config.js b/src/Squidex/app-config/webpack.config.js index bcd85188c..dd564bcd0 100644 --- a/src/Squidex/app-config/webpack.config.js +++ b/src/Squidex/app-config/webpack.config.js @@ -45,7 +45,7 @@ module.exports = { loaders: [ { test: /\.ts$/, - loaders: ['awesome-typescript', helpers.root('app-config', 'auto-loader') + '?[file].html=template&[file].scss=styles', 'tslint'] + loaders: ['awesome-typescript', 'angular2-router-loader', helpers.root('app-config', 'auto-loader') + '?[file].html=template&[file].scss=styles', 'tslint'] }, { test: /\.html$/, loader: 'html' diff --git a/src/Squidex/app/app.routes.ts b/src/Squidex/app/app.routes.ts index fd430eed3..0df5f7112 100644 --- a/src/Squidex/app/app.routes.ts +++ b/src/Squidex/app/app.routes.ts @@ -23,11 +23,6 @@ import { } from './shared'; import { SqxFeatureAppsModule } from './features/apps'; -import { SqxFeatureContentModule } from './features/content'; -import { SqxFeatureDashboardModule } from './features/dashboard'; -import { SqxFeatureMediaModule } from './features/media'; -import { SqxFeatureSchemasModule } from './features/schemas'; -import { SqxFeatureSettingsModule } from './features/settings'; export const routes: Ng2Router.Routes = [ { @@ -49,19 +44,19 @@ export const routes: Ng2Router.Routes = [ children: [ { path: '', - loadChildren: () => SqxFeatureDashboardModule + loadChildren: './features/dashboard/module#SqxFeatureDashboardModule' }, { path: 'content', - loadChildren: () => SqxFeatureContentModule + loadChildren: './features/content/module#SqxFeatureContentModule' }, { path: 'media', - loadChildren: () => SqxFeatureMediaModule + loadChildren: './features/media/module#SqxFeatureMediaModule' }, { path: 'schemas', - loadChildren: () => SqxFeatureSchemasModule + loadChildren: './features/schemas/module#SqxFeatureSchemaModule' }, { path: 'settings', - loadChildren: () => SqxFeatureSettingsModule + loadChildren: './features/settings/module#SqxFeatureSettingsModule' } ] } diff --git a/src/Squidex/app/features/settings/pages/clients/clients-page.component.html b/src/Squidex/app/features/settings/pages/clients/clients-page.component.html index 2b372b032..2e041c7d8 100644 --- a/src/Squidex/app/features/settings/pages/clients/clients-page.component.html +++ b/src/Squidex/app/features/settings/pages/clients/clients-page.component.html @@ -9,37 +9,39 @@ -
-
- No client created yet. -
+
+
+
+ No client created yet. +
-
- -
+
+ +
-
\ No newline at end of file diff --git a/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.html b/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.html index a2a6aee0c..726fe9eab 100644 --- a/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.html +++ b/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.html @@ -9,57 +9,59 @@
-
- - - - - - - - +
+
+
+ + + + + + + - - - -
- -
\ No newline at end of file diff --git a/src/Squidex/app/features/settings/pages/languages/languages-page.component.html b/src/Squidex/app/features/settings/pages/languages/languages-page.component.html index b2eac8ca6..0aa35f9df 100644 --- a/src/Squidex/app/features/settings/pages/languages/languages-page.component.html +++ b/src/Squidex/app/features/settings/pages/languages/languages-page.component.html @@ -9,68 +9,79 @@ -
- - - - - - - +
+
+
+ + + + + + - - - - - - - - - - - -
- Code - - Name - - Options -
+ + + + + + - +
+
\ No newline at end of file diff --git a/src/Squidex/app/features/settings/settings-area.component.html b/src/Squidex/app/features/settings/settings-area.component.html index b616ca77c..e0c3bbd24 100644 --- a/src/Squidex/app/features/settings/settings-area.component.html +++ b/src/Squidex/app/features/settings/settings-area.component.html @@ -7,24 +7,26 @@ -
- +
+
diff --git a/src/Squidex/app/shared/services/auth.service.ts b/src/Squidex/app/shared/services/auth.service.ts index 720a7738b..f9b69202e 100644 --- a/src/Squidex/app/shared/services/auth.service.ts +++ b/src/Squidex/app/shared/services/auth.service.ts @@ -188,7 +188,7 @@ export class AuthService { private checkResponse(response: Observable) { return response.catch((error: Ng2Http.Response) => { - if (error.status === 401) { + if (error.status === 401 || error.status === 404) { this.loginRedirect(); } else if (error.status === 403) { this.router.navigate(['/404']); diff --git a/src/Squidex/app/theme/_bootstrap.scss b/src/Squidex/app/theme/_bootstrap.scss index a794702a9..7c1c7fcf0 100644 --- a/src/Squidex/app/theme/_bootstrap.scss +++ b/src/Squidex/app/theme/_bootstrap.scss @@ -255,8 +255,7 @@ &.nav-pills { .nav-link { - &, - &.active { + & { color: $color-dark-foreground; } @@ -271,6 +270,7 @@ @include border-radius(0); background: $color-dark-selected; pointer-events: none; + color: lighten($color-dark-foreground, 30%); } &:hover { @@ -279,4 +279,16 @@ } } } +} + +.nav-light { + &.nav-pills { + .nav-link { + &.active { + & { + @include border-radius(0); + } + } + } + } } \ No newline at end of file diff --git a/src/Squidex/app/theme/_panels.scss b/src/Squidex/app/theme/_panels.scss index 4704d7d1e..4c59be0bd 100644 --- a/src/Squidex/app/theme/_panels.scss +++ b/src/Squidex/app/theme/_panels.scss @@ -1,8 +1,9 @@ @import '_mixins'; @import '_vars'; -$panel-padding: 15px; -$panel-header: 60px; +$panel-padding: 20px; +$panel-header: 70px; +$panel-sidebar: 60px; .panel-container { @include absolute($size-navbar-height, 0, 0, $size-sidebar-width); @@ -17,13 +18,19 @@ $panel-header: 60px; flex-direction: column; } - &-content, - &-header { - padding: 15px; + &-header, + &-content { + padding: $panel-padding; } + &-main, &-content { - overflow-y: auto; + @include flex-grow(1); + } + + &-main { + @include flex-box; + flex-direction: row; } &-title { @@ -32,11 +39,38 @@ $panel-header: 60px; } &-header { - height: $panel-header; + min-height: $panel-header; + max-height: $panel-header; position: relative; padding-right: 60px; } + &-content { + & { + overflow-y: auto; + } + + & .nav-stacked { + margin-left: -$panel-padding; + margin-right: -$panel-padding; + } + + & .nav-link { + padding-left: $panel-padding; + } + } + + &-sidebar { + & { + min-width: $panel-sidebar; + max-width: $panel-sidebar; + } + + & .nav-link { + text-align: center; + } + } + &-close { & { @include absolute($panel-padding, $panel-padding, auto, auto); @@ -77,12 +111,21 @@ $panel-header: 60px; .panel-header { background: $color-card-footer; - border-bottom: 1px solid $color-border; + } + + .panel-content { + border-top: 1px solid $color-border; + } + + .panel-sidebar { + background: $color-card-footer; + border-left: 1px solid $color-border; + color: lighten($color-dark-foreground, 20%); } .panel-close { & { - color: $color-dark-foreground; + color: lighten($color-dark-foreground, 20%); } &:hover { @@ -90,11 +133,6 @@ $panel-header: 60px; } } } - - & .nav-stacked { - margin-left: -$panel-padding; - margin-right: -$panel-padding; - } } .panel-menu { diff --git a/src/Squidex/package.json b/src/Squidex/package.json index 7e02e0e39..e2327d4fc 100644 --- a/src/Squidex/package.json +++ b/src/Squidex/package.json @@ -39,6 +39,7 @@ "@types/jasmine": "^2.5.38", "@types/mousetrap": "^1.5.32", "@types/node": "^6.0.51", + "angular2-router-loader": "^0.3.4", "awesome-typescript-loader": "^2.2.4", "cpx": "^1.5.0", "css-loader": "^0.26.0",