diff --git a/docs/en/framework/ui/maui/index.md b/docs/en/framework/ui/maui/index.md index 28f74aa6a3..94d9357fed 100644 --- a/docs/en/framework/ui/maui/index.md +++ b/docs/en/framework/ui/maui/index.md @@ -13,6 +13,8 @@ ABP Commercial platform provides a basic [MAUI](https://docs.microsoft.com/en-us Run the backend application described in the [getting started document](../../../get-started/index.md). +## Run the Mobile Application + Open the `appsettings.json` in the `MAUI` project: {{ if Tiered == "Yes" }} @@ -25,6 +27,12 @@ Open the `appsettings.json` in the `MAUI` project: {{ end }} +After ensuring the backend application is running and the `appsettings.json` is properly configured in the mobile application, you can proceed to run the mobile application. You can run the application either by using the `dotnet build` command (e.g. `dotnet build -t:Run -f net9.0-android` for Android or `dotnet build -t:Run -f net9.0-ios` for iOS) or by running it through Visual Studio or any other IDE that supports MAUI. + +> For more information about running the mobile application, please refer to the [Microsoft's documentation](https://learn.microsoft.com/en-us/dotnet/maui/?view=net-maui-9.0). + +You can examine the [Users Page](#users-page) or any other pre-defined page to see how to use CSharp Client Proxy to request backend API and consume the backend API in the same way in your application. Also, if you encounter any errors on specific platforms, you can refer to the following sections for each platform to find common issues and their solutions. + ### Android If you get the following error when connecting to the emulator or a physical phone, you need to set up port mapping. @@ -65,10 +73,11 @@ If you run the MAUI on a Mac agent, the remote iOS Simulator can't access the ba ## User Interface The MAUI template consists of four pages: -* **Homepage**: This is the welcome page of the application. -* **Users**: Management page for your application users. You can search, add, update, or delete users of your application. -* **Tenants**: Management page for your tenants. -* **Settings**: Management page for your application settings. On this page, you can change **the current language**, **the profile picture**, **the current password**, or/and **the current theme**. + +- **Homepage**: This is the welcome page of the application. +- **Users**: Management page for your application users. You can search, add, update, or delete users of your application. +- **Tenants**: Management page for your tenants. +- **Settings**: Management page for your application settings. On this page, you can change **the current language**, **the profile picture**, **the current password**, or/and **the current theme**. ### Homepage @@ -86,12 +95,6 @@ The MAUI template consists of four pages: ![Maui Settings Page](../../../images/maui-settings-page.png) -## Run the Mobile Application - -You can run the MAUI application through Visual Studio or any other IDE that supports MAUI. After the application is up and running, you can continue to develop your application based on this startup template. - -You can examine the [Users Page](#users-page) or any other pre-defined page to see how to use CSharp Client Proxy to request backend API and consume the backend API in the same way in your application. - ### Advanced #### Validation diff --git a/docs/en/get-started/images/abp-studio-new-solution-dialog-solution-structure-tiered.png b/docs/en/get-started/images/abp-studio-new-solution-dialog-solution-structure-tiered.png new file mode 100644 index 0000000000..0264df8da8 Binary files /dev/null and b/docs/en/get-started/images/abp-studio-new-solution-dialog-solution-structure-tiered.png differ diff --git a/docs/en/get-started/images/abp-studio-new-solution-dialog-solution-structure.png b/docs/en/get-started/images/abp-studio-new-solution-dialog-solution-structure.png index 310488c1bc..b3ea308fa8 100644 Binary files a/docs/en/get-started/images/abp-studio-new-solution-dialog-solution-structure.png and b/docs/en/get-started/images/abp-studio-new-solution-dialog-solution-structure.png differ diff --git a/docs/en/get-started/layered-web-application.md b/docs/en/get-started/layered-web-application.md index 9e2a2ad6f2..e314f6a5b0 100644 --- a/docs/en/get-started/layered-web-application.md +++ b/docs/en/get-started/layered-web-application.md @@ -75,8 +75,16 @@ Installing a module after creating the solution may require manual steps. So, it Once you select the desired modules, click the *Next* button for the *Solution Structure* screen: +{{ if Tiered == "Yes" }} + +![abp-studio-new-solution-dialog-solution-structure-tiered](images/abp-studio-new-solution-dialog-solution-structure-tiered.png) + +{{ else }} + ![abp-studio-new-solution-dialog-solution-structure](images/abp-studio-new-solution-dialog-solution-structure.png) +{{ end }} + It creates a separate host application that only serves the HTTP (REST) APIs. The web application then performs remote HTTP calls to that application for every operation. If the *Tiered* option is not selected, then the web and HTTP APIs are hosted in a single application, and the calls from the UI layer to the API layer are performed in-process. The tiered architecture allows you to host the web (UI) application in a server that can not access to your database server. However, it brings a slight loss of performance (because of the HTTP calls between UI and HTTP API applications) and makes your architecture, development, and deployment more complex. If you don't understand the tiered structure, just skip it. diff --git a/docs/en/tutorials/book-store/part-05.md b/docs/en/tutorials/book-store/part-05.md index 0acc5cac9f..0f84a945d3 100644 --- a/docs/en/tutorials/book-store/part-05.md +++ b/docs/en/tutorials/book-store/part-05.md @@ -72,7 +72,12 @@ public class BookStorePermissionDefinitionProvider : PermissionDefinitionProvide public override void Define(IPermissionDefinitionContext context) { var bookStoreGroup = context.AddGroup(BookStorePermissions.GroupName, L("Permission:BookStore")); + + //Dashboard permissions + bookStoreGroup.AddPermission(BookStorePermissions.Dashboard.Host, L("Permission:Dashboard"), MultiTenancySides.Host); + bookStoreGroup.AddPermission(BookStorePermissions.Dashboard.Tenant, L("Permission:Dashboard"), MultiTenancySides.Tenant); + //Books permissions var booksPermission = bookStoreGroup.AddPermission(BookStorePermissions.Books.Default, L("Permission:Books")); booksPermission.AddChild(BookStorePermissions.Books.Create, L("Permission:Books.Create")); booksPermission.AddChild(BookStorePermissions.Books.Edit, L("Permission:Books.Edit"));