Browse Source

A lot of small improvements

pull/1/head
Sebastian 9 years ago
parent
commit
86a2ff6064
  1. 3
      src/Squidex/app/app.routes.ts
  2. 4
      src/Squidex/app/features/content/pages/content-page.component.html
  3. 4
      src/Squidex/app/features/dashboard/pages/dashboard-page.component.html
  4. 8
      src/Squidex/app/features/media/declarations.ts
  5. 9
      src/Squidex/app/features/media/index.ts
  6. 34
      src/Squidex/app/features/media/module.ts
  7. 14
      src/Squidex/app/features/media/pages/media-page.component.html
  8. 7
      src/Squidex/app/features/media/pages/media-page.component.scss
  9. 27
      src/Squidex/app/features/media/pages/media-page.component.ts
  10. 17
      src/Squidex/app/features/schemas/module.ts
  11. 85
      src/Squidex/app/features/schemas/pages/schema/schema-page.component.html
  12. 4
      src/Squidex/app/features/schemas/pages/schema/schema-page.component.scss
  13. 32
      src/Squidex/app/features/schemas/pages/schemas/schemas-page.component.html
  14. 13
      src/Squidex/app/shared/components/history.component.ts
  15. 5
      src/Squidex/app/shell/pages/app/left-menu.component.html

3
src/Squidex/app/app.routes.ts

@ -46,9 +46,6 @@ export const routes: Routes = [
}, {
path: 'content',
loadChildren: './features/content/module#SqxFeatureContentModule'
}, {
path: 'media',
loadChildren: './features/media/module#SqxFeatureMediaModule'
}, {
path: 'schemas',
loadChildren: './features/schemas/module#SqxFeatureSchemasModule'

4
src/Squidex/app/features/content/pages/content-page.component.html

@ -9,6 +9,8 @@
</a>
</div>
<div class="panel-content">
<div class="panel-main">
<div class="panel-content">
</div>
</div>
</div>

4
src/Squidex/app/features/dashboard/pages/dashboard-page.component.html

@ -5,6 +5,8 @@
<h3 class="panel-title">Dashboard</h3>
</div>
<div class="panel-content">
<div class="panel-main">
<div class="panel-content">
</div>
</div>
</div>

8
src/Squidex/app/features/media/declarations.ts

@ -1,8 +0,0 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
export * from './pages/media-page.component';

9
src/Squidex/app/features/media/index.ts

@ -1,9 +0,0 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
export * from './declarations';
export * from './module';

34
src/Squidex/app/features/media/module.ts

@ -1,34 +0,0 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { SqxFrameworkModule, SqxSharedModule } from 'shared';
import {
MediaPageComponent
} from './declarations';
const routes: Routes = [
{
path: '',
component: MediaPageComponent
}
];
@NgModule({
imports: [
SqxFrameworkModule,
SqxSharedModule,
RouterModule.forChild(routes)
],
declarations: [
MediaPageComponent
]
})
export class SqxFeatureMediaModule { }

14
src/Squidex/app/features/media/pages/media-page.component.html

@ -1,14 +0,0 @@
<sqx-title message="{app} | Media" parameter1="app" value1="{{appName() | async}}"></sqx-title>
<div class="panel panel-light">
<div class="panel-header">
<h3 class="panel-title">Media</h3>
<a class="panel-close" dashboardLink>
<i class="icon-close"></i>
</a>
</div>
<div class="panel-content">
</div>
</div>

7
src/Squidex/app/features/media/pages/media-page.component.scss

@ -1,7 +0,0 @@
@import '_vars';
@import '_mixins';
.panel {
min-width: 600px;
max-width: 600px;
}

27
src/Squidex/app/features/media/pages/media-page.component.ts

@ -1,27 +0,0 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { Component } from '@angular/core';
import {
AppComponentBase,
AppsStoreService,
NotificationService,
UsersProviderService
} from 'shared';
@Component({
selector: 'sqx-media-page',
styleUrls: ['./media-page.component.scss'],
templateUrl: './media-page.component.html'
})
export class MediaPageComponent extends AppComponentBase {
constructor(apps: AppsStoreService, notifications: NotificationService, users: UsersProviderService) {
super(apps, notifications, users);
}
}

17
src/Squidex/app/features/schemas/module.ts

@ -8,7 +8,11 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { SqxFrameworkModule, SqxSharedModule } from 'shared';
import {
HistoryComponent,
SqxFrameworkModule,
SqxSharedModule
} from 'shared';
import {
FieldComponent,
@ -31,7 +35,16 @@ const routes: Routes = [
},
{
path: ':schemaName',
component: SchemaPageComponent
component: SchemaPageComponent,
children: [
{
path: 'history',
component: HistoryComponent,
data: {
channel: 'schemas.{schemaName}'
}
}
]
}]
}
];

85
src/Squidex/app/features/schemas/pages/schema/schema-page.component.html

@ -11,44 +11,57 @@
</div>
</div>
<div class="panel-content">
<div *ngFor="let field of schemaFields">
<sqx-field [field]="field"
(disabled)="disableField(field)"
(deleted)="deleteField(field)"
(enabled)="enableField(field)"
(hidden)="hideField(field)"
(saved)="saveField(field, $event)"
(shown)="showField(field)"></sqx-field>
</div>
<div class="table-items-footer">
<form class="form-inline" [formGroup]="addFieldForm" (ngSubmit)="addField()">
<div class="form-group">
<select class="form-control" formControlName="type">
<option *ngFor="let type of fieldTypes">{{type}}</option>
</select>
</div>
<div class="form-group">
<div class="errors-box" *ngIf="addFieldForm.controls.name.invalid && addFieldForm.controls.name.dirty">
<div class="errors">
<span *ngIf="addFieldForm.controls.name.hasError('required')">
Name is required.
</span>
<span *ngIf="addFieldForm.controls.name.hasError('maxlength')">
Name can not have more than 40 characters.
</span>
<span *ngIf="addFieldForm.controls.name.hasError('pattern')">
Name can contain lower case letters (a-z), numbers and dashes (not at the end).
</span>
</div>
<div class="panel-main">
<div class="panel-content">
<div *ngFor="let field of schemaFields">
<sqx-field [field]="field"
(disabled)="disableField(field)"
(deleted)="deleteField(field)"
(enabled)="enableField(field)"
(hidden)="hideField(field)"
(saved)="saveField(field, $event)"
(shown)="showField(field)"></sqx-field>
</div>
<div class="table-items-footer">
<form class="form-inline" [formGroup]="addFieldForm" (ngSubmit)="addField()">
<div class="form-group">
<select class="form-control" formControlName="type">
<option *ngFor="let type of fieldTypes">{{type}}</option>
</select>
</div>
<div class="form-group">
<div class="errors-box" *ngIf="addFieldForm.controls.name.invalid && addFieldForm.controls.name.dirty">
<div class="errors">
<span *ngIf="addFieldForm.controls.name.hasError('required')">
Name is required.
</span>
<span *ngIf="addFieldForm.controls.name.hasError('maxlength')">
Name can not have more than 40 characters.
</span>
<span *ngIf="addFieldForm.controls.name.hasError('pattern')">
Name can contain lower case letters (a-z), numbers and dashes (not at the end).
</span>
</div>
</div>
<input type="text" class="form-control" formControlName="name" maxlength="40" placeholder="Enter field name" />
</div>
<input type="text" class="form-control" formControlName="name" maxlength="40" placeholder="Enter field name" />
</div>
<button type="submit" class="btn btn-success" [disabled]="addFieldForm.invalid">Add Field</button>
</form>
<button type="submit" class="btn btn-success" [disabled]="addFieldForm.invalid">Add Field</button>
</form>
</div>
</div>
<div class="panel-sidebar">
<div class="nav nav-pills nav-stacked nav-light">
<li class="nav-item">
<a class="nav-link" routerLink="history" routerLinkActive="active">
<i class="icon-time"></i>
</a>
</li>
</div>
</div>
</div>
</div>
</div>
<router-outlet></router-outlet>

4
src/Squidex/app/features/schemas/pages/schema/schema-page.component.scss

@ -4,4 +4,8 @@
.panel {
min-width: 760px;
max-width: 700px;
}
.panel-content {
overflow-y: scroll;
}

32
src/Squidex/app/features/schemas/pages/schemas/schemas-page.component.html

@ -22,21 +22,23 @@
</div>
</div>
<div class="panel-content">
<div class="schemas">
<div class="schema" *ngFor="let schema of schemasFiltered | async" [routerLink]="[schema.name]" routerLinkActive="active">
<div class="schema-inner">
<div class="row">
<div class="col-xs-4">
<span class="schema-name">{{schema.name}}</span>
</div>
<div class="col-xs-4">
<span class="schema-user">
<i class="icon-person"></i> <span class="schema-user-text">{{userName(schema.lastModifiedBy, true) | async}}</span>
</span>
</div>
<div class="col-xs-4 schema-col-right">
<span class="schema-modified">{{schema.lastModified.toLocal() | fromNow}}</span>
<div class="panel-main">
<div class="panel-content">
<div class="schemas">
<div class="schema" *ngFor="let schema of schemasFiltered | async" [routerLink]="[schema.name]" routerLinkActive="active">
<div class="schema-inner">
<div class="row">
<div class="col-xs-4">
<span class="schema-name">{{schema.name}}</span>
</div>
<div class="col-xs-4">
<span class="schema-user">
<i class="icon-person"></i> <span class="schema-user-text">{{userName(schema.lastModifiedBy, true) | async}}</span>
</span>
</div>
<div class="col-xs-4 schema-col-right">
<span class="schema-modified">{{schema.lastModified.toLocal() | fromNow}}</span>
</div>
</div>
</div>
</div>

13
src/Squidex/app/shared/components/history.component.ts

@ -26,7 +26,18 @@ const REPLACEMENT_TEMP = '$TEMP$';
})
export class HistoryComponent extends AppComponentBase {
public get channel(): string {
return this.route.snapshot.data['channel'];
let result = this.route.snapshot.data['channel'];
let params = this.route.parent.snapshot.params;
for (let key in params) {
if (params.hasOwnProperty(key)) {
const value = params[key];
result = result.replace('{' + key + '}', value);
}
}
return result;
}
public events =

5
src/Squidex/app/shell/pages/app/left-menu.component.html

@ -10,11 +10,6 @@
<i class="nav-icon icon-content"></i> <span class="nav-text">Content</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="media" routerLinkActive="active">
<i class="nav-icon icon-media"></i> <span class="nav-text">Media</span>
</a>
</li>
<li class="nav-item" *ngIf="permission === 'Owner'">
<a class="nav-link" routerLink="settings" routerLinkActive="active">
<i class="nav-icon icon-settings2"></i> <span class="nav-text">Settings</span>

Loading…
Cancel
Save