diff --git a/README.md b/README.md
index 3ac64b85d..00c3ada27 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,9 @@
Squidex is an open source headless CMS and content management hub. In contrast to a traditional CMS Squidex provides a rich API with OData filter and Swagger definitions. It is up to you to build your UI on top of it. It can be website, a native app or just another server. We build it with ASP.NET Core and CQRS and is tested for Windows and Linux on modern browsers.
-[](https://gitter.im/squidex-cms/Lobby) [](http://build.squidex.io/Squidex/squidex)
+[](https://gitter.im/squidex-cms/Lobby)
+[](https://squidex.slack.com/signup)
+[](http://build.squidex.io/Squidex/squidex)
Read the docs at [https://docs.squidex.io/](https://docs.squidex.io/) (work in progress) or just check out the code and play around.
diff --git a/src/Squidex/app/features/apps/declarations.ts b/src/Squidex/app/features/apps/declarations.ts
index a28600e77..09db639a2 100644
--- a/src/Squidex/app/features/apps/declarations.ts
+++ b/src/Squidex/app/features/apps/declarations.ts
@@ -5,4 +5,5 @@
* Copyright (c) Sebastian Stehle. All rights reserved
*/
-export * from './pages/apps-page.component';
\ No newline at end of file
+export * from './pages/apps-page.component';
+export * from './pages/onboarding-dialog.component';
\ No newline at end of file
diff --git a/src/Squidex/app/features/apps/module.ts b/src/Squidex/app/features/apps/module.ts
index 0fed8a78e..72fba97a3 100644
--- a/src/Squidex/app/features/apps/module.ts
+++ b/src/Squidex/app/features/apps/module.ts
@@ -11,7 +11,8 @@ import { RouterModule, Routes } from '@angular/router';
import { SqxFrameworkModule, SqxSharedModule } from 'shared';
import {
- AppsPageComponent
+ AppsPageComponent,
+ OnboardingDialogComponent
} from './declarations';
const routes: Routes = [
@@ -28,7 +29,8 @@ const routes: Routes = [
RouterModule.forChild(routes)
],
declarations: [
- AppsPageComponent
+ AppsPageComponent,
+ OnboardingDialogComponent
]
})
export class SqxFeatureAppsModule { }
\ No newline at end of file
diff --git a/src/Squidex/app/features/apps/pages/apps-page.component.html b/src/Squidex/app/features/apps/pages/apps-page.component.html
index 92a9c4efc..e485a137e 100644
--- a/src/Squidex/app/features/apps/pages/apps-page.component.html
+++ b/src/Squidex/app/features/apps/pages/apps-page.component.html
@@ -35,4 +35,6 @@
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/src/Squidex/app/features/apps/pages/apps-page.component.ts b/src/Squidex/app/features/apps/pages/apps-page.component.ts
index 4de9a5afc..741dc448f 100644
--- a/src/Squidex/app/features/apps/pages/apps-page.component.ts
+++ b/src/Squidex/app/features/apps/pages/apps-page.component.ts
@@ -5,12 +5,14 @@
* Copyright (c) Sebastian Stehle. All rights reserved
*/
-import { Component, OnInit } from '@angular/core';
+import { Component, OnDestroy, OnInit } from '@angular/core';
+import { Subscription } from 'rxjs';
import {
AppsStoreService,
fadeAnimation,
- ModalView
+ ModalView,
+ OnboardingService
} from 'shared';
@Component({
@@ -21,17 +23,34 @@ import {
fadeAnimation
]
})
-export class AppsPageComponent implements OnInit {
- public addAppDialog = new ModalView();
+export class AppsPageComponent implements OnDestroy, OnInit {
+ private onboardingAppsSubscription: Subscription;
+ public addAppDialog = new ModalView();
public apps = this.appsStore.apps;
+ public onboardingModal = new ModalView();
+
constructor(
- private readonly appsStore: AppsStoreService
+ private readonly appsStore: AppsStoreService,
+ private readonly onboardingService: OnboardingService
) {
}
+ public ngOnDestroy() {
+ this.onboardingAppsSubscription.unsubscribe();
+ }
+
public ngOnInit() {
this.appsStore.selectApp(null);
+
+ this.onboardingAppsSubscription =
+ this.appsStore.apps
+ .subscribe(apps => {
+ if (apps.length === 0 && this.onboardingService.shouldShow('dialog')) {
+ this.onboardingService.disable('dialog');
+ this.onboardingModal.show();
+ }
+ });
}
}
\ No newline at end of file
diff --git a/src/Squidex/app/features/apps/pages/onboarding-dialog.component.html b/src/Squidex/app/features/apps/pages/onboarding-dialog.component.html
new file mode 100644
index 000000000..9e3d5ed46
--- /dev/null
+++ b/src/Squidex/app/features/apps/pages/onboarding-dialog.component.html
@@ -0,0 +1,154 @@
+
+ You can start managing and distributing your content right away, but we we'd like to walk you through some basics first...
+
+
+ How's that?
+
+
+
+
+
+
+
Apps
+
+
+
+
+
+
+ An App is the repository for your project, e.g. (blog, webshop or mobile app). You can assign contributors to your app to
+ work together.
+
+
+ You can create an unlimited number of Apps in Squidex to manage multiple projects at the same time.
+
+
+
+
+
+
+
+
+
+
+
+
+
Schemas
+
+
+
+
+
+
+ Schemas define the structure of your content, the fields and the data types of a content item.
+
+
+ Beforew you can add content to your schema, make sure to hit the 'Publish' button at the top to make the schema availabel
+ to your content editors.
+
+
+
+
+
+
+
+
+
+
+
+
+
Contents
+
+
+
+
+
+
+ Content is the actual data in your app which is grouped by the schema.
+
+
+ Select a published schema first, then add content for this schema.
+
+
+
+
+
+
+
+
+
+
+
+
+
Assets
+
+
+
+
+
+
+
+ The assets contains all files that can also be linked to your content. For example images, videos or documents.
+
+
+ You can upload the assets here and use them later or also upload them directly when you create a new content item with an
+ asset field.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Awesome, now you know the basics!
+
+
+ But that's not all of the support we can provide. You can go to https://docs.squidex.io/ to read more.
+