diff --git a/.github/workflows/auto-pr.yml b/.github/workflows/auto-pr.yml
index 434e65e031..db6ca8e1ff 100644
--- a/.github/workflows/auto-pr.yml
+++ b/.github/workflows/auto-pr.yml
@@ -1,13 +1,13 @@
-name: Merge branch dev with rel-9.2
+name: Merge branch dev with rel-9.3
on:
push:
branches:
- - rel-9.2
+ - rel-9.3
permissions:
contents: read
jobs:
- merge-dev-with-rel-9-2:
+ merge-dev-with-rel-9-3:
permissions:
contents: write # for peter-evans/create-pull-request to create branch
pull-requests: write # for peter-evans/create-pull-request to create a PR
@@ -18,14 +18,14 @@ jobs:
ref: dev
- name: Reset promotion branch
run: |
- git fetch origin rel-9.2:rel-9.2
- git reset --hard rel-9.2
+ git fetch origin rel-9.3:rel-9.3
+ git reset --hard rel-9.3
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
- branch: auto-merge/rel-9-2/${{github.run_number}}
- title: Merge branch dev with rel-9.2
- body: This PR generated automatically to merge dev with rel-9.2. Please review the changed files before merging to prevent any errors that may occur.
+ branch: auto-merge/rel-9-3/${{github.run_number}}
+ title: Merge branch dev with rel-9.3
+ body: This PR generated automatically to merge dev with rel-9.3. Please review the changed files before merging to prevent any errors that may occur.
reviewers: maliming
draft: true
token: ${{ github.token }}
@@ -34,5 +34,5 @@ jobs:
GH_TOKEN: ${{ secrets.BOT_SECRET }}
run: |
gh pr ready
- gh pr review auto-merge/rel-9-2/${{github.run_number}} --approve
- gh pr merge auto-merge/rel-9-2/${{github.run_number}} --merge --auto --delete-branch
+ gh pr review auto-merge/rel-9-3/${{github.run_number}} --approve
+ gh pr merge auto-merge/rel-9-3/${{github.run_number}} --merge --auto --delete-branch
diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
index 7073e826e3..8ebcc32bfc 100644
--- a/.github/workflows/build-and-test.yml
+++ b/.github/workflows/build-and-test.yml
@@ -48,7 +48,7 @@ permissions:
jobs:
build-test:
runs-on: ubuntu-22.04
- timeout-minutes: 40
+ timeout-minutes: 50
if: ${{ !github.event.pull_request.draft }}
steps:
- uses: actions/checkout@v2
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 956d961565..82e1480710 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -18,10 +18,10 @@
-
-
-
-
+
+
+
+
@@ -29,14 +29,14 @@
-
+
-
-
-
+
+
+
@@ -55,68 +55,68 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
@@ -128,11 +128,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -163,17 +163,17 @@
-
+
-
+
-
-
-
+
+
+
diff --git a/README.md b/README.md
index a6199aab9b..fa6632daa8 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ The following diagram contains the core components of the **ABP Platform** and s
ABP offers a complete architectural model to build modern enterprise software solutions. Here, the fundamental architectural structures offered and first-class supported by ABP:
-* [Domain Driven Design](https://abp.io/docs/latest/framework/architecture/domain-driven-design)
+* [Domain Driven Design (DDD)](https://abp.io/docs/latest/framework/architecture/domain-driven-design)
* [Microservices](https://abp.io/docs/latest/framework/architecture/microservices)
* [Modularity](https://abp.io/docs/latest/framework/architecture/modularity/basics)
* [Multi-Tenancy](https://abp.io/docs/latest/framework/architecture/multi-tenancy)
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
index c06589aa7b..d42e6e4f80 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
@@ -718,6 +718,10 @@
"CacheVersionCount": "Cache Version Count",
"CacheVersionCountInfo": "Gets or sets the number of versions to cache",
"CacheLatestVersionsInfo": "This caches the latest versions of the NuGet packages",
+ "NuGetApiKey": "NuGet API key",
+ "QuestionCount": "Question Count",
+ "MakeAnnouncement": "Make Announcement",
+ "MakeAnnouncementInfo": "Check it if you want to make an announcement for this post",
"Menu:TelemetryReports": "Telemetry Reports",
"TelemetryReports:DailyStudioOpen": "Daily Studio Opens",
"TelemetryReports:MonthlyStudioOpen": "Monthly Studio Opens",
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json
index 7ea0fb6708..ceda2baa7a 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json
@@ -1425,7 +1425,7 @@
"TotalDevelopers": "Total {0} developer(s)",
"CustomPurchaseExplanation": "Tailored to your specific needs",
"WhereDidYouHearAboutUs": "Where did you hear about us?",
- "Twitter": "Twitter",
+ "Twitter": "Twitter (X)",
"Facebook": "Facebook",
"Youtube": "YouTube",
"Google": "Google",
@@ -1890,6 +1890,7 @@
"BiographyContainsUrlValidationMessage": "Biography cannot contain URL.",
"CreatePostSEOTitleInfo": "SEO URL is a clean, readable, keyword-rich URL that helps both users and search engines understand what this post is about. Keep it short with 60 characters. SEO titles over 60 characters will be truncated. Use hyphens (-) to separate words (not underscores). Include target keywords near the start. Lowercase only. No stop words unless needed (e.g: \"and\", \"or\", \"the\").",
"SEOTitle": "SEO URL",
- "InvalidYouTubeUrl": "The URL you entered is not a valid YouTube video link. Please make sure it points to a specific video and try again."
+ "InvalidYouTubeUrl": "The URL you entered is not a valid YouTube video link. Please make sure it points to a specific video and try again.",
+ "SelectAnOption": "Select an option"
}
}
diff --git a/common.props b/common.props
index 54e6251ac6..bf99a29ca2 100644
--- a/common.props
+++ b/common.props
@@ -1,8 +1,8 @@
latest
- 9.3.0-preview
- 4.3.0-preview
+ 10.0.0-preview
+ 5.0.0-preview$(NoWarn);CS1591;CS0436https://abp.io/assets/abp_nupkg.pnghttps://abp.io/
diff --git a/docs/en/Blog-Posts/2025-06-02 v9_2_Release_Stable/POST.md b/docs/en/Blog-Posts/2025-06-02 v9_2_Release_Stable/POST.md
new file mode 100644
index 0000000000..1062195bda
--- /dev/null
+++ b/docs/en/Blog-Posts/2025-06-02 v9_2_Release_Stable/POST.md
@@ -0,0 +1,86 @@
+# ABP.IO Platform 9.2 Final Has Been Released!
+
+We are glad to announce that [ABP](https://abp.io/) 9.2 stable version has been released today.
+
+## What's New With Version 9.2?
+
+All the new features were explained in detail in the [9.2 RC Announcement Post](https://abp.io/community/articles/abp-platform-9.2-rc-has-been-released-jpq072nh), so there is no need to review them again. You can check it out for more details.
+
+## Getting Started with 9.2
+
+### Creating New Solutions
+
+You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli) to create new solutions.
+
+### How to Upgrade an Existing Solution
+
+You can upgrade your existing solutions with either ABP Studio or ABP CLI. In the following sections, both approaches are explained:
+
+### Upgrading via ABP Studio
+
+If you are already using the ABP Studio, you can upgrade it to the latest version. ABP Studio periodically checks for updates in the background, and when a new version of ABP Studio is available, you will be notified through a modal. Then, you can update it by confirming the opened modal. See [the documentation](https://abp.io/docs/latest/studio/installation#upgrading) for more info.
+
+After upgrading the ABP Studio, then you can open your solution in the application, and simply click the **Upgrade ABP Packages** action button to instantly upgrade your solution:
+
+
+
+### Upgrading via ABP CLI
+
+Alternatively, you can upgrade your existing solution via ABP CLI. First, you need to install the ABP CLI or upgrade it to the latest version.
+
+If you haven't installed it yet, you can run the following command:
+
+```bash
+dotnet tool install -g Volo.Abp.Studio.Cli
+```
+
+Or to update the existing CLI, you can run the following command:
+
+```bash
+dotnet tool update -g Volo.Abp.Studio.Cli
+```
+
+After installing/updating the ABP CLI, you can use the [`update` command](https://abp.io/docs/latest/CLI#update) to update all the ABP related NuGet and NPM packages in your solution as follows:
+
+```bash
+abp update
+```
+
+You can run this command in the root folder of your solution to update all ABP related packages.
+
+## Migration Guides
+
+There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v9.x: [ABP Version 9.2 Migration Guide](https://abp.io/docs/9.2/release-info/migration-guides/abp-9-2)
+
+## Community News
+
+### New ABP Community Articles
+
+As always, exciting articles have been contributed by the ABP community. I will highlight some of them here:
+
+* [Liming Ma](https://github.com/maliming) has published 3 new articles:
+ * [Integrating .NET AI Chat Template with ABP Framework](https://abp.io/community/articles/integrating-.net-ai-chat-template-with-abp-framework-qavb5p2j)
+ * [Resolving Tenant from Route in ABP Framework](https://abp.io/community/articles/resolving-tenant-from-route-in-abp-framework-ah7oru97)
+ * [Common Errors in JWT Bearer Authentication](https://abp.io/community/articles/common-errors-in-jwt-bearer-authentication-4u3wrbs5)
+* [Engincan Veske](https://engincanveske.substack.com/) has published 3 new articles:
+ * [Understanding HttpApi.Client Project & Remote Services in an ABP Based Application](https://abp.io/community/articles/http-api-client-and-remote-services-in-abp-based-application-xkknsp6m)
+ * [Using Elsa 3 with the ABP Framework: A Comprehensive Guide](https://abp.io/community/articles/using-elsa-3-workflow-with-abp-framework-usqk8afg)
+ * [Implementing Custom Tenant Logo Feature in ABP Framework: A Step-by-Step Guide](https://abp.io/community/articles/implementing-custom-tenant-logo-feature-in-abp-framework-a-stepbystep-guide-sba96ac9)
+* [Berkan Şaşmaz](https://berkansasmaz.com/) has published 2 new articles:
+ * [Understanding the Domain and Application Layers in ABP Framework](https://abp.io/community/articles/understanding-the-domain-and-application-layers-in-abp-1fipc4x4)
+ * [How Do We Maintain Code Quality and Technical Debt in Our .NET Codebase?](https://abp.io/community/articles/how-do-we-maintain-code-quality-and-technical-debt-in-our-.net-codebase-z7glpya1)
+* [Enis Necipoğlu](https://github.com/enisn) has published 2 new articles:
+ * [White Labeling in ABP Framework](https://abp.io/community/articles/white-labeling-in-abp-framework-5trwmrfm) by [Enis Necipoğlu](https://github.com/enisn)
+ * [You do it wrong! Customizing ABP Login Page Correctly](https://abp.io/community/articles/you-do-it-wrong-customizing-abp-login-page-correctly-bna7wzt5)
+* [Ariful Islam](https://abp.io/community/members/arif) has published 2 new articles:
+ * [Multi-Workspace Management for ABP Applications](https://abp.io/community/articles/multiworkspace-management-for-abp-applications-eghgty3j)
+ * [Using Semantic Kernel in the ABP Framework](https://abp.io/community/articles/using-semantic-kernel-in-the-abp-framework-qo5cnuzs)
+* [Guide to Add Custom Modules in ABP.IO App](https://abp.io/community/articles/guide-to-add-custom-modules-in-abp.io-app-sttetffa) by [Harsh Gupta](https://abp.io/community/members/harshgupta)
+* [Debugging NuGet Packages in ABP.IO: A Complete Guide](https://abp.io/community/articles/debugging-nuget-packages-in-abp.io-a-complete-guide-h13y2033) by [Suhaib Mousa](https://suhaibmousa.com/)
+* [Using Microsoft AI Extensions Library and OpenAI to Summarize User Comments](https://abp.io/community/articles/using-microsoft-ai-extensions-library-and-openai-to-summarize-user-comments-gj1lusg7) by [Halil Ibrahim Kalkan](https://twitter.com/hibrahimkalkan)
+
+Thanks to the ABP Community for all the content they have published. You can also [post your ABP related (text or video) content](https://abp.io/community/posts/create) to the ABP Community.
+
+## About the Next Version
+
+The next feature version will be 9.3. You can follow the [release planning here](https://github.com/abpframework/abp/milestones). Please [submit an issue](https://github.com/abpframework/abp/issues/new) if you have any problems with this version.
diff --git a/docs/en/Blog-Posts/2025-06-02 v9_2_Release_Stable/cover-image.png b/docs/en/Blog-Posts/2025-06-02 v9_2_Release_Stable/cover-image.png
new file mode 100644
index 0000000000..dd40555c8e
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-02 v9_2_Release_Stable/cover-image.png differ
diff --git a/docs/en/Blog-Posts/2025-06-02 v9_2_Release_Stable/upgrade-abp-packages.png b/docs/en/Blog-Posts/2025-06-02 v9_2_Release_Stable/upgrade-abp-packages.png
new file mode 100644
index 0000000000..ad5e9bd462
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-02 v9_2_Release_Stable/upgrade-abp-packages.png differ
diff --git a/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/POST.md b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/POST.md
new file mode 100644
index 0000000000..8b37325e7e
--- /dev/null
+++ b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/POST.md
@@ -0,0 +1,97 @@
+# Announcing ABP Studio 1.0 General Availability 🚀
+
+It's the moment you've been waiting for! We are thrilled to announce the stable release of ABP Studio v1.0. This milestone marks a significant step forward in our mission to provide a first-class, integrated development environment for ABP developers. Paired with the recently released [ABP v9.2](https://abp.io/community/articles/announcing-abp-9-2-stable-release-061qmtzb), ABP Studio v1.0 brings new features and improvements that will make your development work faster and more efficient.
+
+For the past several months, our core ABP team has been hard at work, focusing on the features that matter most to you, our community of developers. This release is the peak of that effort, bringing a host of improvements and new capabilities to the forefront. Let's dive in and explore what's new in ABP Studio v1.0.
+
+## What's New with ABP Studio v1.0?
+
+ABP Studio v1.0 is all about enhancing your development experience, from project creation to deployment. Here, we'll walk you through some of the latest features we've implemented, along with other key enhancements that make this release truly special.
+
+### ❤️ Solution Runner with Ready/Health Checks
+
+ABP Studio's Solution Runner now provides visual health monitoring that makes tracking your applications' status easily. When you start an application, a spinner indicates it's "starting", then in the *Overall* tab, you can see the application's health (✅ for healthy, ⚠️ for unhealthy) that displays real-time health status:
+
+
+
+With [pre-configured health checks](https://abp.io/docs/9.2/solution-templates/layered-web-application/health-check-configuration) in ABP solution templates including database connectivity tests, you get instant feedback on your applications' health.
+
+When health check UI is configured, you can access comprehensive health dashboards with a dedicated "Browse Health UI" command or see the last health response from the "Show Latest Health Check Response" command:
+
+
+
+When you restart applications that are open in your browser, ABP Studio automatically refreshes the pages for you.
+
+### 🎨 Theme Style Selection on Project Creation
+
+When creating a new solution, you can now choose your theme, theme style, and layout right from the project creation wizard instead of having to configure these settings later. ABP Studio lets you pick from [ABP's officially provided themes including Basic, LeptonX Lite, and LeptonX](https://abp.io/docs/latest/ui-themes).
+
+
+
+If you select Basic or LeptonX Lite themes, only the theme will be changed. However, if you select the LeptonX theme, you'll get additional options to fine-tune your setup:
+
+- **Theme Style Configuration** - Pick from **System, Light, Dim, or Dark** styles to match how you like your development environment
+- **Layout Options** - **Sidebar menu** / **Top menu**
+
+### 📦 "Container" Application Type for Solution Runner
+
+ABP Studio v1.0 introduces a dedicated "Container" application type that gives you better control over your Docker containers directly from the Solution Runner. Instead of managing all your containers through PowerShell scripts or running them all together, you can now see and control each container individually in the Solution Runner panel.
+
+
+
+This new feature replaces the previous _Infrastructure_ folder approach with a cleaner, more intuitive container section. You can now:
+
+- **Start and stop containers individually** - No more starting all containers at once when you only need specific services
+- **Monitor container status** - See which containers are running, stopped, or have issues directly in the UI
+- **Manage container dependencies** - Control the order and timing of container startup based on your application needs
+
+Whether you're working with databases, message brokers, or other containerized services, the new Container application type makes it much easier to manage your development environment. This is especially useful for microservice architectures where you might want to run only specific services during development or testing.
+
+### ⚙️ Handle Multiple DbContexts When Adding/Removing/Applying Migrations
+
+When working with ABP solutions that have multiple DbContexts (such as when using the separate tenant database option), ABP Studio now intelligently prompts you to select the appropriate DbContext for migration operations. This enhancement ensures you're always working with the correct database context and helps prevent common mistakes when managing multiple databases.
+
+
+
+The context selection dialog appears automatically when you perform any of these Entity Framework operations:
+
+- **Adding a new migration** - Choose which DbContext the new migration should target
+- **Removing an existing migration** - Select the DbContext from which to remove the migration
+- **Updating the database** - Specify which database context should be updated
+
+## Get Started with ABP Studio v1.0 Today!
+
+ABP Studio v1.0 is built on the solid foundation of the [latest version of ABP Framework, which is v9.2](https://abp.io/community/articles/announcing-abp-9-2-stable-release-061qmtzb). This means that when you create a new project with ABP Studio, you're getting all the latest features, performance improvements, and bug fixes that come with v9.2. This includes updates to dependencies, enhancements to the core framework, and improvements to application modules.
+
+We are incredibly excited for you to get your hands on ABP Studio v1.0. We believe these new features will make a real difference in your day-to-day development workflow.
+
+### ⬇️ Download ABP Studio 1.0
+
+Ready to get started? You can download the stable v1.0 release right now from the official ABP Studio website: **[https://abp.io/studio](https://abp.io/studio)**
+
+
+
+If you are an existing ABP Studio user, it's even easier. You don't need to download the installer again. Simply launch ABP Studio, and it will prompt you to update to the latest version directly from the UI.
+
+> Alternatively, you can click to the *Help -> Check for Updates* context menu item to check for updates and install the latest version:
+>
+> 
+
+### 🔮 What's Next?
+
+ABP Studio v1.0 represents just the beginning of our journey. We're committed to continuously evolving the platform, adding features that directly address real-world development challenges and enhance your workflow. Our goal is to make ABP Studio the go-to development environment for .NET and ABP Framework developers.
+
+We will keep releasing new versions with exciting features based on our roadmap and your valuable feedback. To give you a sneak peek into what's planned for future releases, you can expect to see:
+
+- **Environment Variable Management:** A dedicated UI to easily manage environment variables for your solutions.
+- **OpenTelemetry Integration:** We'll be integrating OpenTelemetry support directly into the startup templates, making distributed tracing and observability a seamless part of your application from day one.
+- **LeptonX Theme Builder**: Allowing users to determine styling, colour palette and easily override their project's theme styles.
+- **Monitor dashboards of the tools used in the solution (e.g. Kubernetes, Redis, Grafana, etc...)**
+- **Pre-configured .NET Aspire for the Microservice Startup Template**
+- **and more...**
+
+We are incredibly excited about the future of ABP Studio and can't wait to share the next set of features with you. Your comments and suggestions are invaluable to us. If you have any feedback, please drop a comment below.
+
+Thank you for being part of our community and happy coding!
+
+**The Volosoft Team**
diff --git a/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/abp-studio-check-for-updates.png b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/abp-studio-check-for-updates.png
new file mode 100644
index 0000000000..bf7f2dc889
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/abp-studio-check-for-updates.png differ
diff --git a/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/abp-studio-download.png b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/abp-studio-download.png
new file mode 100644
index 0000000000..453a9ce3f8
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/abp-studio-download.png differ
diff --git a/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/containers-type.png b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/containers-type.png
new file mode 100644
index 0000000000..66bfe4a12c
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/containers-type.png differ
diff --git a/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/cover-image.png b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/cover-image.png
new file mode 100644
index 0000000000..76b24a8573
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/cover-image.png differ
diff --git a/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/health-checks.png b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/health-checks.png
new file mode 100644
index 0000000000..6de5deeacf
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/health-checks.png differ
diff --git a/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/new-migration-added.gif b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/new-migration-added.gif
new file mode 100644
index 0000000000..b8149e8a41
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/new-migration-added.gif differ
diff --git a/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/saas-health-check.png b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/saas-health-check.png
new file mode 100644
index 0000000000..547e518751
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/saas-health-check.png differ
diff --git a/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/theme-style-selection-leptonx.png b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/theme-style-selection-leptonx.png
new file mode 100644
index 0000000000..8f5f143a11
Binary files /dev/null and b/docs/en/Blog-Posts/2025-06-10-Announcing-ABP-Studio-1.0-Stable-Release/theme-style-selection-leptonx.png differ
diff --git a/docs/en/Community-Articles/2025-03-23-Understanding-the-Embedded-Files-in-ABP-Framework/post.md b/docs/en/Community-Articles/2025-03-23-Understanding-the-Embedded-Files-in-ABP-Framework/post.md
index 5664fd8091..ccbf1a285c 100644
--- a/docs/en/Community-Articles/2025-03-23-Understanding-the-Embedded-Files-in-ABP-Framework/post.md
+++ b/docs/en/Community-Articles/2025-03-23-Understanding-the-Embedded-Files-in-ABP-Framework/post.md
@@ -119,7 +119,7 @@ For example, if your filename is `zh.hans.json`, ABP will generate the following
[File] [/MyModule/Volo/Abp/MyModule/Localization/zh/hans.json]
```
-Microsoft provides the `Microsoft.Extensions.FileProviders.Manifest` library to solve this problem.
+Microsoft provides the `Microsoft.Extensions.FileProviders.Embedded` library to solve this problem.
We need to add this package dependency and set `true` in our project:
@@ -136,7 +136,7 @@ We need to add this package dependency and set `t
-
+
diff --git a/docs/en/Community-Articles/2025-05-11-AI-Chat/POST.md b/docs/en/Community-Articles/2025-05-11-AI-Chat/POST.md
new file mode 100644
index 0000000000..d6d2a5b6dc
--- /dev/null
+++ b/docs/en/Community-Articles/2025-05-11-AI-Chat/POST.md
@@ -0,0 +1,134 @@
+# Integrating .NET AI Chat Template with ABP Framework
+
+This article demonstrates how to integrate the [.NET AI Chat Template](https://devblogs.microsoft.com/dotnet/announcing-dotnet-ai-template-preview2/) into an ABP Framework application, enabling powerful AI chat capabilities in your ABP-based solution.
+
+
+
+## Step 1: Create a New ABP Project
+
+First, let's create a new [single-layer Blazor Server project](https://abp.io/docs/latest/solution-templates/single-layer-web-application/overview) named `AbpAiChat` using ABP Studio, You can also use the following ABP CLI command to create the project:
+
+```bash
+abp new AbpAiChat -t app-nolayers --ui-framework blazor-server --use-open-source-template
+```
+
+## Step 2: Integrate AI Chat Template
+
+The integration process involves copying and adapting the .NET AI Chat Template code into our ABP project. The template code is already included in our sample project, so you don't need to install it separately.
+
+### 2.1 Project Structure Changes
+
+1. Copy Blazor components to the `Components` folder
+2. Copy AI service classes to the `Services` folder
+3. Add required entities(`IngestedDocument`, `IngestedRecord`) to the `AbpAiChatDbContext` and add new migration
+4. Copy frontend resources to the `wwwroot` folder
+5. Adjust some styles to capatible with the ABP theme
+
+### 2.2 Required NuGet Packages
+
+Add the following packages to `AbpAiChat.csproj`:
+
+```xml
+
+
+
+
+
+
+```
+
+### 2.3 Configure AI Services
+
+Add the following configuration to `AbpAiChatModule.cs`:
+
+```csharp
+private void ConfigureAi(ServiceConfigurationContext context)
+{
+ var credential = new ApiKeyCredential(context.Services.GetConfiguration()["GitHubToken"] ?? throw new InvalidOperationException("Missing configuration: GitHubToken. See the README for details."));
+ var openAiOptions = new OpenAIClientOptions()
+ {
+ Endpoint = new Uri("https://models.inference.ai.azure.com")
+ };
+
+ var ghModelsClient = new OpenAIClient(credential, openAiOptions);
+ var chatClient = ghModelsClient.GetChatClient("gpt-4o-mini").AsIChatClient();
+ var embeddingGenerator = ghModelsClient.GetEmbeddingClient("text-embedding-3-small").AsIEmbeddingGenerator();
+
+ var vectorStore = new JsonVectorStore(Path.Combine(AppContext.BaseDirectory, "vector-store"));
+
+ context.Services.AddSingleton(vectorStore);
+ context.Services.AddScoped();
+ context.Services.AddSingleton();
+ context.Services.AddChatClient(chatClient).UseFunctionInvocation().UseLogging();
+ context.Services.AddEmbeddingGenerator(embeddingGenerator);
+
+ context.Services.Configure(options =>
+ {
+ options.ContentTypeMaps.Add(".mjs", "application/javascript");
+ });
+}
+```
+
+The `ConfigureAi` method is called in the `ConfigureServices` method of `AbpAiChatModule`. It sets up the AI services, including the OpenAI client, chat client, embedding generator, and vector store.
+
+### 2.4 Configure GitHub Token
+
+Add your GitHub Personal Access Token to `appsettings.json`:
+
+```json
+{
+ "GitHubToken": "your-github-token"
+}
+```
+
+You can obtain your token from [GitHub Personal Access Tokens](https://github.com/settings/personal-access-tokens).
+
+## Step 3: Add Custom AI Functionality
+
+Let's add a custom AI function to retrieve the current user's information. Update the `Chat.razor` component:
+
+```csharp
+chatOptions.Tools =
+[
+ AIFunctionFactory.Create(SearchAsync),
+ AIFunctionFactory.Create(GetWeather),
+ AIFunctionFactory.Create(GetCurrentUserInfo)
+];
+
+[Description("Get current user information")]
+private Task GetCurrentUserInfo()
+{
+ return Task.FromResult(CurrentUser.IsAuthenticated ?
+ $"UserId: {CurrentUser.Id}, Name: {CurrentUser.UserName}, Email: {CurrentUser.Email}, Roles: {string.Join(", ", CurrentUser.Roles)}" :
+ "No user information available.");
+}
+```
+
+## Step 4: Add Navigation
+
+Add a `Chat` menu item in `AbpAiChatMenuContributor` to navigate to the AI Chat component.
+
+## Running the Application
+
+After completing the integration, you can run the application and access the AI chat functionality. The chat interface allows you to:
+
+- Get weather information
+- Ask questions about PDF content
+- Retrieve current user information
+- And more!
+
+
+
+## Conclusion
+
+This integration demonstrates how to leverage the power of AI in your ABP Framework applications. The .NET AI Chat Template provides a solid foundation for building intelligent chat interfaces, and ABP Framework makes it more powerful.
+
+## References
+
+- [ABP Single Layer Solution](https://abp.io/docs/latest/solution-templates/single-layer-web-application/overview)
+- [.NET AI Template Documentation](https://devblogs.microsoft.com/dotnet/announcing-dotnet-ai-template-preview1/)
+- [GitHub Personal Access Tokens Guide](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)
+
+## Source Code
+
+- [AbpAiChat Source Code](https://github.com/abpframework/abp-samples/tree/master/AIChat)
diff --git a/docs/en/Community-Articles/2025-05-11-AI-Chat/ai-chat.png b/docs/en/Community-Articles/2025-05-11-AI-Chat/ai-chat.png
new file mode 100644
index 0000000000..8388e2ca9e
Binary files /dev/null and b/docs/en/Community-Articles/2025-05-11-AI-Chat/ai-chat.png differ
diff --git a/docs/en/Community-Articles/2025-05-11-AI-Chat/cover.png b/docs/en/Community-Articles/2025-05-11-AI-Chat/cover.png
new file mode 100644
index 0000000000..5dce208fd6
Binary files /dev/null and b/docs/en/Community-Articles/2025-05-11-AI-Chat/cover.png differ
diff --git a/docs/en/Community-Articles/2025-06-10-bootcamp/post.md b/docs/en/Community-Articles/2025-06-10-bootcamp/post.md
new file mode 100644
index 0000000000..98192235fa
--- /dev/null
+++ b/docs/en/Community-Articles/2025-06-10-bootcamp/post.md
@@ -0,0 +1,38 @@
+You Asked, We Delivered: Introducing Our New Training Bootcamp\!
+
+Over the past months we’ve heard from countless freelancers, individuals and small teams asking for a focused, high-impact training without the overwhelming commitment or high costs of traditional bootcamps. So here we are\!
+
+We're excited to introduce **ABP Bootcamp: Mastering Infrastructure & Features**, a full training experience designed to help developers level up fast with practical knowledge they can apply immediately.
+
+This live, instructor-led program delivers four days of in-depth, real-world training on ABP’s infrastructure and core features.
+
+**Bootcamp Details**
+
+Dates: July 1,2,3,4 2025
+Time: 17:00-19:00 (UTC) each day
+Format: Live, online sessions
+Price: $399 (discounted $799)
+Seats: Limited to a small group
+
+### **What You’ll Learn**
+
+By the end of this bootcamp, you’ll have:
+
+\-A solid understanding of ABP’s infrastructure, systems, and design patterns
+\-Practical experience with features like dependency injection, configuration, logging, and localization
+\-The ability to implement email templating, event bus, caching, and custom settings in real applications
+\-Knowledge of best practices for building scalable, maintainable, and high-performance solutions with ABP
+
+### **Who It’s For**
+
+This bootcamp is ideal for:
+
+\-Developers and freelancers using ABP in their daily work
+\-Teams looking to speed up onboarding and improve development efficiency
+\-Anyone who wants practical ABP knowledge without committing to long-format training programs
+
+### **Reserve Your Spot**
+
+Seats are limited to keep the experience interactive and personalized. With the current 50% discount, this is the most accessible way to gain hands-on ABP experience with expert guidance.
+
+**Registration is now open. Secure your place today and master the infrastructure that powers ABP. Register here: [https://docs.google.com/forms/d/e/1FAIpQLSckMZChdqIJIuWiEvg\_KsSDmrxagRdc5WBYceAemHLrmT1oiA/viewform](https://docs.google.com/forms/d/e/1FAIpQLSckMZChdqIJIuWiEvg_KsSDmrxagRdc5WBYceAemHLrmT1oiA/viewform)**
diff --git a/docs/en/Community-Articles/2025-06-12-fix-mongodb-guid-abp-v9.2.0-upgrade/mongo-db.jpg b/docs/en/Community-Articles/2025-06-12-fix-mongodb-guid-abp-v9.2.0-upgrade/mongo-db.jpg
new file mode 100644
index 0000000000..63d1fc9ab6
Binary files /dev/null and b/docs/en/Community-Articles/2025-06-12-fix-mongodb-guid-abp-v9.2.0-upgrade/mongo-db.jpg differ
diff --git a/docs/en/Community-Articles/2025-06-12-fix-mongodb-guid-abp-v9.2.0-upgrade/post.md b/docs/en/Community-Articles/2025-06-12-fix-mongodb-guid-abp-v9.2.0-upgrade/post.md
new file mode 100644
index 0000000000..ddae9a3704
--- /dev/null
+++ b/docs/en/Community-Articles/2025-06-12-fix-mongodb-guid-abp-v9.2.0-upgrade/post.md
@@ -0,0 +1,93 @@
+# Solving MongoDB GUID Issues After an ABP Framework Upgrade
+
+So, you've just upgraded your ABP Framework application to a newer version (like v9.2.0+) and suddenly, your application can't read data from its MongoDB database. You're seeing strange deserialization errors, especially related to `Guid` types. What's going on?
+
+You've likely run into a classic compatibility issue with the MongoDB .NET driver.
+
+### The Problem: Legacy vs. Standard GUIDs
+
+Here's the short version:
+
+* **Old MongoDB Drivers** (used in older ABP versions) stored `Guid` values in a format called `CSharpLegacy`.
+* **New MongoDB Drivers** (v3.0+), now default to a universal `Standard` format.
+
+When your newly upgraded app tries to read old data, the new driver expects the `Standard` format but finds `CSharpLegacy`. The byte orders don't match, and... boom. Deserialization fails.
+
+The ABP Framework team has an excellent official guide covering this topic in detail. We highly recommend reading their **[MongoDB Driver 2 to 3 Migration Guide](https://abp.io/docs/latest/release-info/migration-guides/MongoDB-Driver-2-to-3)** for a full understanding.
+
+Our tip below serves as a fast, application-level fix if you need to get your system back online quickly without performing a full data migration.
+
+### The Quick Fix: Tell the Driver to Use the Old Format
+
+Instead of changing your data, you can simply tell the new driver to continue using the old `CSharpLegacy` format for all `Guid` and `Guid?` properties. This provides immediate backward compatibility without touching your database.
+
+It’s a simple, two-step process.
+
+#### Step 1: Create a Custom Convention
+
+First, create this class in your `.MongoDb` project. It tells the serializer how to handle `Guid` types.
+
+```csharp
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization;
+using MongoDB.Bson.Serialization.Conventions;
+using MongoDB.Bson.Serialization.Serializers;
+using System;
+
+public class LegacyGuidConvention : ConventionBase, IMemberMapConvention
+{
+ public void Apply(BsonMemberMap memberMap)
+ {
+ if (memberMap.MemberType == typeof(Guid))
+ {
+ memberMap.SetSerializer(new GuidSerializer(GuidRepresentation.CSharpLegacy));
+ }
+ else if (memberMap.MemberType == typeof(Guid?))
+ {
+ var guidSerializer = new GuidSerializer(GuidRepresentation.CSharpLegacy);
+ var nullableGuidSerializer = new NullableSerializer(guidSerializer);
+ memberMap.SetSerializer(nullableGuidSerializer);
+ }
+ }
+}
+```
+
+#### Step 2: Register the Convention at Startup
+
+Now, register this convention in your `YourProjectMongoDbModule.cs` file. Add this code to the top of the `ConfigureServices` method. This ensures your rule is applied globally as soon as the application starts.
+
+```csharp
+using Volo.Abp.Modularity;
+using MongoDB.Bson.Serialization;
+using MongoDB.Bson.Serialization.Conventions;
+
+public class YourProjectMongoDbModule : AbpModule
+{
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ // Fix Start
+ var conventionPack = new ConventionPack { new LegacyGuidConvention() };
+ ConventionRegistry.Register(
+ "LegacyGuidConvention",
+ conventionPack,
+ t => true); // Apply to all types
+ // Fix End
+
+ // ... Your existing ConfigureServices code
+ }
+}
+```
+
+### An Alternative to Full Data Migration
+
+It's important to note that the method described here is an **application-level fix**. It's a fantastic alternative to performing a full data migration, which involves writing scripts to convert every legacy GUID in your database.
+
+If you are interested in the more permanent, data-centric approach, the ABP.IO community has a detailed guide on [**Migrating MongoDB GUIDs from Legacy to Standard Format**](https://abp.io/community/articles/migrating-mongodb-guids-from-legacy-to-standard-format-mongodb-v2-to-v3-dqwybdtw).
+
+Our quick fix is ideal for getting a system back online fast or when a database migration is too complex. The full migration is better for long-term standards compliance. Choose the path that best fits your project's needs!
+
+### That's It!
+
+Restart your application, and the errors should be gone. Your app can now correctly read its old `Guid` data, and it will continue to write new data in the same legacy format, ensuring consistency.
+
+This approach is a lifesaver for existing projects, saving you from a risky and time-consuming data migration. For brand-new projects, you might consider starting with the `Standard` representation, but for everything else, this is a clean and effective fix. Happy coding!
diff --git a/docs/en/Community-Articles/2025-06-13-modular-docker-container-management/modular-docker-container-management.md b/docs/en/Community-Articles/2025-06-13-modular-docker-container-management/modular-docker-container-management.md
new file mode 100644
index 0000000000..3f6e061c14
--- /dev/null
+++ b/docs/en/Community-Articles/2025-06-13-modular-docker-container-management/modular-docker-container-management.md
@@ -0,0 +1,113 @@
+# 🚀 New in ABP Studio: Modular Docker Container Management
+
+We're excited to announce a new improvement to Docker integration in **ABP Studio**!
+With the latest update, you can now manage Docker containers **individually**, add or remove them dynamically, and launch them **either separately or collectively** — all within the Studio.
+
+
+
+------
+
+## 🔄 What Has Changed?
+
+In previous versions, Docker dependencies were handled using a **single `docker-compose.override.yml` file**, which was **automatically generated** when creating a new solution if it is needed.
+
+By default, this file included common development dependencies like PostgreSQL, Redis, RabbitMQ, etc., and was executed through a predefined script named `docker-dependencies` in the Solution Runner.
+
+While this approach worked well for simple setups, it had some limitations:
+
+- All services were bundled into a **single compose file**.
+- Adding or removing services required modifying this central file.
+- It wasn't possible to **start or stop individual containers independently**.
+
+------
+
+## ✅ What's New?
+
+With the latest ABP Studio update:
+
+- Each Docker container can now be defined in its **own `docker-compose` file**.
+- Compose files can be **added or removed** from the Studio UI.
+- Containers can be:
+ - **Started or stopped individually**.
+ - **Started/stopped in bulk**.
+- The **Solution Runner** recognizes Docker containers and can run them alongside application projects.
+
+------
+
+## ⚠️ Important Notes Before You Start
+
+### Required: Use `container_name` for Docker Service Matching
+
+When working with the new modular Docker system in ABP Studio, each service **must define a `container_name`**.
+This name is used by ABP Studio to **identify and map** Docker containers to their corresponding service entries in the Studio UI.
+
+#### Why is this mandatory?
+
+- ABP Studio relies on `container_name` to:
+ - Detect whether the service is stopped or continue running.
+ - Perform **start**, **stop**, and **status check** operations reliably.
+ - Match Studio UI entries with actual running Docker containers.
+- Without a `container_name`, container discovery may fail and **service management features might not work as expected**.
+
+#### Example:
+
+```
+services:
+ redis:
+ container_name: redis
+ image: redis:7
+ ports:
+ - "6379:6379"
+ networks:
+ - my-network
+```
+
+> If you do **not** define `container_name`, ABP Studio will be unable to track or control the service properly.
+
+------
+
+## 📥 Migrating from the Old System
+
+If you're using the old method with a centralized compose file:
+
+Before:
+
+```
+docker-compose -f docker-compose.override.yml up -d
+```
+
+Now:
+
+1. Create separate `docker-compose` files for each service
+ (e.g., `docker-compose.postgres.yml`, `docker-compose.redis.yml`).
+2. Go to the **Solution Runner tab in ABP Studio**.
+3. Use the **“Add Docker Service”** option in Studio to register each file.
+4. Optionally remove or archive the old monolithic compose file.
+
+> If your original `docker-compose.override.yml` contains multiple services, you can split it into individual files — Docker Compose and ABP Studio both support modular composition.
+
+------
+
+## ⚙️ Advanced: Shared Network
+
+If your containers need to communicate over a shared network, you can define an external network in each compose file like this:
+
+```
+networks:
+ my-network:
+ external: true
+```
+
+ABP Studio automatically creates the network if they do no exist. But if you like you can create the network once using:
+
+```
+docker network create my-network
+```
+
+------
+
+## 📚 Additional Resources
+
+- Docker Compose Documentation
+- ABP Studio Documentation (link to updated docs when ready)
+- [Report Issues on GitHub](https://github.com/abpframework/abp/issues)
\ No newline at end of file
diff --git a/docs/en/Community-Articles/2025-06-13-modular-docker-container-management/solution-runner-containers.png b/docs/en/Community-Articles/2025-06-13-modular-docker-container-management/solution-runner-containers.png
new file mode 100644
index 0000000000..ef6de78c1f
Binary files /dev/null and b/docs/en/Community-Articles/2025-06-13-modular-docker-container-management/solution-runner-containers.png differ
diff --git a/docs/en/cli/index.md b/docs/en/cli/index.md
index 02521e72cb..60d4e3ff0b 100644
--- a/docs/en/cli/index.md
+++ b/docs/en/cli/index.md
@@ -161,7 +161,7 @@ For more samples, go to [ABP CLI Create Solution Samples](new-command-samples.md
* `--database-provider` or `-d`: Specifies the database provider. Default provider is `ef`. Available providers:
* `ef`: Entity Framework Core.
* `mongodb`: MongoDB.
- * `--connection-string` or `-cs`: Overwrites the default connection strings in all `appsettings.json` files. The default connection string is `Server=localhost;Database=MyProjectName;Trusted_Connection=True` for EF Core and it is configured to use the SQL Server. If you want to use the EF Core, but need to change the DBMS, you can change it as [described here](../framework/data/entity-framework-core/other-dbms.md) (after creating the solution).
+ * `--connection-string` or `-cs`: Overwrites the default connection strings in all `appsettings.json` files. The default connection string is `Server=localhost;Database=MyProjectName;Trusted_Connection=True` for EF Core and it is configured to use the SQL Server. If you want to use the EF Core, but need to change the DBMS, you can change it as [described here](../framework/data/entity-framework-core/other-dbms.md) (after creating the solution). **Note:** When specifying the connection string, make sure to enclose it in double quotes, for example: `--connection-string "Server=localhost;Database=MyProjectName;Trusted_Connection=True"`.
* `--skip-migrations` or `-sm`: Skips the creating initial database migration step.
* `--skip-migrator` or `-smr`: Skips the run database migrator step.
* `--public-website`: Public Website is a front-facing website for describing your project, listing your products and doing SEO for marketing purposes. Users can login and register on your website with this website. This option is only included in PRO templates.
@@ -183,7 +183,7 @@ For more samples, go to [ABP CLI Create Solution Samples](new-command-samples.md
* `--database-provider` or `-d`: Specifies the database provider. Default provider is `ef`. Available providers:
* `ef`: Entity Framework Core.
* `mongodb`: MongoDB.
- * `--connection-string` or `-cs`: Overwrites the default connection strings in all `appsettings.json` files. The default connection string is `Server=localhost;Database=MyProjectName;Trusted_Connection=True` for EF Core and it is configured to use the SQL Server. If you want to use the EF Core, but need to change the DBMS, you can change it as [described here](../framework/data/entity-framework-core/other-dbms.md) (after creating the solution).
+ * `--connection-string` or `-cs`: Overwrites the default connection strings in all `appsettings.json` files. The default connection string is `Server=localhost;Database=MyProjectName;Trusted_Connection=True` for EF Core and it is configured to use the SQL Server. If you want to use the EF Core, but need to change the DBMS, you can change it as [described here](../framework/data/entity-framework-core/other-dbms.md) (after creating the solution). **Note:** When specifying the connection string, make sure to enclose it in double quotes, for example: `--connection-string "Server=localhost;Database=MyProjectName;Trusted_Connection=True"`.
* `--skip-migrations` or `-sm`: Skips the creating initial database migration step.
* `--skip-migrator` or `-smr`: Skips the run database migrator step.
* `--sample-crud-page` or `-scp`: It adds the [BookStore](./../tutorials/book-store/index.md) sample to your solution.
@@ -295,7 +295,7 @@ abp new-package --name Acme.BookStore.Domain --template lib.domain
* `lib.ef`
* `--include-migrations`: Allows migration operations on this package.
* `--connection-string-name`: Default value is the last part of the package's namespace (or package name simply).
- * `--connection-string`: Connection string value. Defaut value is null. You can set it alter.
+ * `--connection-string`: Connection string value. Defaut value is null. You can set it alter. **Note:** When specifying the connection string, make sure to enclose it in double quotes, for example: `--connection-string "Server=localhost;Database=MyProjectName;Trusted_Connection=True"`.
* `lib.mongodb`
* `lib.http-api`
* `lib.http-api-client`
diff --git a/docs/en/framework/infrastructure/background-jobs/index.md b/docs/en/framework/infrastructure/background-jobs/index.md
index 5aa58a7d3e..af0c33de21 100644
--- a/docs/en/framework/infrastructure/background-jobs/index.md
+++ b/docs/en/framework/infrastructure/background-jobs/index.md
@@ -134,6 +134,25 @@ namespace MyProject
}
```
+##### Custom Job Name
+
+You can configure `GetBackgroundJobName` delegate of the `AbpBackgroundJobOptions` to change the default job name.
+
+```csharp
+Configure(options =>
+{
+ options.GetBackgroundJobName = (jobType) =>
+ {
+ if (jobTyep == typeof(EmailSendingArgs))
+ {
+ return "emails";
+ }
+
+ return BackgroundJobNameAttribute.GetName(jobType);
+ };
+});
+```
+
### Queue a Job Item
Now, you can queue an email sending job using the `IBackgroundJobManager` service:
diff --git a/docs/en/framework/infrastructure/background-workers/index.md b/docs/en/framework/infrastructure/background-workers/index.md
index 884ea60c25..6ab88a9e53 100644
--- a/docs/en/framework/infrastructure/background-workers/index.md
+++ b/docs/en/framework/infrastructure/background-workers/index.md
@@ -41,6 +41,8 @@ Start your worker in the `StartAsync` (which is called when the application begi
Assume that we want to make a user passive, if the user has not logged in to the application in last 30 days. `AsyncPeriodicBackgroundWorkerBase` class simplifies to create periodic workers, so we will use it for the example below:
+> You can use `CronExpression` property to set the cron expression for the background worker if you will use the [Hangfire Background Worker Manager](./hangfire.md) or [Quartz Background Worker Manager](./quartz.md).
+
````csharp
public class PassiveUserCheckerWorker : AsyncPeriodicBackgroundWorkerBase
{
@@ -52,6 +54,7 @@ public class PassiveUserCheckerWorker : AsyncPeriodicBackgroundWorkerBase
serviceScopeFactory)
{
Timer.Period = 600000; //10 minutes
+ //CronExpression = "0 0/10 * * * ?"; //Run every 10 minutes, Only for Quartz or Hangfire integration.
}
protected async override Task DoWorkAsync(
diff --git a/docs/en/framework/infrastructure/simple-state-checker.md b/docs/en/framework/infrastructure/simple-state-checker.md
index 584fef1592..981e4f6a61 100644
--- a/docs/en/framework/infrastructure/simple-state-checker.md
+++ b/docs/en/framework/infrastructure/simple-state-checker.md
@@ -11,11 +11,11 @@ public class MyObject : IHasSimpleStateCheckers
{
public int Id { get; set; }
- public List> SimpleStateCheckers { get; }
+ public List> StateCheckers { get; }
public MyObject()
{
- SimpleStateCheckers = new List>();
+ StateCheckers = new List>();
}
}
````
diff --git a/docs/en/get-started/maui.md b/docs/en/get-started/maui.md
index 657a217d44..21497fb2f7 100644
--- a/docs/en/get-started/maui.md
+++ b/docs/en/get-started/maui.md
@@ -13,9 +13,11 @@ dotnet tool install -g Volo.Abp.Studio.Cli
Then use the `abp new` command in an empty folder to create a new solution:
````bash
-abp new Acme.MyMauiApp -t maui
+abp new Acme.MyMauiApp -t maui --old
````
+> **Note**: Since this startup template is not provided by the new ABP Studio Templates yet, you need to pass the `--old` parameter at the end of the command to use the old CLI & templating system for this startup template.
+
`Acme.MyMauiApp` is the solution name, like *YourCompany.YourProduct*. You can use single level, two-levels or three-levels naming.
## Solution Structure
diff --git a/docs/en/images/azure-deploy-create-web-app-2.png b/docs/en/images/azure-deploy-create-web-app-2.png
index bbf8f96c64..d68e502783 100644
Binary files a/docs/en/images/azure-deploy-create-web-app-2.png and b/docs/en/images/azure-deploy-create-web-app-2.png differ
diff --git a/docs/en/images/azure-deploy-create-web-app-6.png b/docs/en/images/azure-deploy-create-web-app-6.png
index f54a17e095..4993061eb5 100644
Binary files a/docs/en/images/azure-deploy-create-web-app-6.png and b/docs/en/images/azure-deploy-create-web-app-6.png differ
diff --git a/docs/en/modules/audit-logging-pro.md b/docs/en/modules/audit-logging-pro.md
index ef609e5422..cb32ff52fe 100644
--- a/docs/en/modules/audit-logging-pro.md
+++ b/docs/en/modules/audit-logging-pro.md
@@ -9,6 +9,8 @@ This module implements the Audit Logging system of an application;
* See all changes of entities and filter entity change logs.
* View details of an entity change.
* View all changes of an entity.
+* Export audit logs and entity changes to Excel.
+* Receive email notifications for completed or failed exports.
* This module also defines reusable "Average Execution Duration Per Day" and "Error Rate" widgets.
* Periodic clean up of audit logs.
@@ -56,6 +58,10 @@ You can view details of an audit log by clicking the magnifier icon on each audi
* **Actions:** This tab shows list of actions (controller actions and application service method calls with their parameters) executed during a web request.
* **Changes:** This tab shows changed entities during the web request.
+##### Export to Excel
+
+You can export audit logs to Excel by clicking the "Export to Excel" button in the toolbar. If the result set is small (less than a configurable threshold), the file will be generated and downloaded immediately. For larger result sets, the export will be processed as a background job and you'll receive an email with a download link once the export is completed.
+
#### Entity Changes
Entity changes tab is used to list, view and filter entity change logs.
@@ -80,6 +86,10 @@ You can view details of all changes of an entity by clicking the "Full Change Hi

+##### Export to Excel
+
+You can export entity changes to Excel by clicking the "Export to Excel" button in the toolbar. Similar to audit logs export, for large datasets the export will be processed as a background job and you'll receive an email notification once completed.
+
#### Audit Log Settings
The *Audit Log* settings tab is used to configure audit log settings. You can enable or disable the clean up service system wide. This way, you can shut down the clean up service for all tenants and host. If the system wide clean up service is enabled, you can configure the global *Expired Item Deletion Period* for all tenants and host.
@@ -121,11 +131,32 @@ To see `AbpAuditingOptions` properties, please see its [documentation](../framew
Configure(options =>
{
options.Period = (int)TimeSpan.FromSeconds(30).TotalMilliseconds;
+ options.CronExpression = "0 23 * * *"; // This Cron expression only works if Hangfire or Quartz is used for background workers.
});
```
The *Period* doesn't mean the *Expired Item Deletion Period*. It's the period of the worker to run clean up service system wide. The default value is 1 day.
+### AuditLogExcelFileOptions
+
+`AuditLogExcelFileOptions` can be configured in the UI layer, within the `ConfigureServices` method of your [module](../framework/architecture/modularity/basics.md). Example:
+
+```csharp
+Configure(options =>
+{
+ options.FileRetentionHours = 24; // How long to keep files before cleanup (default: 24 hours)
+ options.DownloadBaseUrl = "https://yourdomain.com"; // Base URL for download links in emails
+ options.ExcelFileCleanupOptions.Period = (int)TimeSpan.FromHours(24).TotalMilliseconds; // Interval of the cleanup worker (default: 24 hours)
+ options.ExcelFileCleanupOptions.CronExpression = "0 23 * * *"; // This Cron expression only works if Hangfire or Quartz is used for background workers.
+});
+```
+
+> Note: The `FileRetentionHours` value determines when files become eligible for deletion, but actual deletion depends on when the cleanup worker runs. If the worker hasn't run after the retention period expires, files will remain accessible. Therefore, `FileRetentionHours` represents the minimum intended retention time, but the actual retention time might be longer depending on the worker's execution schedule.
+
+These settings control where Excel export files are stored, how long they are kept before automatic cleanup, and what base URL is used in email download links.
+
+> You must use a valid [BLOB Storage Provider](https://abp.io/docs/latest/framework/infrastructure/blob-storing#blob-storage-providers) to use this feature.
+
## Internals
### Domain layer
@@ -156,6 +187,15 @@ Following custom repositories are defined for this module:
* `AuditLogsAppService` (implements `IAuditLogsAppService`): Implements the use cases of the audit logs management UI.
+#### Email Templates
+
+The module provides email templates for notifications:
+
+* `AuditLogExportCompleted`: Sent when an audit log export is successfully completed, including a download link.
+* `AuditLogExportFailed`: Sent when an audit log export fails, including error details.
+* `EntityChangeExportCompleted`: Sent when an entity change export is successfully completed, including a download link.
+* `EntityChangeExportFailed`: Sent when an entity change export fails, including error details.
+
### Database providers
#### Common
diff --git a/docs/en/release-info/release-notes.md b/docs/en/release-info/release-notes.md
index 4c6bec206e..ce35f8b87c 100644
--- a/docs/en/release-info/release-notes.md
+++ b/docs/en/release-info/release-notes.md
@@ -8,9 +8,9 @@ Also see the following notes about ABP releases:
* [Change logs for ABP pro packages](https://abp.io/pro-releases)
-## 9.2 (2025-03-25)
+## 9.2 (2025-06-02)
-This is currently a RC (release-candidate) and you can see the detailed **[blog post / announcement](https://abp.io/community/articles/abp-platform-9.2-rc-has-been-released-jpq072nh)** for the v9.2 release.
+See the detailed **[blog post / announcement](https://abp.io/community/articles/announcing-abp-9-2-stable-release-061qmtzb)** for the v9.2 release.
* Added `ApplicationName` Property to Isolate Background Jobs & Background Workers
* Docs Module: Added "Alternative Words" to Filter Items
diff --git a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/azure-deployment.md b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/azure-deployment.md
index 49d3750da2..566cf80e32 100644
--- a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/azure-deployment.md
+++ b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/azure-deployment.md
@@ -3,7 +3,7 @@
````json
//[doc-params]
{
- "UI": ["MVC", "Blazor", "BlazorServer", "NG"],
+ "UI": ["MVC", "Blazor", "BlazorServer", "BlazorWebApp", "NG"],
"DB": ["EF", "Mongo"],
"Tiered": ["Yes", "No"]
}
diff --git a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step1-create-azure-resources.md b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step1-create-azure-resources.md
index 4a4601486c..9fb4de254b 100644
--- a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step1-create-azure-resources.md
+++ b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step1-create-azure-resources.md
@@ -1,7 +1,7 @@
````json
//[doc-params]
{
- "UI": ["MVC", "Blazor", "BlazorServer", "NG"],
+ "UI": ["MVC", "Blazor", "BlazorServer", "BlazorWebApp", "NG"],
"DB": ["EF", "Mongo"],
"Tiered": ["Yes", "No"]
}
@@ -15,7 +15,9 @@ To create a new Azure Web App Service, choose one of the following options:
- [Create a new Azure Web App Service using the Terraform Template](terraform-web-app-service.md) (If you have experience with Terraform)
-{{ if UI == "MVC" && Tiered == "No" }}
+{{ if Tiered == "No" }}
+
+{{ if UI == "BlazorServer" || UI == "MVC" || UI == "BlazorWebApp"}}
### Create a new Azure Web App service using the Azure Portal
@@ -39,9 +41,102 @@ To create a new Azure Web App Service, choose one of the following options:

-{{else}}
+{{else if UI == 'NG'}}
+### Create a new Azure Static Web App for Angular using the Azure Portal
+
+1. Log in to the [Azure Portal](https://portal.azure.com/).
+
+2. Click the **Create a resource** button.
+
+3. Search for **Static Web App** and select **Static Web App** from the results.
+
+ 
+
+4. Click the **Create** button.
+
+5. Fill in the required fields and click the **Review + create** button.
+
+6. Click the **Create** button.
+
+ 
+
+7. Wait for the deployment to complete.
+
+ 
+
+### Create a new Azure Web App Service for API application
+
+1. You can create a new Azure Web App Service for an API application in the same resource group.
+
+2. Click the **Create** button on the top of the resource group page.
+
+3. Search for **Web App** and select **Web App** from the results.
+
+ 
+
+4. Click the **Create** button.
+
+5. Fill in the required fields and click the **Review + create** button.
+
+6. Click the **Create** button.
+
+ 
+
+7. Wait for the deployment to complete.
+
+ 
+
+{{ else }}
+
+### Create a new Azure Static Web App for Blazor using the Azure Portal
+
+1. Log in to the [Azure Portal](https://portal.azure.com/).
+
+2. Click the **Create a resource** button.
+
+3. Search for **Static Web App** and select **Static Web App** from the results.
+
+ 
+
+4. Click the **Create** button.
+
+5. Fill in the required fields and click the **Review + create** button.
+
+6. Click the **Create** button.
+
+ 
+
+7. Wait for the deployment to complete.
+
+ 
+
+### Create a new Azure Web App Service for API application
+
+1. You can create a new Azure Web App Service for an API application in the same resource group.
+
+2. Click the **Create** button on the top of the resource group page.
+
+3. Search for **Web App** and select **Web App** from the results.
+
+ 
+
+4. Click the **Create** button.
+
+5. Fill in the required fields and click the **Review + create** button.
+
+6. Click the **Create** button.
+
+ 
+
+7. Wait for the deployment to complete.
+
+ 
+
+{{end}}
+
+{{ else }}
-{{ if UI == "BlazorServer" || UI == "MVC" }}
+{{ if UI == "BlazorServer" || UI == "MVC" || UI == "BlazorWebApp"}}
### Create a new Azure Web App service using the Azure Portal
@@ -65,8 +160,7 @@ To create a new Azure Web App Service, choose one of the following options:

-{{ else if UI == 'NG' }}
-
+{{ else if UI == 'NG'}}
### Create a new Azure Static Web App for Angular using the Azure Portal
1. Log in to the [Azure Portal](https://portal.azure.com/).
@@ -89,7 +183,7 @@ To create a new Azure Web App Service, choose one of the following options:

-{{else}}
+{{ else }}
### Create a new Azure Static Web App for Blazor using the Azure Portal
@@ -111,8 +205,6 @@ To create a new Azure Web App Service, choose one of the following options:
7. Wait for the deployment to complete.
- 
-
{{end}}
### Create a new Azure Web App Service for API application
@@ -137,8 +229,6 @@ To create a new Azure Web App Service, choose one of the following options:

-{{ if Tiered == "Yes" && (UI == "MVC" || UI == "BlazorServer")}}
-
### Create a new Azure Web App Service for AuthServer application
Similar to the API application, you can create a new Azure Web App Service for an AuthServer application in the same resource group.
@@ -167,8 +257,6 @@ Same as above, but you only need to modify the name of the web app service to **
{{ end }}
-{{ end }}
-
## What's next?
- [Customizing the Azure Web App Service](step2-configuration-application.md)
diff --git a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step2-configuration-application.md b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step2-configuration-application.md
index 5f1ba5aafe..718446353a 100644
--- a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step2-configuration-application.md
+++ b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step2-configuration-application.md
@@ -1,7 +1,7 @@
````json
//[doc-params]
{
- "UI": ["MVC", "Blazor", "BlazorServer", "NG"],
+ "UI": ["MVC", "Blazor", "BlazorServer", "BlazorWebApp", "NG"],
"DB": ["EF", "Mongo"],
"Tiered": ["Yes", "No"]
}
@@ -9,17 +9,26 @@
## Step 2: Customizing the Configuration of the ABP Application
-- To customize the configuration of your ABP application, modify the `ConnectionString` values in every location throughout your project. The `ConnectionString` values are stored in the `appsettings.json` files.
+#### To customize the configuration of your ABP application
- This includes the following files:
-{{ if UI == "MVC" && Tiered == "No" }}
- **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.Web/appsettings.json**
-{{else}}
- **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.HttpApi.Host/appsettings.json**
-{{end}}
-{{if Tiered == "Yes"}}
+- Modify the `ConnectionString` values in every location throughout your project. The `ConnectionString` values are stored in the `appsettings.json` files.
+
+ * This includes the following files:
+
+ **./src/yourapp.DbMigrator/appsettings.json**
+{{ if Tiered == "No" }}
+{{ if UI == "MVC" }}
+ **./src/yourapp.Web/appsettings.json**
+{{ else if UI == "Blazor" || UI == "BlazorServer" || UI == "BlazorWebApp" }}
+ and **./src/yourapp.Blazor/appsettings.json**
+{{ end }}
+{{ if UI == "Blazor"|| UI == "NG" }}
+ **./src/yourapp.HttpApi.Host/appsettings.json**
+{{ end }}
+{{ else }}
+ **./src/yourapp.HttpApi.Host/appsettings.json**
**./src/yourapp.AuthServer/appsettings.json**
-{{end}}
+{{ end }}
```json
"ConnectionStrings": {
@@ -27,35 +36,42 @@
}
```
-{{ if UI == "MVC" }}
-
-{{if Tiered == "No"}}
- Modify the **yourapp.Web** URL in every location throughout your project, especially within the **./src/yourapp.Web/appsettings.json** and **./src/yourapp.DbMigrator/appsettings.json** files, to match your Azure Web App Service URL.
+ * This includes the following files:
+ **./src/yourapp.DbMigrator/appsettings.json**
+{{ if Tiered == "No" }}
+{{ if UI == "MVC" }}
+ **./src/yourapp.Web/appsettings.json**
+{{ else if UI == "Blazor" || UI == "BlazorServer" || UI == "BlazorWebApp" }}
+ and **./src/yourapp.Blazor/appsettings.json**
+{{ else }}
+ Modify the **`localhost:4200`** in every location throughout your project.
+ **./angular/src/environments/environment.prod.ts**
+{{ end }}
+{{ if UI == "Blazor"|| UI == "NG" }}
+ **./src/yourapp.HttpApi.Host/appsettings.json**
+{{ end }}
+{{ else }}
+{{ if UI == "MVC" }}
+ **./src/yourapp.Web/appsettings.json**
+{{ else if UI == "Blazor" || UI == "BlazorServer" || UI == "BlazorWebApp" }}
+ **./src/yourapp.Blazor/appsettings.json**
+{{ else }}
+ Modify the **`localhost:4200`** in every location throughout your project.
+ **./angular/src/environments/environment.prod.ts**
+{{ end }}
+ **./src/yourapp.AuthServer/appsettings.json**
+
```json
"App": {
"SelfUrl": "https://yourapp.azurewebsites.net"
}
```
-
-{{else}}
-
-- Modify the **yourapp.Web** URL in every location throughout your project.
-
- This includes the following files:
-
- **./src/yourapp.Web/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** , **./src/yourapp.HttpApi.Host/appsettings.json** and **./src/yourapp.AuthServer/appsettings.json**
-
-```json
-"App": {
- "SelfUrl": "https://yourapp.azurewebsites.net"
-}
-```
-
- Modify the **yourapp.ApiHost** URL in every location throughout your project.
- This includes the following files:
+ * This includes the following files:
**./src/yourapp.HttpApi.Host/appsettings.json** , **./src/yourapp.Web/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.AuthServer/appsettings.json**
@@ -67,7 +83,7 @@
- Modify the **yourapp.AuthServer** URL in every location throughout your project.
- This includes the following files:
+ * This includes the following files:
**./src/yourapp.Web/appsettings.json** , **./src/yourapp.AuthServer/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.HttpApi.Host/appsettings.json**
@@ -79,139 +95,7 @@
- Modify the **Redis__Configuration** URL in every location throughout your project.
- This includes the following files:
-
- **./src/yourapp.Web/appsettings.json** , **./src/yourapp.AuthServer/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.HttpApi.Host/appsettings.json**
-
-```json
-"Redis": {
- "Configuration": "redis-abpdemo.redis.cache.windows.net:6380,password={yourpassword},ssl=true,abortConnect=False"
- },
-```
-
-{{end}}
-
-{{ else if UI == "NG" }}
-
-- Modify the **`localhost:4200`** in every location throughout your project.
-
- This includes the following files:
-
- **./angular/src/environments/environment.prod.ts** , **./aspnet-core/src/yourapp.DbMigrator/appsettings.json** and **./aspnet-core/src/yourapp.HttpApi.Host/appsettings.json**
-
-```typescript
- application: {
- baseUrl: 'https://yourapp.azurestaticapps.net'
- }
-```
-
-- Modify the **yourapp.HttpApi.Host** URL in every location throughout your project.
-
- This includes the following files:
-
- **./angular/src/environments/environment.prod.ts** , **./aspnet-core/src/yourapp.DbMigrator/appsettings.json** and **./aspnet-core/src/yourapp.HttpApi.Host/appsettings.json**
-
-```json
- "App": {
- "SelfUrl": "https://yourApiHost.azurewebsites.net"
- }
-```
-
-{{ else if UI == "Blazor" }}
-
-- Modify the **yourapp.Blazor** URL in every location throughout your project.
-
- This includes the following files:
-
- **./src/yourapp.Blazor/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.HttpApi.Host/appsettings.json**
-
-```json
- "App": {
- "SelfUrl": "https://yourapp.azurewebsites.net"
- }
-```
-
-- Modify the **yourapp.HttpApi.Host** URL in every location throughout your project.
-
- This includes the following files:
-
- **./src/yourapp.Blazor/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.HttpApi.Host/appsettings.json**
-
-```json
- "App": {
- "SelfUrl": "https://yourApiHost.azurewebsites.net"
- }
-```
-
-{{ else }}
-
-{{if Tiered == "No"}}
-
-- Modify the **yourapp.Web** URL in every location throughout your project.
-
- This includes the following files:
-
- **./src/yourapp.Blazor/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.HttpApi.Host/appsettings.json**
-
-```json
-"App": {
- "SelfUrl": "https://yourapp.azurewebsites.net"
-}
-```
-
-- Modify the **yourapp.ApiHost** URL in every location throughout your project.
-
- This includes the following files:
-
- **./src/yourapp.HttpApi.Host/appsettings.json** , **./src/yourapp.Blazor/appsettings.json** and **./src/yourapp.DbMigrator/appsettings.json**
-
-```json
-"App": {
- "SelfUrl": "https://yourapp-apihost.azurewebsites.net"
-}
-```
-
-{{else}}
-
-- Modify the **yourapp.Web** URL in every location throughout your project.
-
- This includes the following files:
-
- **./src/yourapp.Blazor/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** , **./src/yourapp.HttpApi.Host/appsettings.json** and **./src/yourapp.AuthServer/appsettings.json**
-
-```json
-"App": {
- "SelfUrl": "https://yourapp.azurewebsites.net"
-}
-```
-
-- Modify the **yourapp.ApiHost** URL in every location throughout your project.
-
- This includes the following files:
-
- **./src/yourapp.HttpApi.Host/appsettings.json** , **./src/yourapp.Blazor/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.AuthServer/appsettings.json**
-
-```json
-"App": {
- "SelfUrl": "https://yourapp-apihost.azurewebsites.net"
-}
-```
-
-- Modify the **yourapp.AuthServer** URL in every location throughout your project.
-
- This includes the following files:
-
- **./src/yourapp.Blazor/appsettings.json** , **./src/yourapp.AuthServer/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.HttpApi.Host/appsettings.json**
-
-```json
-"App": {
- "SelfUrl": "https://yourapp-authserver.azurewebsites.net"
-}
-```
-
-- Modify the **Redis__Configuration** URL in every location throughout your project.
-
- This includes the following files:
+ * This includes the following files:
**./src/yourapp.Blazor/appsettings.json** , **./src/yourapp.AuthServer/appsettings.json** , **./src/yourapp.DbMigrator/appsettings.json** and **./src/yourapp.HttpApi.Host/appsettings.json**
@@ -220,11 +104,7 @@
"Configuration": "redis-abpdemo.redis.cache.windows.net:6380,password={yourpassword},ssl=true,abortConnect=False"
},
```
-
-{{end}}
-
-{{end}}
-
+{{ end }}
## What's next?
diff --git a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step3-deployment-github-action.md b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step3-deployment-github-action.md
index 14f2a48d66..42efc9cd7c 100644
--- a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step3-deployment-github-action.md
+++ b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step3-deployment-github-action.md
@@ -1,7 +1,7 @@
````json
//[doc-params]
{
- "UI": ["MVC", "Blazor", "BlazorServer", "NG"],
+ "UI": ["MVC", "Blazor", "BlazorServer", "BlazorWebApp", "NG"],
"DB": ["EF", "Mongo"],
"Tiered": ["Yes", "No"]
}
@@ -70,8 +70,8 @@ jobs:
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/apihost
working-directory: ./aspnet-core/src/Demo.AzureAppsAngular.HttpApi.Host # Replace with your project name
- - name: Generate authserver.pfx
- run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/apihost/authserver.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
+ - name: Generate openiddict.pfx
+ run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/apihost/openiddict.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
- name: Upload artifact for apihost
uses: actions/upload-artifact@v4
@@ -170,8 +170,8 @@ jobs:
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/apihost
working-directory: ./src/demo.BlazorNonTierEfCore.HttpApi.Host # Replace with your project name
- - name: Generate authserver.pfx
- run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/apihost/authserver.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
+ - name: Generate openiddict.pfx
+ run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/apihost/openiddict.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
- name: Upload artifact for apihost
uses: actions/upload-artifact@v4
@@ -234,6 +234,96 @@ jobs:
name: Build and deploy ASP.Net Core with BlazorServer to Azure Web App
+on:
+ push:
+ branches:
+ - main
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read #This is required for actions/checkout
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up .NET Core
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: '9.x'
+
+ - name: Install ABP CLI
+ run: |
+ dotnet tool install -g Volo.Abp.Cli
+ abp install-libs
+ shell: bash
+
+ - name: Build with dotnet
+ run: dotnet build --configuration Release
+
+ - name: Run migrations
+ run: dotnet run
+ working-directory: ./src/BlazorServer.NonTiered.DbMigrator
+
+ - name: dotnet publish
+ run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp
+ working-directory: './src/BlazorServer.NonTiered.Blazor'
+
+ - name: Generate openiddict.pfx
+ run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/myapp/openiddict.pfx -p 7015b85e-89fc-4346-bfd0-a67d81de824e # Replace with your password
+
+ - name: Upload artifact for deployment job
+ uses: actions/upload-artifact@v4
+ with:
+ name: .net-app
+ path: ${{env.DOTNET_ROOT}}/myapp
+
+ deploy:
+ runs-on: ubuntu-latest
+ needs: build
+ environment:
+ name: 'Production'
+ url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
+ permissions:
+ id-token: write #This is required for requesting the JWT
+ contents: read #This is required for actions/checkout
+
+ steps:
+ - name: Download artifact from build job
+ uses: actions/download-artifact@v4
+ with:
+ name: .net-app
+
+ - name: Login to Azure
+ uses: azure/login@v2
+ with:
+ client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_E74C791E153A4F38A50107C6B5341809 }}
+ tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_7EC2684BA1FB43F1B563AD3832D0A5AC }}
+ subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_81FB702F1C8F43388B145043765CC189 }}
+
+ - name: Deploy to Azure Web App
+ id: deploy-to-webapp
+ uses: azure/webapps-deploy@v3
+ with:
+ app-name: 'abp-blazor-webapp-layered'
+ slot-name: 'Production'
+ package: .
+```
+
+}%}
+
+{{ else }}
+
+{%{
+
+```yaml
+# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
+# More GitHub Actions for Azure: https://github.com/Azure/actions
+
+name: Build and deploy ASP.Net Core with BlazorServer to Azure Web App
+
on:
push:
branches:
@@ -266,17 +356,27 @@ jobs:
run: dotnet run -- "${{ secrets.CONNECTION_STRING }}" # Set your connection string as a secret in your repository settings
working-directory: ./src/blazorservertierdemo.DbMigrator # Replace with your project name
+ - name: dotnet publish authserver
+ run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/authserver
+ working-directory: ./src/blazorservertierdemo.AuthServer # Replace with your project name
+
+ - name: Generate openiddict.pfx
+ run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/authserver/openiddict.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
+
- name: dotnet publish apihost
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/apihost
working-directory: ./src/blazorservertierdemo.HttpApi.Host # Replace with your project name
- - name: Generate authserver.pfx
- run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/apihost/authserver.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
-
- name: dotnet publish webapp
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/webapp
working-directory: ./src/blazorservertierdemo.Blazor # Replace with your project name
+ - name: Upload artifact for authserver
+ uses: actions/upload-artifact@v4
+ with:
+ name: .net-authserver
+ path: ${{env.DOTNET_ROOT}}/authserver
+
- name: Upload artifact for apihost
uses: actions/upload-artifact@v4
with:
@@ -295,7 +395,23 @@ jobs:
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp-3.outputs.webapp-url }}
+
steps:
+ - name: Download artifact from authserver
+ uses: actions/download-artifact@v4
+ with:
+ name: .net-authserver
+ path: ./authserver
+
+ - name: Deploy authserver
+ id: deploy-to-webapp
+ uses: azure/webapps-deploy@v3
+ with:
+ app-name: 'authserver-blazorserver' # Replace with your app name
+ slot-name: 'Production'
+ publish-profile: ${{ secrets.authserverblazorserverPublishSettings }} # Set your Azure Web App to publish your profile as a secret in your repository settings
+ package: ./authserver
+
- name: Download artifact from apihost
uses: actions/download-artifact@v4
with:
@@ -323,8 +439,101 @@ jobs:
with:
app-name: 'webapp-blazorserver' # Replace with your app name
slot-name: 'Production'
- publish-profile: ${{ secrets.webappblazorserverPublishSettings }} # Set your Azure Web App to publish your profile as a secret in your repository settings
- package: ./webapp
+ publish-profile: ${{ secrets.webappblazorserverPublishSettings }} # Set your Azure Web App publish your profile as a secret in your repository settings
+```
+
+}%}
+
+{{end}}
+
+{{ else if UI == "BlazorWebApp" }}
+
+{{ if Tiered == "No" }}
+
+{%{
+
+```yaml
+# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
+# More GitHub Actions for Azure: https://github.com/Azure/actions
+
+name: Build and deploy ASP.Net Core app to Azure Web App - abp-blazor-webapp-layered
+
+on:
+ push:
+ branches:
+ - main
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read #This is required for actions/checkout
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up .NET Core
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: '9.x'
+
+ - name: Install ABP CLI
+ run: |
+ dotnet tool install -g Volo.Abp.Cli
+ abp install-libs
+ shell: bash
+
+ - name: Build with dotnet
+ run: dotnet build --configuration Release
+
+ - name: Run migrations
+ run: dotnet run
+ working-directory: ./src/BlzWapp.NonTiered.DbMigrator
+
+ - name: dotnet publish
+ run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp
+ working-directory: './src/BlzWapp.NonTiered.Blazor'
+
+ - name: Generate openiddict.pfx
+ run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/myapp/openiddict.pfx -p 7015b85e-89fc-4346-bfd0-a67d81de824e # Replace with your password
+
+ - name: Upload artifact for deployment job
+ uses: actions/upload-artifact@v4
+ with:
+ name: .net-app
+ path: ${{env.DOTNET_ROOT}}/myapp
+
+ deploy:
+ runs-on: ubuntu-latest
+ needs: build
+ environment:
+ name: 'Production'
+ url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
+ permissions:
+ id-token: write #This is required for requesting the JWT
+ contents: read #This is required for actions/checkout
+
+ steps:
+ - name: Download artifact from build job
+ uses: actions/download-artifact@v4
+ with:
+ name: .net-app
+
+ - name: Login to Azure
+ uses: azure/login@v2
+ with:
+ client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_E74C791E153A4F38A50107C6B5341809 }}
+ tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_7EC2684BA1FB43F1B563AD3832D0A5AC }}
+ subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_81FB702F1C8F43388B145043765CC189 }}
+
+ - name: Deploy to Azure Web App
+ id: deploy-to-webapp
+ uses: azure/webapps-deploy@v3
+ with:
+ app-name: 'abp-blazor-webapp-layered'
+ slot-name: 'Production'
+ package: .
```
}%}
@@ -337,7 +546,7 @@ jobs:
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
-name: Build and deploy ASP.Net Core with BlazorServer to Azure Web App
+name: Build and deploy ASP.Net Core with BlazorWebApp to Azure Web App
on:
push:
@@ -369,22 +578,22 @@ jobs:
- name: Run migrations
run: dotnet run -- "${{ secrets.CONNECTION_STRING }}" # Set your connection string as a secret in your repository settings
- working-directory: ./src/blazorservertierdemo.DbMigrator # Replace with your project name
+ working-directory: ./src/BlzWapp.DbMigrator # Replace with your project name
- name: dotnet publish authserver
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/authserver
- working-directory: ./src/blazorservertierdemo.AuthServer # Replace with your project name
+ working-directory: ./src/BlzWapp.AuthServer # Replace with your project name
- - name: Generate authserver.pfx
- run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/authserver/authserver.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
+ - name: Generate openiddict.pfx
+ run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/authserver/openiddict.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
- name: dotnet publish apihost
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/apihost
- working-directory: ./src/blazorservertierdemo.HttpApi.Host # Replace with your project name
+ working-directory: ./src/BlzWapp.HttpApi.Host # Replace with your project name
- name: dotnet publish webapp
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/webapp
- working-directory: ./src/blazorservertierdemo.Blazor # Replace with your project name
+ working-directory: ./src/BlzWapp.Blazor # Replace with your project name
- name: Upload artifact for authserver
uses: actions/upload-artifact@v4
@@ -422,9 +631,9 @@ jobs:
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
- app-name: 'authserver-blazorserver' # Replace with your app name
+ app-name: 'authserver-blazorwebapp' # Replace with your app name
slot-name: 'Production'
- publish-profile: ${{ secrets.authserverblazorserverPublishSettings }} # Set your Azure Web App to publish your profile as a secret in your repository settings
+ publish-profile: ${{ secrets.authserverblazorwebappPublishSettings }} # Set your Azure Web App to publish your profile as a secret in your repository settings
package: ./authserver
- name: Download artifact from apihost
@@ -437,9 +646,9 @@ jobs:
id: deploy-to-webapp-2
uses: azure/webapps-deploy@v3
with:
- app-name: 'apihost-blazorserver' # Replace with your app name
+ app-name: 'apihost-blazorwebapp' # Replace with your app name
slot-name: 'Production'
- publish-profile: ${{ secrets.apihostblazorserverPublishSettings }} # Set your Azure Web App to publish your profile as a secret in your repository settings
+ publish-profile: ${{ secrets.apihostblazorwebappPublishSettings }} # Set your Azure Web App to publish your profile as a secret in your repository settings
package: ./apihost
- name: Download artifact from webapp
@@ -452,9 +661,9 @@ jobs:
id: deploy-to-webapp-3
uses: azure/webapps-deploy@v3
with:
- app-name: 'webapp-blazorserver' # Replace with your app name
+ app-name: 'webapp-blazorwebapp' # Replace with your app name
slot-name: 'Production'
- publish-profile: ${{ secrets.webappblazorserverPublishSettings }} # Set your Azure Web App publish your profile as a secret in your repository settings
+ publish-profile: ${{ secrets.webappblazorwebappPublishSettings }} # Set your Azure Web App publish your profile as a secret in your repository settings
```
}%}
@@ -509,8 +718,8 @@ jobs:
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp
working-directory: ./src/yourapp.Web # Replace with your project name
- - name: Generate authserver.pfx
- run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/myapp/authserver.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
+ - name: Generate openiddict.pfx
+ run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/myapp/openiddict.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v4
@@ -589,8 +798,8 @@ jobs:
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/authserver
working-directory: ./src/mvctierdemo.AuthServer # Replace with your project name
- - name: Generate authserver.pfx
- run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/authserver/authserver.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
+ - name: Generate openiddict.pfx
+ run: dotnet dev-certs https -v -ep ${{env.DOTNET_ROOT}}/authserver/openiddict.pfx -p 2D7AA457-5D33-48D6-936F-C48E5EF468ED # Replace with your password
- name: dotnet publish apihost
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/apihost
diff --git a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/terraform-web-app-service.md b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/terraform-web-app-service.md
index c1678c4961..7b346d0915 100644
--- a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/terraform-web-app-service.md
+++ b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/terraform-web-app-service.md
@@ -3,7 +3,7 @@
````json
//[doc-params]
{
- "UI": ["MVC", "Blazor", "BlazorServer", "NG"],
+ "UI": ["MVC", "Blazor", "BlazorServer", "BlazorWebApp", "NG"],
"DB": ["EF", "Mongo"],
"Tiered": ["Yes", "No"]
}
@@ -224,6 +224,53 @@ resource "azurerm_service_plan" "appserviceplan" {
sku_name = "B3"
}
+resource "azurerm_linux_web_app" "webapp" {
+ name = "webapp-blazorserver"
+ location = azurerm_resource_group.rg.location
+ resource_group_name = azurerm_resource_group.rg.name
+ service_plan_id = azurerm_service_plan.appserviceplan.id
+ https_only = true
+ site_config {
+ application_stack {
+ dotnet_version = "6.0"
+ }
+ minimum_tls_version = "1.2"
+ }
+}
+```
+
+ {{ else }}
+
+```terraform
+# Configure the Azure provider
+terraform {
+ required_providers {
+ azurerm = {
+ source = "hashicorp/azurerm"
+ version = "~> 3.0.0"
+ }
+ }
+ required_version = ">= 0.14.9"
+}
+provider "azurerm" {
+ features {}
+}
+
+# Create the resource group
+resource "azurerm_resource_group" "rg" {
+ name = "blazorserver-app-tier-rg"
+ location = "westeurope"
+}
+
+# Create the Linux App Service Plan
+resource "azurerm_service_plan" "appserviceplan" {
+ name = "blazorserver-app-tier-plan"
+ location = azurerm_resource_group.rg.location
+ resource_group_name = azurerm_resource_group.rg.name
+ os_type = "Linux"
+ sku_name = "B3"
+}
+
# Create the web app, pass in the App Service Plan ID
resource "azurerm_linux_web_app" "authserver" {
name = "authserver-blazorserver"
@@ -237,6 +284,9 @@ resource "azurerm_linux_web_app" "authserver" {
}
minimum_tls_version = "1.2"
}
+ app_settings = {
+ "Redis__Configuration" = azurerm_redis_cache.redis.primary_connection_string
+ }
}
resource "azurerm_linux_web_app" "apihost" {
name = "apihost-blazorserver"
@@ -250,6 +300,9 @@ resource "azurerm_linux_web_app" "apihost" {
}
minimum_tls_version = "1.2"
}
+ app_settings = {
+ "Redis__Configuration" = azurerm_redis_cache.redis.primary_connection_string
+ }
}
resource "azurerm_linux_web_app" "webapp" {
name = "webapp-blazorserver"
@@ -263,6 +316,77 @@ resource "azurerm_linux_web_app" "webapp" {
}
minimum_tls_version = "1.2"
}
+ app_settings = {
+ "Redis__Configuration" = azurerm_redis_cache.redis.primary_connection_string
+ }
+}
+
+resource "azurerm_redis_cache" "redis" {
+ name = "redis-blazorserver"
+ location = azurerm_resource_group.rg.location
+ resource_group_name = azurerm_resource_group.rg.name
+ capacity = 0
+ family = "C"
+ sku_name = "Basic"
+ enable_non_ssl_port = false
+ minimum_tls_version = "1.2"
+
+ redis_configuration {
+ maxmemory_reserved = 2
+ maxmemory_delta = 2
+ maxmemory_policy = "volatile-lru"
+ }
+}
+```
+
+ {{end}}
+
+{{ else if UI == "BlazorWebApp" }}
+
+ {{if Tiered == "No"}}
+
+```terraform
+# Configure the Azure provider
+terraform {
+ required_providers {
+ azurerm = {
+ source = "hashicorp/azurerm"
+ version = "~> 3.0.0"
+ }
+ }
+ required_version = ">= 0.14.9"
+}
+provider "azurerm" {
+ features {}
+}
+
+# Create the resource group
+resource "azurerm_resource_group" "rg" {
+ name = "blazorwebapp-app-nontier-rg"
+ location = "westeurope"
+}
+
+# Create the Linux App Service Plan
+resource "azurerm_service_plan" "appserviceplan" {
+ name = "blazorwebapp-app-nontier-plan"
+ location = azurerm_resource_group.rg.location
+ resource_group_name = azurerm_resource_group.rg.name
+ os_type = "Linux"
+ sku_name = "B3"
+}
+
+resource "azurerm_linux_web_app" "webapp" {
+ name = "webapp-blazorwebapp"
+ location = azurerm_resource_group.rg.location
+ resource_group_name = azurerm_resource_group.rg.name
+ service_plan_id = azurerm_service_plan.appserviceplan.id
+ https_only = true
+ site_config {
+ application_stack {
+ dotnet_version = "6.0"
+ }
+ minimum_tls_version = "1.2"
+ }
}
```
@@ -285,13 +409,13 @@ provider "azurerm" {
# Create the resource group
resource "azurerm_resource_group" "rg" {
- name = "blazorserver-app-tier-rg"
+ name = "blazorwebapp-app-tier-rg"
location = "westeurope"
}
# Create the Linux App Service Plan
resource "azurerm_service_plan" "appserviceplan" {
- name = "blazorserver-app-tier-plan"
+ name = "blazorwebapp-app-tier-plan"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
os_type = "Linux"
@@ -300,7 +424,7 @@ resource "azurerm_service_plan" "appserviceplan" {
# Create the web app, pass in the App Service Plan ID
resource "azurerm_linux_web_app" "authserver" {
- name = "authserver-blazorserver"
+ name = "authserver-blazorwebapp"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
@@ -316,7 +440,7 @@ resource "azurerm_linux_web_app" "authserver" {
}
}
resource "azurerm_linux_web_app" "apihost" {
- name = "apihost-blazorserver"
+ name = "apihost-blazorwebapp"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
@@ -332,7 +456,7 @@ resource "azurerm_linux_web_app" "apihost" {
}
}
resource "azurerm_linux_web_app" "webapp" {
- name = "webapp-blazorserver"
+ name = "webapp-blazorwebapp"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
@@ -349,7 +473,7 @@ resource "azurerm_linux_web_app" "webapp" {
}
resource "azurerm_redis_cache" "redis" {
- name = "redis-blazorserver"
+ name = "redis-blazorwebapp"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
capacity = 0
diff --git a/docs/en/tutorials/microservice/part-01.md b/docs/en/tutorials/microservice/part-01.md
index d843e744ca..b2d0dade7f 100644
--- a/docs/en/tutorials/microservice/part-01.md
+++ b/docs/en/tutorials/microservice/part-01.md
@@ -21,7 +21,7 @@ Follow the *[Get Started](../../get-started/microservice.md)* guide to create a
You can select the other options based on your preference.
-> **Please complete the *[Get Started](../../get-started/layered-web-application.md)* guide and run the web application before going further.** You can skip the sections after the *Running the Solution* section, if you don't prefer to complete all.
+> **Please complete the *[Get Started](../../get-started/microservice.md)* guide and run the applications before going further.** You can skip the sections after the *Running the Solution* section, if you don't prefer to complete all.
The initial solution structure should be like the following in ABP Studio's *[Solution Explorer](../../studio/solution-explorer.md)*:
@@ -37,4 +37,4 @@ You can see the *[Microservice Solution Template](../../solution-templates/micro
## Summary
-In this part, you've created the initial microservice solution, which already contains a few infrastructure services. We will create our first business service in the [next part](part-02.md).
\ No newline at end of file
+In this part, you've created the initial microservice solution, which already contains a few infrastructure services. We will create our first business service in the [next part](part-02.md).
diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs
index 6b2fe0d98f..de95e4d4cb 100644
--- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs
@@ -85,10 +85,10 @@ public abstract class AbpComponentBase : OwningComponentBase
if (ObjectMapperContext == null)
{
- return LazyGetRequiredService(ref _objectMapper)!;
+ return LazyGetNonScopedRequiredService(ref _objectMapper)!;
}
- return LazyGetRequiredService(
+ return LazyGetNonScopedRequiredService(
typeof(IObjectMapper<>).MakeGenericType(ObjectMapperContext),
ref _objectMapper
)!;
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js
index d232dbd28a..f8c9543e0d 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js
@@ -104,6 +104,7 @@ $.validator.defaults.ignore = ''; //TODO: Would be better if we can apply only f
}
}
+ var focusElement = null;
if (!options.focusElement) {
//focuses first element if it's a typeable input.
var $firstVisibleInput = _$modal.find('input:not([type=hidden]):first');
@@ -120,11 +121,18 @@ $.validator.defaults.ignore = ''; //TODO: Would be better if we can apply only f
}
$firstVisibleInput.focus();
+ focusElement = $firstVisibleInput;
} else if (typeof options.focusElement === 'function') {
- var focusElement = options.focusElement();
+ focusElement = options.focusElement();
focusElement.focus();
} else if (typeof options.focusElement === 'string') {
- $(options.focusElement).focus();
+ focusElement = $(options.focusElement);
+ focusElement.focus();
+ }
+
+ if (focusElement && $(focusElement).is('input')) {
+ var value = focusElement.val();
+ focusElement[0].setSelectionRange(value.length, value.length);
}
});
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js
index e10ceefbf9..d05c8dab37 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js
@@ -438,6 +438,13 @@
date = date.local();
}
if (options.isIso) {
+ if(abp.clock.supportsMultipleTimezone()){
+ var timeZone = abp.clock.timeZone();
+ if(timeZone){
+ return abp.clock.normalizeToString(date.toDate());
+ }
+ }
+
return date.toISOString();
}
return date.locale('en').format(options.inputDateFormat)
diff --git a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/DefaultAbpRequestLocalizationOptionsProvider.cs b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/DefaultAbpRequestLocalizationOptionsProvider.cs
index bd767f93fb..cf9f128852 100644
--- a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/DefaultAbpRequestLocalizationOptionsProvider.cs
+++ b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/DefaultAbpRequestLocalizationOptionsProvider.cs
@@ -4,7 +4,6 @@ using System.Globalization;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using DeviceDetectorNET;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.DependencyInjection;
diff --git a/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj b/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj
index d88febbfe9..886e1ed700 100644
--- a/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj
+++ b/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj
@@ -31,7 +31,7 @@
-
+
diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs
index 64fab10ac6..405e49753c 100644
--- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs
+++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs
@@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Hosting.StaticWebAssets;
using Microsoft.AspNetCore.RequestLocalization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
+using MyCSharp.HttpUserAgentParser.DependencyInjection;
using Volo.Abp.AspNetCore.Auditing;
using Volo.Abp.AspNetCore.VirtualFileSystem;
using Volo.Abp.Auditing;
@@ -59,6 +60,8 @@ public class AbpAspNetCoreModule : AbpModule
context.Services.AddAbpDynamicOptions();
StaticWebAssetsLoader.UseStaticWebAssets(context.Services.GetHostingEnvironment(), context.Services.GetConfiguration());
+
+ context.Services.AddHttpUserAgentCachedParser();
}
private static void AddAspNetServices(IServiceCollection services)
diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/WebClientInfo/HttpContextWebClientInfoProvider.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/WebClientInfo/HttpContextWebClientInfoProvider.cs
index 6e450efbcd..b34a9752f7 100644
--- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/WebClientInfo/HttpContextWebClientInfoProvider.cs
+++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/WebClientInfo/HttpContextWebClientInfoProvider.cs
@@ -1,7 +1,8 @@
using System;
-using DeviceDetectorNET;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
+using MyCSharp.HttpUserAgentParser;
+using MyCSharp.HttpUserAgentParser.Providers;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.WebClientInfo;
@@ -11,13 +12,16 @@ public class HttpContextWebClientInfoProvider : IWebClientInfoProvider, ITransie
{
protected ILogger Logger { get; }
protected IHttpContextAccessor HttpContextAccessor { get; }
+ protected IHttpUserAgentParserProvider HttpUserAgentParser { get; }
public HttpContextWebClientInfoProvider(
ILogger logger,
- IHttpContextAccessor httpContextAccessor)
+ IHttpContextAccessor httpContextAccessor,
+ IHttpUserAgentParserProvider httpUserAgentParser)
{
Logger = logger;
HttpContextAccessor = httpContextAccessor;
+ HttpUserAgentParser = httpUserAgentParser;
}
public string? BrowserInfo => GetBrowserInfo();
@@ -46,27 +50,21 @@ public class HttpContextWebClientInfoProvider : IWebClientInfoProvider, ITransie
protected virtual string? GetDeviceInfo()
{
- string? deviceInfo = null;
- var deviceDetector = new DeviceDetector(GetBrowserInfo());
- deviceDetector.Parse();
- if (!deviceDetector.IsParsed())
+ var browserInfo = GetBrowserInfo();
+ if (browserInfo.IsNullOrWhiteSpace())
{
- return deviceInfo;
- }
-
- var osInfo = deviceDetector.GetOs();
- if (osInfo.Success)
- {
- deviceInfo = osInfo.Match.Name;
+ return null;
}
- var clientInfo = deviceDetector.GetClient();
- if (clientInfo.Success)
+ var httpUserAgentInformation = HttpUserAgentParser.Parse(browserInfo);
+ switch (httpUserAgentInformation.Type)
{
- deviceInfo = deviceInfo.IsNullOrWhiteSpace() ? clientInfo.Match.Name : deviceInfo + " " + clientInfo.Match.Name;
+ case HttpUserAgentType.Browser:
+ case HttpUserAgentType.Robot:
+ return (httpUserAgentInformation.Platform.HasValue ? httpUserAgentInformation.Platform.Value.Name + " " : string.Empty) + httpUserAgentInformation.Name;
+ case HttpUserAgentType.Unknown:
+ default:
+ return httpUserAgentInformation.UserAgent;
}
-
- return deviceInfo;
}
-
}
diff --git a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/AbpBackgroundJobOptions.cs b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/AbpBackgroundJobOptions.cs
index 6b3aaa52b8..1a6cb6a9e9 100644
--- a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/AbpBackgroundJobOptions.cs
+++ b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/AbpBackgroundJobOptions.cs
@@ -14,10 +14,17 @@ public class AbpBackgroundJobOptions
///
public bool IsJobExecutionEnabled { get; set; } = true;
+ ///
+ /// The delegate to get the name of a background job.
+ /// Default: .
+ ///
+ public Func GetBackgroundJobName { get; set; }
+
public AbpBackgroundJobOptions()
{
_jobConfigurationsByArgsType = new Dictionary();
_jobConfigurationsByName = new Dictionary();
+ GetBackgroundJobName = BackgroundJobNameAttribute.GetName;
}
public BackgroundJobConfiguration GetJob()
@@ -61,7 +68,7 @@ public class AbpBackgroundJobOptions
public void AddJob(Type jobType)
{
- AddJob(new BackgroundJobConfiguration(jobType));
+ AddJob(new BackgroundJobConfiguration(jobType, GetBackgroundJobName(BackgroundJobArgsHelper.GetJobArgsType(jobType))));
}
public void AddJob(BackgroundJobConfiguration jobConfiguration)
diff --git a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs
index d9f08da2e7..c17ccdc443 100644
--- a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs
+++ b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobConfiguration.cs
@@ -10,10 +10,10 @@ public class BackgroundJobConfiguration
public string JobName { get; }
- public BackgroundJobConfiguration(Type jobType)
+ public BackgroundJobConfiguration(Type jobType, string jobName)
{
JobType = jobType;
ArgsType = BackgroundJobArgsHelper.GetJobArgsType(jobType);
- JobName = BackgroundJobNameAttribute.GetName(ArgsType);
+ JobName = jobName;
}
}
diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs
index 68851c5043..586b66b5d1 100644
--- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs
+++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs
@@ -18,6 +18,7 @@ public class DefaultBackgroundJobManager : IBackgroundJobManager, ITransientDepe
protected IBackgroundJobSerializer Serializer { get; }
protected IGuidGenerator GuidGenerator { get; }
protected IBackgroundJobStore Store { get; }
+ protected IOptions BackgroundJobOptions { get; }
protected IOptions BackgroundJobWorkerOptions { get; }
public DefaultBackgroundJobManager(
@@ -25,18 +26,20 @@ public class DefaultBackgroundJobManager : IBackgroundJobManager, ITransientDepe
IBackgroundJobSerializer serializer,
IBackgroundJobStore store,
IGuidGenerator guidGenerator,
+ IOptions backgroundJobOptions,
IOptions backgroundJobWorkerOptions)
{
Clock = clock;
Serializer = serializer;
GuidGenerator = guidGenerator;
+ BackgroundJobOptions = backgroundJobOptions;
BackgroundJobWorkerOptions = backgroundJobWorkerOptions;
Store = store;
}
public virtual async Task EnqueueAsync(TArgs args, BackgroundJobPriority priority = BackgroundJobPriority.Normal, TimeSpan? delay = null)
{
- var jobName = BackgroundJobNameAttribute.GetName();
+ var jobName = BackgroundJobOptions.Value.GetBackgroundJobName(typeof(TArgs));
var jobId = await EnqueueAsync(jobName, args!, priority, delay);
return jobId.ToString();
}
diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs
index 1ed3561cac..fe9a8ad983 100644
--- a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs
@@ -1,14 +1,15 @@
using System;
+using System.Linq.Expressions;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Hangfire;
+using Hangfire.Common;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
using Volo.Abp.DynamicProxy;
using Volo.Abp.Hangfire;
-using Volo.Abp.Threading;
namespace Volo.Abp.BackgroundWorkers.Hangfire;
@@ -55,40 +56,40 @@ public class HangfireBackgroundWorkerManager : BackgroundWorkerManager, ISinglet
}
case AsyncPeriodicBackgroundWorkerBase or PeriodicBackgroundWorkerBase:
{
- var timer = worker.GetType().GetProperty("Timer", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(worker);
- var period = worker is AsyncPeriodicBackgroundWorkerBase ? ((AbpAsyncTimer?)timer)?.Period : ((AbpTimer?)timer)?.Period;
+ int? period = null;
+ string? CronExpression = null;
- if (period == null)
+ if (worker is AsyncPeriodicBackgroundWorkerBase asyncPeriodicBackgroundWorkerBase)
{
- return;
+ period = asyncPeriodicBackgroundWorkerBase.Period;
+ CronExpression = asyncPeriodicBackgroundWorkerBase.CronExpression;
}
-
- var adapterType = typeof(HangfirePeriodicBackgroundWorkerAdapter<>).MakeGenericType(ProxyHelper.GetUnProxiedType(worker));
- var workerAdapter = (Activator.CreateInstance(adapterType) as IHangfireBackgroundWorker)!;
-
- if (workerAdapter.RecurringJobId.IsNullOrWhiteSpace())
+ else if (worker is PeriodicBackgroundWorkerBase periodicBackgroundWorkerBase)
{
- RecurringJob.AddOrUpdate(
- () => workerAdapter.DoWorkAsync(cancellationToken),
- GetCron(period.Value),
- workerAdapter.TimeZone ,
- workerAdapter.Queue.IsNullOrWhiteSpace() ? defaultQueue : defaultQueuePrefix + workerAdapter.Queue);
+ period = periodicBackgroundWorkerBase.Period;
+ CronExpression = periodicBackgroundWorkerBase.CronExpression;
}
- else
- {
- RecurringJob.AddOrUpdate(
- workerAdapter.RecurringJobId,
- workerAdapter.Queue.IsNullOrWhiteSpace() ? defaultQueue : defaultQueuePrefix + workerAdapter.Queue,
- () => workerAdapter.DoWorkAsync(cancellationToken),
- GetCron(period.Value),
- new RecurringJobOptions
- {
- TimeZone = workerAdapter.TimeZone
- });
+ if (period == null && CronExpression.IsNullOrWhiteSpace())
+ {
+ return;
}
+ var adapterType = typeof(HangfirePeriodicBackgroundWorkerAdapter<>).MakeGenericType(ProxyHelper.GetUnProxiedType(worker));
+ var workerAdapter = (Activator.CreateInstance(adapterType) as IHangfireBackgroundWorker)!;
+
+ Expression> methodCall = () => workerAdapter.DoWorkAsync(cancellationToken);
+ var recurringJobId = !workerAdapter.RecurringJobId.IsNullOrWhiteSpace() ? workerAdapter.RecurringJobId : GetRecurringJobId(worker, methodCall);
+ RecurringJob.AddOrUpdate(
+ recurringJobId,
+ workerAdapter.Queue.IsNullOrWhiteSpace() ? defaultQueue : defaultQueuePrefix + workerAdapter.Queue,
+ methodCall,
+ CronExpression ?? GetCron(period!.Value),
+ new RecurringJobOptions
+ {
+ TimeZone = workerAdapter.TimeZone
+ });
break;
}
default:
@@ -97,6 +98,24 @@ public class HangfireBackgroundWorkerManager : BackgroundWorkerManager, ISinglet
}
}
+ private readonly static MethodInfo? GetRecurringJobIdMethodInfo = typeof(RecurringJob).GetMethod("GetRecurringJobId", BindingFlags.NonPublic | BindingFlags.Static);
+ protected virtual string? GetRecurringJobId(IBackgroundWorker worker, Expression> methodCall)
+ {
+ string? recurringJobId = null;
+ if (GetRecurringJobIdMethodInfo != null)
+ {
+ var job = Job.FromExpression(methodCall);
+ recurringJobId = (string)GetRecurringJobIdMethodInfo.Invoke(null, [job])!;
+ }
+
+ if (recurringJobId.IsNullOrWhiteSpace())
+ {
+ recurringJobId = $"HangfirePeriodicBackgroundWorkerAdapter<{worker.GetType().Name}>.DoWorkAsync";
+ }
+
+ return recurringJobId;
+ }
+
protected virtual string GetCron(int period)
{
var time = TimeSpan.FromMilliseconds(period);
@@ -120,8 +139,7 @@ public class HangfireBackgroundWorkerManager : BackgroundWorkerManager, ISinglet
}
else
{
- throw new AbpException(
- $"Cannot convert period: {period} to cron expression, use HangfireBackgroundWorkerBase to define worker");
+ throw new AbpException($"Cannot convert period: {period} to cron expression, use HangfireBackgroundWorkerBase to define worker");
}
return cron;
diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzPeriodicBackgroundWorkerAdapter.cs b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzPeriodicBackgroundWorkerAdapter.cs
index 522ef7a807..2967b1a508 100644
--- a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzPeriodicBackgroundWorkerAdapter.cs
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzPeriodicBackgroundWorkerAdapter.cs
@@ -3,8 +3,6 @@ using System.Reflection;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Quartz;
-using Volo.Abp.DynamicProxy;
-using Volo.Abp.Threading;
namespace Volo.Abp.BackgroundWorkers.Quartz;
@@ -25,28 +23,23 @@ public class QuartzPeriodicBackgroundWorkerAdapter : QuartzBackgroundWo
}
- public void BuildWorker(IBackgroundWorker worker)
+ public virtual void BuildWorker(IBackgroundWorker worker)
{
- int? period;
- var workerType = ProxyHelper.GetUnProxiedType(worker);
+ int? period = null;
+ string? CronExpression = null;
- if (worker is AsyncPeriodicBackgroundWorkerBase or PeriodicBackgroundWorkerBase)
+ if (worker is AsyncPeriodicBackgroundWorkerBase asyncPeriodicBackgroundWorkerBase)
{
- if (typeof(TWorker) != workerType)
- {
- throw new ArgumentException($"{nameof(worker)} type is different from the generic type");
- }
-
- var timer = workerType.GetProperty("Timer", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(worker);
-
- period = worker is AsyncPeriodicBackgroundWorkerBase ? ((AbpAsyncTimer?)timer)?.Period : ((AbpTimer?)timer)?.Period;
+ period = asyncPeriodicBackgroundWorkerBase.Period;
+ CronExpression = asyncPeriodicBackgroundWorkerBase.CronExpression;
}
- else
+ else if (worker is PeriodicBackgroundWorkerBase periodicBackgroundWorkerBase)
{
- return;
+ period = periodicBackgroundWorkerBase.Period;
+ CronExpression = periodicBackgroundWorkerBase.CronExpression;
}
- if (period == null)
+ if (period == null && CronExpression.IsNullOrWhiteSpace())
{
return;
}
@@ -55,10 +48,21 @@ public class QuartzPeriodicBackgroundWorkerAdapter : QuartzBackgroundWo
.Create>()
.WithIdentity(BackgroundWorkerNameAttribute.GetName())
.Build();
- Trigger = TriggerBuilder.Create()
- .WithIdentity(BackgroundWorkerNameAttribute.GetName())
- .WithSimpleSchedule(builder => builder.WithInterval(TimeSpan.FromMilliseconds(period.Value)).RepeatForever())
- .Build();
+
+ var triggerBuilder = TriggerBuilder.Create()
+ .ForJob(JobDetail)
+ .WithIdentity(BackgroundWorkerNameAttribute.GetName());
+
+ if (!CronExpression.IsNullOrWhiteSpace())
+ {
+ triggerBuilder.WithCronSchedule(CronExpression);
+ }
+ else
+ {
+ triggerBuilder.WithSimpleSchedule(builder => builder.WithInterval(TimeSpan.FromMilliseconds(period!.Value)).RepeatForever());
+ }
+
+ Trigger = triggerBuilder.Build();
}
public async override Task Execute(IJobExecutionContext context)
diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/AsyncPeriodicBackgroundWorkerBase.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/AsyncPeriodicBackgroundWorkerBase.cs
index 37911feae5..781d3535ba 100644
--- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/AsyncPeriodicBackgroundWorkerBase.cs
+++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/AsyncPeriodicBackgroundWorkerBase.cs
@@ -13,6 +13,11 @@ public abstract class AsyncPeriodicBackgroundWorkerBase : BackgroundWorkerBase
protected IServiceScopeFactory ServiceScopeFactory { get; }
protected AbpAsyncTimer Timer { get; }
protected CancellationToken StartCancellationToken { get; set; }
+ public int Period => Timer.Period;
+ ///
+ /// CronExpression has high priority over Period.
+ ///
+ public string? CronExpression { get; protected set; }
protected AsyncPeriodicBackgroundWorkerBase(
AbpAsyncTimer timer,
diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/PeriodicBackgroundWorkerBase.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/PeriodicBackgroundWorkerBase.cs
index 9d78d9237d..c7f9af7016 100644
--- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/PeriodicBackgroundWorkerBase.cs
+++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/PeriodicBackgroundWorkerBase.cs
@@ -15,6 +15,11 @@ public abstract class PeriodicBackgroundWorkerBase : BackgroundWorkerBase
{
protected IServiceScopeFactory ServiceScopeFactory { get; }
protected AbpTimer Timer { get; }
+ public int Period => Timer.Period;
+ ///
+ /// CronExpression has high priority over Period.
+ ///
+ public string? CronExpression { get; protected set; }
protected PeriodicBackgroundWorkerBase(
AbpTimer timer,
@@ -25,13 +30,13 @@ public abstract class PeriodicBackgroundWorkerBase : BackgroundWorkerBase
Timer.Elapsed += Timer_Elapsed;
}
- public override async Task StartAsync(CancellationToken cancellationToken = default)
+ public async override Task StartAsync(CancellationToken cancellationToken = default)
{
await base.StartAsync(cancellationToken);
Timer.Start(cancellationToken);
}
- public override async Task StopAsync(CancellationToken cancellationToken = default)
+ public async override Task StopAsync(CancellationToken cancellationToken = default)
{
Timer.Stop(cancellationToken);
await base.StopAsync(cancellationToken);
diff --git a/framework/src/Volo.Abp.BlazoriseUI/wwwroot/volo.abp.blazoriseui.css b/framework/src/Volo.Abp.BlazoriseUI/wwwroot/volo.abp.blazoriseui.css
index f42b6735bd..8299895e1e 100644
--- a/framework/src/Volo.Abp.BlazoriseUI/wwwroot/volo.abp.blazoriseui.css
+++ b/framework/src/Volo.Abp.BlazoriseUI/wwwroot/volo.abp.blazoriseui.css
@@ -61,4 +61,11 @@
.table-responsive .dropdown-menu-position-strategy-fixed {
position: fixed !important;
-}
\ No newline at end of file
+}
+
+/*
+ blazorise picker workaround for https://github.com/Megabit/Blazorise/issues/4917
+*/
+.card .flatpickr-calendar.static {
+ top: unset !important;
+}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
index 48d756465f..547f9f0aff 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
+++ b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
@@ -16,23 +16,26 @@
-
+
+
+
+
+
-
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/PackageVersionCheckerService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/PackageVersionCheckerService.cs
index 316c53e01e..da54e226f2 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/PackageVersionCheckerService.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/PackageVersionCheckerService.cs
@@ -247,7 +247,7 @@ public class PackageVersionCheckerService : ITransientDependency
var content = await responseMessage.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize>(content);
- return result.OrderBy(q => q.Type.ToLowerInvariant() == "stable").ThenBy(q => SemanticVersion.Parse(q.Version)).ToList();
+ return result.Where(q => q.Type.ToLowerInvariant() == "stable").OrderByDescending(q => SemanticVersion.Parse(q.Version)).ToList();
}
}
catch
diff --git a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj
index 92753dc30d..e714fcd0b3 100644
--- a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj
+++ b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj
@@ -15,7 +15,6 @@
-
diff --git a/framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionLoggingExtensions.cs b/framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionLoggingExtensions.cs
index be365df686..be906c9e74 100644
--- a/framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionLoggingExtensions.cs
+++ b/framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionLoggingExtensions.cs
@@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging.Abstractions;
using Volo.Abp.Logging;
namespace Microsoft.Extensions.DependencyInjection;
@@ -7,6 +8,7 @@ public static class ServiceCollectionLoggingExtensions
{
public static ILogger GetInitLogger(this IServiceCollection services)
{
- return services.GetSingletonInstance().Create();
+ var loggerFactory = services.GetSingletonInstanceOrNull();
+ return loggerFactory == null ? NullLogger.Instance : loggerFactory.Create();
}
}
diff --git a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj
index f89fdbdfb6..5cb2169ffd 100644
--- a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj
+++ b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj
@@ -27,19 +27,10 @@
-
-
-
-
-
-
-
- $(DefineConstants);WINDOWS
-
@@ -47,10 +38,13 @@
+
+
+
+ allruntime; build; native; contentfiles; analyzers
-
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ConventionalRegistrarBase.cs b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ConventionalRegistrarBase.cs
index 6d1c345840..d9fae16e16 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ConventionalRegistrarBase.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ConventionalRegistrarBase.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
using Volo.Abp.Reflection;
namespace Volo.Abp.DependencyInjection;
@@ -11,14 +12,30 @@ public abstract class ConventionalRegistrarBase : IConventionalRegistrar
{
public virtual void AddAssembly(IServiceCollection services, Assembly assembly)
{
- var types = AssemblyHelper
- .GetAllTypes(assembly)
- .Where(
- type => type != null &&
- type.IsClass &&
- !type.IsAbstract &&
- !type.IsGenericType
- ).ToArray();
+ var logger = services.GetInitLogger();
+ var types = Array.Empty();
+
+ try
+ {
+ types = AssemblyHelper
+ .GetAllTypes(assembly)
+ .Where(
+ type => type != null &&
+ type.IsClass &&
+ !type.IsAbstract &&
+ !type.IsGenericType
+ ).ToArray();
+ }
+ catch (ReflectionTypeLoadException e)
+ {
+ types = e.Types.Select(x => x!).ToArray();
+ logger.LogException(e);
+ }
+ catch (Exception e)
+ {
+ //TODO: Trigger a global event?
+ logger.LogException(e);
+ }
AddTypes(services, types);
}
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/InternalServiceCollectionExtensions.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/InternalServiceCollectionExtensions.cs
index 3f638defe8..be28f569ea 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Internal/InternalServiceCollectionExtensions.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Internal/InternalServiceCollectionExtensions.cs
@@ -23,7 +23,6 @@ internal static class InternalServiceCollectionExtensions
{
var moduleLoader = new ModuleLoader();
var assemblyFinder = new AssemblyFinder(abpApplication);
- var typeFinder = new TypeFinder(assemblyFinder);
if (!services.IsAdded())
{
@@ -36,8 +35,9 @@ internal static class InternalServiceCollectionExtensions
services.TryAddSingleton(moduleLoader);
services.TryAddSingleton(assemblyFinder);
- services.TryAddSingleton(typeFinder);
services.TryAddSingleton(new DefaultInitLoggerFactory());
+ var typeFinder = new TypeFinder(services.GetInitLogger(), assemblyFinder);
+ services.TryAddSingleton(typeFinder);
services.AddAssemblyOf();
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/AssemblyHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/AssemblyHelper.cs
index 8e71f011fe..040159dcc8 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/AssemblyHelper.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/AssemblyHelper.cs
@@ -25,13 +25,6 @@ internal static class AssemblyHelper
public static IReadOnlyList GetAllTypes(Assembly assembly)
{
- try
- {
- return assembly.GetTypes();
- }
- catch (ReflectionTypeLoadException ex)
- {
- return ex.Types!;
- }
+ return assembly.GetTypes();
}
}
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeFinder.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeFinder.cs
index c7350cde18..c4b52604d6 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeFinder.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeFinder.cs
@@ -1,19 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Threading;
+using Microsoft.Extensions.Logging;
namespace Volo.Abp.Reflection;
public class TypeFinder : ITypeFinder
{
+ private readonly ILogger _logger;
+
private readonly IAssemblyFinder _assemblyFinder;
private readonly Lazy> _types;
- public TypeFinder(IAssemblyFinder assemblyFinder)
+ public TypeFinder(ILogger logger, IAssemblyFinder assemblyFinder)
{
_assemblyFinder = assemblyFinder;
+ _logger = logger;
_types = new Lazy>(FindAll, LazyThreadSafetyMode.ExecutionAndPublication);
}
@@ -37,9 +42,15 @@ public class TypeFinder : ITypeFinder
allTypes.AddRange(typesInThisAssembly.Where(type => type != null));
}
- catch
+ catch (ReflectionTypeLoadException e)
+ {
+ allTypes = e.Types.Select(x => x!).ToList();
+ _logger.LogException(e);
+ }
+ catch (Exception e)
{
//TODO: Trigger a global event?
+ _logger.LogException(e);
}
}
diff --git a/framework/src/Volo.Abp.EventBus.RabbitMQ/Volo/Abp/EventBus/RabbitMq/AbpEventBusRabbitMqModule.cs b/framework/src/Volo.Abp.EventBus.RabbitMQ/Volo/Abp/EventBus/RabbitMq/AbpEventBusRabbitMqModule.cs
index 92399b43b0..5d811a76cc 100644
--- a/framework/src/Volo.Abp.EventBus.RabbitMQ/Volo/Abp/EventBus/RabbitMq/AbpEventBusRabbitMqModule.cs
+++ b/framework/src/Volo.Abp.EventBus.RabbitMQ/Volo/Abp/EventBus/RabbitMq/AbpEventBusRabbitMqModule.cs
@@ -1,4 +1,6 @@
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.Extensions.Options;
using Volo.Abp.Modularity;
using Volo.Abp.RabbitMQ;
@@ -12,8 +14,8 @@ public class AbpEventBusRabbitMqModule : AbpModule
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
-
Configure(configuration.GetSection("RabbitMQ:EventBus"));
+ context.Services.TryAddEnumerable(ServiceDescriptor.Singleton, PostConfigureAbpRabbitMqEventBusOptions>());
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
diff --git a/framework/src/Volo.Abp.EventBus.RabbitMQ/Volo/Abp/EventBus/RabbitMq/PostConfigureAbpRabbitMqEventBusOptions.cs b/framework/src/Volo.Abp.EventBus.RabbitMQ/Volo/Abp/EventBus/RabbitMq/PostConfigureAbpRabbitMqEventBusOptions.cs
new file mode 100644
index 0000000000..f4e69c46c6
--- /dev/null
+++ b/framework/src/Volo.Abp.EventBus.RabbitMQ/Volo/Abp/EventBus/RabbitMq/PostConfigureAbpRabbitMqEventBusOptions.cs
@@ -0,0 +1,54 @@
+using System.Collections.Generic;
+using Microsoft.Extensions.Options;
+
+namespace Volo.Abp.EventBus.RabbitMq;
+
+public class PostConfigureAbpRabbitMqEventBusOptions : IPostConfigureOptions
+{
+ private readonly HashSet _uint64QueueArguments =
+ [
+ "x-delivery-limit",
+ "x-expires",
+ "x-message-ttl",
+ "x-max-length",
+ "x-max-length-bytes",
+ "x-quorum-initial-group-size",
+ "x-quorum-target-group-size",
+ "x-stream-filter-size-bytes",
+ "x-stream-max-segment-size-bytes",
+ ];
+
+ private readonly HashSet _boolQueueArguments =
+ [
+ "x-single-active-consumer"
+ ];
+
+ public virtual void PostConfigure(string? name, AbpRabbitMqEventBusOptions options)
+ {
+ ParseBoolQueueArguments(options);
+ ParseIntegerQueueArguments(options);
+ }
+
+ protected virtual void ParseBoolQueueArguments(AbpRabbitMqEventBusOptions options)
+ {
+ foreach (var argument in _boolQueueArguments)
+ {
+ if (options.QueueArguments.TryGetValue(argument, out var value) && value is string stringValue && bool.TryParse(stringValue, out var boolValue))
+ {
+ options.QueueArguments[argument] = boolValue;
+ }
+ }
+ }
+
+ protected virtual void ParseIntegerQueueArguments(AbpRabbitMqEventBusOptions options)
+ {
+ foreach (var argument in _uint64QueueArguments)
+ {
+ if (options.QueueArguments.TryGetValue(argument, out var value) && value is string stringValue && int.TryParse(stringValue, out var intValue))
+ {
+ options.QueueArguments[argument] = intValue;
+ }
+ }
+ }
+
+}
diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/EditionFeatureValueProvider.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/EditionFeatureValueProvider.cs
index 94822284f5..cdab8e74c8 100644
--- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/EditionFeatureValueProvider.cs
+++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/EditionFeatureValueProvider.cs
@@ -1,5 +1,7 @@
-using System.Security.Principal;
+using System;
+using System.Security.Principal;
using System.Threading.Tasks;
+using Volo.Abp.MultiTenancy;
using Volo.Abp.Security.Claims;
namespace Volo.Abp.Features;
@@ -12,15 +14,25 @@ public class EditionFeatureValueProvider : FeatureValueProvider
protected ICurrentPrincipalAccessor PrincipalAccessor;
- public EditionFeatureValueProvider(IFeatureStore featureStore, ICurrentPrincipalAccessor principalAccessor)
+ protected ITenantStore TenantStore { get; }
+
+ protected ICurrentTenant CurrentTenant { get; }
+
+ public EditionFeatureValueProvider(
+ IFeatureStore featureStore,
+ ICurrentPrincipalAccessor principalAccessor,
+ ITenantStore tenantStore,
+ ICurrentTenant currentTenant)
: base(featureStore)
{
PrincipalAccessor = principalAccessor;
+ TenantStore = tenantStore;
+ CurrentTenant = currentTenant;
}
- public override async Task GetOrNullAsync(FeatureDefinition feature)
+ public async override Task GetOrNullAsync(FeatureDefinition feature)
{
- var editionId = PrincipalAccessor.Principal?.FindEditionId();
+ var editionId = await FindEditionIdAsync();
if (editionId == null)
{
return null;
@@ -28,4 +40,21 @@ public class EditionFeatureValueProvider : FeatureValueProvider
return await FeatureStore.GetOrNullAsync(feature.Name, Name, editionId.Value.ToString());
}
+
+ protected virtual async Task FindEditionIdAsync()
+ {
+ var editionId = PrincipalAccessor.Principal?.FindEditionId();
+ if (editionId != null)
+ {
+ return editionId;
+ }
+
+ if (CurrentTenant.Id == null)
+ {
+ return null;
+ }
+
+ var tenant = await TenantStore.FindAsync(CurrentTenant.Id.Value);
+ return tenant?.EditionId;
+ }
}
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyUrlBuilder.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyUrlBuilder.cs
index 5be598af20..09ec183929 100644
--- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyUrlBuilder.cs
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyUrlBuilder.cs
@@ -119,8 +119,8 @@ public class ClientProxyUrlBuilder : ITransientDependency
if (path != null)
{
urlBuilder = urlBuilder.Replace($"{{{pathParameter.Name}}}", path);
- continue;
}
+ continue;
}
}
@@ -164,8 +164,8 @@ public class ClientProxyUrlBuilder : ITransientDependency
urlBuilder.Append(isFirstParam ? "?" : "&");
urlBuilder.Append(queryString);
isFirstParam = false;
- continue;
}
+ continue;
}
}
diff --git a/framework/src/Volo.Abp.Json.SystemTextJson/Volo.Abp.Json.SystemTextJson.csproj b/framework/src/Volo.Abp.Json.SystemTextJson/Volo.Abp.Json.SystemTextJson.csproj
index 15a6e37336..6d388b5764 100644
--- a/framework/src/Volo.Abp.Json.SystemTextJson/Volo.Abp.Json.SystemTextJson.csproj
+++ b/framework/src/Volo.Abp.Json.SystemTextJson/Volo.Abp.Json.SystemTextJson.csproj
@@ -20,6 +20,9 @@
+
+
+
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/Clients/AbpMongoClientFactory.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/Clients/AbpMongoClientFactory.cs
new file mode 100644
index 0000000000..983f7e067e
--- /dev/null
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/Clients/AbpMongoClientFactory.cs
@@ -0,0 +1,44 @@
+using System.Collections.Concurrent;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Options;
+using MongoDB.Driver;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Abp.MongoDB.Clients;
+
+public class AbpMongoClientFactory : IAbpMongoClientFactory, ISingletonDependency
+{
+ protected ConcurrentDictionary ClientCache { get; }
+ protected AbpMongoDbContextOptions Options { get; }
+
+ public AbpMongoClientFactory(IOptions options)
+ {
+ Options = options.Value;
+ ClientCache = new ConcurrentDictionary();
+ }
+
+ public virtual Task GetAsync(MongoUrl mongoUrl)
+ {
+ Check.NotNull(mongoUrl, nameof(mongoUrl));
+
+ return Task.FromResult(
+ ClientCache.GetOrAdd(mongoUrl.ToString(), _ =>
+ {
+ var mongoClientSettings = MongoClientSettings.FromUrl(mongoUrl);
+ Options.MongoClientSettingsConfigurer?.Invoke(mongoClientSettings);
+ return new MongoClient(mongoClientSettings);
+ }));
+ }
+
+ public virtual MongoClient Get(MongoUrl mongoUrl)
+ {
+ Check.NotNull(mongoUrl, nameof(mongoUrl));
+
+ return ClientCache.GetOrAdd(mongoUrl.ToString(), _ =>
+ {
+ var mongoClientSettings = MongoClientSettings.FromUrl(mongoUrl);
+ Options.MongoClientSettingsConfigurer?.Invoke(mongoClientSettings);
+ return new MongoClient(mongoClientSettings);
+ });
+ }
+}
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/Clients/IAbpMongoClientFactory.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/Clients/IAbpMongoClientFactory.cs
new file mode 100644
index 0000000000..bf0d20d3ae
--- /dev/null
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/Clients/IAbpMongoClientFactory.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Threading.Tasks;
+using MongoDB.Driver;
+
+namespace Volo.Abp.MongoDB.Clients;
+
+public interface IAbpMongoClientFactory
+{
+ Task GetAsync(MongoUrl mongoUrl);
+
+ [Obsolete("Use GetAsync method")]
+ MongoClient Get(MongoUrl mongoUrl);
+}
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs
index 1585bc1332..acea595dce 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs
@@ -4,11 +4,11 @@ using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
-using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver;
using Volo.Abp.Data;
using Volo.Abp.MongoDB;
+using Volo.Abp.MongoDB.Clients;
using Volo.Abp.MultiTenancy;
using Volo.Abp.Threading;
@@ -24,23 +24,23 @@ public class UnitOfWorkMongoDbContextProvider : IMongoDbContext
protected readonly IConnectionStringResolver ConnectionStringResolver;
protected readonly ICancellationTokenProvider CancellationTokenProvider;
protected readonly ICurrentTenant CurrentTenant;
- protected readonly AbpMongoDbContextOptions Options;
protected readonly IMongoDbContextTypeProvider DbContextTypeProvider;
+ protected readonly IAbpMongoClientFactory MongoClientFactory;
public UnitOfWorkMongoDbContextProvider(
IUnitOfWorkManager unitOfWorkManager,
IConnectionStringResolver connectionStringResolver,
ICancellationTokenProvider cancellationTokenProvider,
ICurrentTenant currentTenant,
- IOptions options,
- IMongoDbContextTypeProvider dbContextTypeProvider)
+ IMongoDbContextTypeProvider dbContextTypeProvider,
+ IAbpMongoClientFactory mongoClientFactory)
{
UnitOfWorkManager = unitOfWorkManager;
ConnectionStringResolver = connectionStringResolver;
CancellationTokenProvider = cancellationTokenProvider;
CurrentTenant = currentTenant;
DbContextTypeProvider = dbContextTypeProvider;
- Options = options.Value;
+ MongoClientFactory = mongoClientFactory;
Logger = NullLogger>.Instance;
}
@@ -77,12 +77,11 @@ public class UnitOfWorkMongoDbContextProvider : IMongoDbContext
databaseName = ConnectionStringNameAttribute.GetConnStringName(targetDbContextType);
}
- //TODO: Create only single MongoDbClient per connection string in an application (extract MongoClientCache for example).
var databaseApi = unitOfWork.GetOrAddDatabaseApi(
dbContextKey,
() => new MongoDbDatabaseApi(CreateDbContext(unitOfWork, mongoUrl, databaseName)));
- return (TMongoDbContext)((MongoDbDatabaseApi) databaseApi).DbContext;
+ return (TMongoDbContext)((MongoDbDatabaseApi)databaseApi).DbContext;
}
public virtual async Task GetDbContextAsync(CancellationToken cancellationToken = default)
@@ -121,14 +120,13 @@ public class UnitOfWorkMongoDbContextProvider : IMongoDbContext
unitOfWork.AddDatabaseApi(dbContextKey, databaseApi);
}
- return (TMongoDbContext)((MongoDbDatabaseApi) databaseApi).DbContext;
+ return (TMongoDbContext)((MongoDbDatabaseApi)databaseApi).DbContext;
}
[Obsolete("Use CreateDbContextAsync")]
-
private TMongoDbContext CreateDbContext(IUnitOfWork unitOfWork, MongoUrl mongoUrl, string databaseName)
{
- var client = CreateMongoClient(mongoUrl);
+ var client = MongoClientFactory.Get(mongoUrl);
var database = client.GetDatabase(databaseName);
if (unitOfWork.Options.IsTransactional)
@@ -148,7 +146,7 @@ public class UnitOfWorkMongoDbContextProvider : IMongoDbContext
string databaseName,
CancellationToken cancellationToken = default)
{
- var client = CreateMongoClient(mongoUrl);
+ var client = await MongoClientFactory.GetAsync(mongoUrl);
var database = client.GetDatabase(databaseName);
if (unitOfWork.Options.IsTransactional)
@@ -297,14 +295,6 @@ public class UnitOfWorkMongoDbContextProvider : IMongoDbContext
return ConnectionStringResolver.Resolve(dbContextType);
}
- protected virtual MongoClient CreateMongoClient(MongoUrl mongoUrl)
- {
- var mongoClientSettings = MongoClientSettings.FromUrl(mongoUrl);
- Options.MongoClientSettingsConfigurer?.Invoke(mongoClientSettings);
-
- return new MongoClient(mongoClientSettings);
- }
-
protected virtual CancellationToken GetCancellationToken(CancellationToken preferredValue = default)
{
return CancellationTokenProvider.FallbackToProvider(preferredValue);
diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfiguration.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfiguration.cs
index 29b0971708..674bce6e94 100644
--- a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfiguration.cs
+++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfiguration.cs
@@ -17,6 +17,8 @@ public class TenantConfiguration
public bool IsActive { get; set; }
+ public Guid? EditionId { get; set; }
+
public TenantConfiguration()
{
IsActive = true;
@@ -33,11 +35,12 @@ public class TenantConfiguration
ConnectionStrings = new ConnectionStrings();
}
- public TenantConfiguration(Guid id, [NotNull] string name, [NotNull] string normalizedName)
+ public TenantConfiguration(Guid id, [NotNull] string name, [NotNull] string normalizedName, Guid? editionId = null)
: this(id, name)
{
Check.NotNull(normalizedName, nameof(normalizedName));
NormalizedName = normalizedName;
+ EditionId = editionId;
}
}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/FakeAuthenticationScheme.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/FakeAuthenticationScheme.cs
index 641bbe03d7..0f9da48f68 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/FakeAuthenticationScheme.cs
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/FakeAuthenticationScheme.cs
@@ -1,8 +1,8 @@
using System;
+using System.Linq;
using System.Security.Claims;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
-using DeviceDetectorNET;
using Microsoft.AspNetCore.Authentication;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/WebClientInfoProvider/WebClientInfoProviderDto.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/WebClientInfoProvider/WebClientInfoProviderDto.cs
new file mode 100644
index 0000000000..85f96a65e3
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/WebClientInfoProvider/WebClientInfoProviderDto.cs
@@ -0,0 +1,8 @@
+namespace Volo.Abp.AspNetCore.Mvc.WebClientInfoProvider;
+
+public class WebClientInfoProviderDto
+{
+ public string BrowserInfo { get; set; }
+
+ public string DeviceInfo { get; set; }
+}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/WebClientInfoProvider/WebClientInfoProviderTestController.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/WebClientInfoProvider/WebClientInfoProviderTestController.cs
new file mode 100644
index 0000000000..0d09c6e8ee
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/WebClientInfoProvider/WebClientInfoProviderTestController.cs
@@ -0,0 +1,26 @@
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Volo.Abp.AspNetCore.WebClientInfo;
+
+namespace Volo.Abp.AspNetCore.Mvc.WebClientInfoProvider;
+
+[Route("api/web-client-info")]
+public class WebClientInfoProviderTestController : AbpController
+{
+ private IWebClientInfoProvider _webClientInfoProvider { get; }
+
+ public WebClientInfoProviderTestController(IWebClientInfoProvider webClientInfoProvider)
+ {
+ _webClientInfoProvider = webClientInfoProvider;
+ }
+
+ [HttpGet]
+ public Task GetAsync()
+ {
+ return Task.FromResult(new WebClientInfoProviderDto
+ {
+ BrowserInfo = _webClientInfoProvider.BrowserInfo,
+ DeviceInfo = _webClientInfoProvider.DeviceInfo
+ });
+ }
+}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/WebClientInfoProvider/WebClientInfoProviderTestController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/WebClientInfoProvider/WebClientInfoProviderTestController_Tests.cs
new file mode 100644
index 0000000000..0a5f13082b
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/WebClientInfoProvider/WebClientInfoProviderTestController_Tests.cs
@@ -0,0 +1,36 @@
+using System.Net;
+using System.Net.Http;
+using System.Text.Json;
+using System.Threading.Tasks;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.AspNetCore.Mvc.WebClientInfoProvider;
+
+public class WebClientInfoProviderTestController_Tests : AspNetCoreMvcTestBase
+{
+ [Theory]
+ [InlineData("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Windows 10 Chrome")]
+ [InlineData("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Mac OS X Chrome")]
+ [InlineData("PostmanRuntime/7.43.4", "PostmanRuntime/7.43.4")]
+ [InlineData("curl/7.64.1", "curl/7.64.1")]
+ [InlineData("Mozilla/5.0 (compatible; MojeekBot/0.11; +mojeek.com/bot.html)", "MojeekBot")]
+ public async Task TestAsync(string ua, string device)
+ {
+ var clientInfo = await GetWebClientInfoAsync(ua);
+ clientInfo.ShouldNotBeNull();
+ clientInfo.BrowserInfo.ShouldBe(ua);
+ clientInfo.DeviceInfo.ShouldBe(device);
+ }
+
+ private async Task GetWebClientInfoAsync(string userAgent )
+ {
+ using (var requestMessage = new HttpRequestMessage(HttpMethod.Get, "api/web-client-info"))
+ {
+ requestMessage.Headers.Add("User-Agent", userAgent);
+ var response = await Client.SendAsync(requestMessage);
+ response.StatusCode.ShouldBe(HttpStatusCode.OK);
+ return JsonSerializer.Deserialize(await response.Content.ReadAsStringAsync(), JsonSerializerOptions.Web);
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeFinder_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeFinder_Tests.cs
index 480352d69c..4884f07d16 100644
--- a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeFinder_Tests.cs
+++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeFinder_Tests.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Reflection;
+using Microsoft.Extensions.Logging.Abstractions;
using NSubstitute;
using Shouldly;
using Xunit;
@@ -21,7 +22,7 @@ public class TypeFinder_Tests
//Act
- var typeFinder = new TypeFinder(fakeAssemblyFinder);
+ var typeFinder = new TypeFinder(NullLogger.Instance, fakeAssemblyFinder);
//Assert
diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToPath.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToPath.cs
index a9b7936578..358d842228 100644
--- a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToPath.cs
+++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToPath.cs
@@ -15,9 +15,8 @@ public class TestObjectToPath : IObjectToPath, ITransientDependency
{
value = 888;
}
- return Task.FromResult(value.ToString());
}
- return Task.FromResult(null);
+ return Task.FromResult(value.ToString());
}
}
diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Clients/MongoClient_Factory_Tests.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Clients/MongoClient_Factory_Tests.cs
new file mode 100644
index 0000000000..df649132fa
--- /dev/null
+++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Clients/MongoClient_Factory_Tests.cs
@@ -0,0 +1,79 @@
+using System;
+using System.Threading.Tasks;
+using MongoDB.Driver;
+using Xunit;
+
+namespace Volo.Abp.MongoDB.Clients;
+
+[Collection(MongoTestCollection.Name)]
+public class MongoClient_Factory_Tests : MongoDbTestBase
+{
+ private readonly IAbpMongoClientFactory _factory;
+
+ public MongoClient_Factory_Tests()
+ {
+ _factory = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task Should_Return_Same_Instance_For_Same_ConnectionString()
+ {
+ // Arrange
+ var mongoUrl = new MongoUrl("mongodb://localhost:27017/my-db");
+
+ // Act
+ var client1 = await _factory.GetAsync(mongoUrl);
+ var client2 = await _factory.GetAsync(mongoUrl);
+
+ // Assert
+ Assert.Same(client1, client2);
+ }
+
+ [Fact]
+ public async Task Should_Return_Different_Instances_For_Different_ConnectionStrings()
+ {
+ // Arrange
+ var mongoUrl1 = new MongoUrl("mongodb://localhost:27017/db1");
+ var mongoUrl2 = new MongoUrl("mongodb://localhost:27017/db2");
+
+ // Act
+ var client1 = await _factory.GetAsync(mongoUrl1);
+ var client2 = await _factory.GetAsync(mongoUrl2);
+
+ // Assert
+ Assert.NotSame(client1, client2);
+ }
+
+ [Fact]
+ public async Task Should_Not_Throw_For_Valid_But_Unreachable_Connection()
+ {
+ // Arrange
+ var mongoUrl = new MongoUrl("mongodb://unreachablehost:12345/any");
+
+ // Act
+ var client = await _factory.GetAsync(mongoUrl);
+
+ // Assert
+ Assert.NotNull(client); // Even though it's not connectable now, the instance can be created
+ }
+
+ [Fact]
+ public async Task Should_Be_ThreadSafe_When_Accessed_Concurrently()
+ {
+ var mongoUrl = new MongoUrl("mongodb://localhost:27017/threadsafe");
+ var results = new MongoClient[100];
+
+ await Parallel.ForAsync(0, 100, async (i, _) =>
+ {
+ results[i] = await _factory.GetAsync(mongoUrl);
+ });
+
+ Assert.All(results, client => Assert.Same(results[0], client));
+ }
+
+ [Fact]
+ public async Task Should_Throw_If_ConnectionString_Is_Null_Or_Empty()
+ {
+ await Assert.ThrowsAsync(() => _factory.GetAsync(null!));
+ }
+}
diff --git a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/PeopleAppService.cs b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/PeopleAppService.cs
index a7d64228bd..6981eb1e57 100644
--- a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/PeopleAppService.cs
+++ b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/PeopleAppService.cs
@@ -5,7 +5,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
+using Shouldly;
using Volo.Abp.Application.Dtos;
using Volo.Abp.TestApp.Domain;
using Volo.Abp.Domain.Repositories;
@@ -17,10 +19,11 @@ namespace Volo.Abp.TestApp.Application;
public class PeopleAppService : CrudAppService, IPeopleAppService
{
- public PeopleAppService(IRepository repository)
+ private readonly IHttpContextAccessor _httpContextAccessor;
+ public PeopleAppService(IRepository repository, IHttpContextAccessor httpContextAccessor)
: base(repository)
{
-
+ _httpContextAccessor = httpContextAccessor;
}
public async Task> GetPhones(Guid id, GetPersonPhonesFilter filter)
@@ -129,6 +132,11 @@ public class PeopleAppService : CrudAppService, IPeople
public Task GetParamsFromQueryAsync([FromQuery] GetParamsInput input)
{
+ if (_httpContextAccessor.HttpContext != null)
+ {
+ _httpContextAccessor.HttpContext.Request.QueryString.ToString().ShouldNotContain("ExtraProperties=Volo.Abp.Data.ExtraPropertyDictionary");
+ }
+
return Task.FromResult(input.NameValues?.FirstOrDefault()?.Name + "-" + input.NameValues?.FirstOrDefault()?.Value + ":" +
input.NameValues?.FirstOrDefault()?.ExtraProperties["TestPropertyInList"] + ":" +
input.NameValues?.LastOrDefault()?.Name + "-" + input.NameValues?.LastOrDefault()?.Value + ":" +
diff --git a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/TestAppModule.cs b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/TestAppModule.cs
index 0c8339d6f7..f30774838e 100644
--- a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/TestAppModule.cs
+++ b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/TestAppModule.cs
@@ -27,7 +27,8 @@ public class TestAppModule : AbpModule
{
ConfigureAutoMapper();
ConfigureDistributedEventBus();
-
+
+ context.Services.AddHttpContextAccessor();
context.Services.Replace(ServiceDescriptor.Singleton());
context.Services.AddEntityCache();
context.Services.AddEntityCache();
diff --git a/latest-versions.json b/latest-versions.json
index da8c7b754d..7e756d726b 100644
--- a/latest-versions.json
+++ b/latest-versions.json
@@ -1,4 +1,13 @@
[
+ {
+ "version": "9.2.0",
+ "releaseDate": "",
+ "type": "stable",
+ "message": "",
+ "leptonx": {
+ "version": "4.2.0"
+ }
+ },
{
"version": "9.1.3",
"releaseDate": "",
diff --git a/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj b/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj
index e32c705afb..d8c149f8b5 100644
--- a/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj
+++ b/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj
@@ -17,7 +17,6 @@
-
diff --git a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj
index e4235dbd94..6abd877a2c 100644
--- a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj
+++ b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj
@@ -33,10 +33,6 @@
-
-
-
-
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogExcelFileConsts.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogExcelFileConsts.cs
new file mode 100644
index 0000000000..7e74632910
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogExcelFileConsts.cs
@@ -0,0 +1,9 @@
+namespace Volo.Abp.AuditLogging;
+
+public static class AuditLogExcelFileConsts
+{
+ ///
+ /// Default value: 256
+ ///
+ public static int MaxFileNameLength { get; set; } = 256;
+}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ar.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ar.json
index 58f1b5bf7a..86a9ad9581 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ar.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ar.json
@@ -79,9 +79,39 @@
"DurationMs": "المدة (مللي ثانية)",
"StartDate": "تاريخ البدء",
"EndDate": "تاريخ الانتهاء",
- "Feature:AuditLoggingGroup": "تدوين التسجيل",
+ "Feature:AuditLoggingGroup": "تسجيل التدقيق",
"Feature:AuditLoggingEnable": "تمكين صفحة تسجيل التدقيق",
- "Feature:AuditLoggingEnableDescription": "تفعيل صفحة تسجيل التدقيق في التطبيق.",
- "TenantId": "معرف المستأجر"
+ "Feature:AuditLoggingEnableDescription": "تمكين صفحة تسجيل التدقيق في التطبيق.",
+ "Feature:AuditLoggingSettingManagementEnable": "تمكين إدارة إعدادات تسجيل التدقيق",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "تمكين تكوين إدارة إعدادات تسجيل التدقيق داخل التطبيق.",
+ "InvalidAuditLogDeletionSettings": "إعدادات حذف سجل التدقيق غير صالحة. إذا تم تمكين الحذف، يجب أن تكون الفترة أكبر من 0 أيام.",
+ "AuditLogSettingsGeneral": "عام",
+ "AuditLogSettingsGlobal": "عالمي",
+ "DisplayName:IsPeriodicDeleterEnabled": "تمكين خدمة التنظيف على مستوى النظام",
+ "Description:IsPeriodicDeleterEnabled": "إذا تم تعطيل هذا الخيار، فلن يعمل المحذف الدوري. لن يتم حذف سجلات التدقيق تلقائياً.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "تمكين خدمة التنظيف لجميع المستأجرين والمضيف",
+ "Description:GlobalIsExpiredDeleterEnabled": "إذا تم تمكين هذا الخيار، سيتم حذف جميع العناصر المنتهية الصلاحية للمستأجرين والمضيف تلقائياً ما لم يكن لديها إعداد محدد.",
+ "DisplayName:IsExpiredDeleterEnabled": "تمكين خدمة التنظيف",
+ "Description:IsExpiredDeleterEnabled": "إذا تم تمكين هذا الخيار، سيتم حذف العناصر المنتهية الصلاحية تلقائياً.",
+ "DisplayName:ExpiredDeleterPeriod": "فترة حذف العناصر المنتهية الصلاحية",
+ "Description:ExpiredDeleterPeriod": "حدد عدد الأيام التي سيتم بعدها حذف العناصر المنتهية الصلاحية تلقائياً.",
+ "ExpiredDeleterPeriodUnit": "يوم (أيام)",
+ "AuditLogsBeforeXWillBeDeleted": "سيتم حذف سجلات التدقيق قبل {0}.",
+ "TenantId": "معرف المستأجر",
+ "Permission:Export": "تصدير سجلات التدقيق",
+ "ExportToExcel": "تصدير إلى Excel",
+ "Exporting": "جاري التصدير",
+ "ExportCompleted": "تم إكمال التصدير بنجاح",
+ "ExportFailed": "فشل التصدير",
+ "ExportJobQueued": "تم وضع مهمة التصدير في الطابور لـ {0} سجل. ستتلقى بريداً إلكترونياً عند اكتمال التصدير.",
+ "ExportReady": "تم إكمال التصدير لـ {0} سجل وجاهز للتنزيل.",
+ "FileName": "اسم الملف",
+ "TotalRecords": "إجمالي السجلات",
+ "ExcelFileAttachedMessage": "ملف Excel مرفق بهذا البريد الإلكتروني.",
+ "EntityChangeExportCompletedSubject": "تم إكمال تصدير تغييرات الكيان",
+ "AuditLogExportCompletedSubject": "تم إكمال تصدير سجل التدقيق",
+ "DownloadLinkExplanation": "يمكنك تنزيل الملف باستخدام الرابط أدناه حتى {0} (UTC)",
+ "DownloadNow": "تنزيل الآن",
+ "TryAgainMessage": "الرجاء المحاولة مرة أخرى. إذا استمرت المشكلة، يرجى الاتصال بالدعم."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/cs.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/cs.json
index b415c41556..a98da37703 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/cs.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/cs.json
@@ -82,6 +82,36 @@
"Feature:AuditLoggingGroup": "Protokolování auditu",
"Feature:AuditLoggingEnable": "Povolena stránka protokolování auditu",
"Feature:AuditLoggingEnableDescription": "Povolit stránku protokolování auditu v aplikaci.",
- "TenantId": "ID nájemce"
+ "Feature:AuditLoggingSettingManagementEnable": "Povolit správu nastavení protokolování auditu",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Povolit konfiguraci správy nastavení protokolování auditu v aplikaci.",
+ "InvalidAuditLogDeletionSettings": "Neplatná nastavení mazání protokolu auditu. Pokud je mazání povoleno, období by mělo být větší než 0 dní.",
+ "AuditLogSettingsGeneral": "Obecné",
+ "AuditLogSettingsGlobal": "Globální",
+ "DisplayName:IsPeriodicDeleterEnabled": "Povolit službu čištění v celém systému",
+ "Description:IsPeriodicDeleterEnabled": "Pokud je tato možnost zakázána, periodický mazač nebude fungovat. Protokoly auditu nebudou automaticky mazány.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Povolit službu čištění pro všechny nájemce a hostitele",
+ "Description:GlobalIsExpiredDeleterEnabled": "Pokud je tato možnost povolena, všechny prošlé položky nájemců a hostitele budou automaticky smazány, pokud nemají specifické nastavení.",
+ "DisplayName:IsExpiredDeleterEnabled": "Povolit službu čištění",
+ "Description:IsExpiredDeleterEnabled": "Pokud je tato možnost povolena, prošlé položky budou automaticky smazány.",
+ "DisplayName:ExpiredDeleterPeriod": "Období mazání prošlých položek",
+ "Description:ExpiredDeleterPeriod": "Nastavte počet dní, po kterých budou prošlé položky automaticky smazány.",
+ "ExpiredDeleterPeriodUnit": "den(dny)",
+ "AuditLogsBeforeXWillBeDeleted": "Protokoly auditu před {0} budou smazány.",
+ "TenantId": "ID nájemce",
+ "Permission:Export": "Exportovat protokoly auditu",
+ "ExportToExcel": "Exportovat do Excelu",
+ "Exporting": "Exportování",
+ "ExportCompleted": "Export úspěšně dokončen",
+ "ExportFailed": "Export se nezdařil",
+ "ExportJobQueued": "Úloha exportu byla zařazena do fronty pro {0} záznamů. Obdržíte e-mail, když bude export dokončen.",
+ "ExportReady": "Export dokončen pro {0} záznamů a připraven ke stažení.",
+ "FileName": "Název souboru",
+ "TotalRecords": "Celkem záznamů",
+ "ExcelFileAttachedMessage": "Soubor Excel je připojen k tomuto e-mailu.",
+ "EntityChangeExportCompletedSubject": "Export změn entit dokončen",
+ "AuditLogExportCompletedSubject": "Export protokolu auditu dokončen",
+ "DownloadLinkExplanation": "Soubor můžete stáhnout pomocí odkazu níže až do {0} (UTC)",
+ "DownloadNow": "Stáhnout nyní",
+ "TryAgainMessage": "Zkuste to prosím znovu. Pokud problém přetrvává, kontaktujte podporu."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de-DE.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de-DE.json
index 512556988f..334ada8c9a 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de-DE.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de-DE.json
@@ -81,6 +81,9 @@
"Feature:AuditLoggingGroup": "Audit-Protokollierung",
"Feature:AuditLoggingEnable": "Aktivieren Sie die Überwachungsprotokollseite",
"Feature:AuditLoggingEnableDescription": "Aktivieren Sie die Überwachungsprotokollseite in der App.",
- "TenantId": "Mandanten-ID"
+ "TenantId": "Mandanten-ID",
+ "DownloadLinkExplanation": "Sie können die Datei über den Link unten bis {0} (UTC) herunterladen",
+ "DownloadNow": "Jetzt herunterladen",
+ "TryAgainMessage": "Bitte versuchen Sie es erneut. Wenn das Problem weiterhin besteht, wenden Sie sich bitte an den Support."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de.json
index 06d2a825f4..cc316ff867 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/de.json
@@ -82,6 +82,36 @@
"Feature:AuditLoggingGroup": "Audit-Protokollierung",
"Feature:AuditLoggingEnable": "Aktivierte Audit-Logging-Seite",
"Feature:AuditLoggingEnableDescription": "Aktivieren Sie die Audit-Logging-Seite in der Anwendung.",
- "TenantId": "Mandanten-ID"
+ "Feature:AuditLoggingSettingManagementEnable": "Audit-Log-Einstellungsverwaltung aktivieren",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Aktivieren Sie die Konfiguration der Audit-Log-Einstellungsverwaltung in der Anwendung.",
+ "InvalidAuditLogDeletionSettings": "Ungültige Audit-Log-Löscheinstellungen. Wenn das Löschen aktiviert ist, sollte der Zeitraum größer als 0 Tage sein.",
+ "AuditLogSettingsGeneral": "Allgemein",
+ "AuditLogSettingsGlobal": "Global",
+ "DisplayName:IsPeriodicDeleterEnabled": "Bereinigungsdienst systemweit aktivieren",
+ "Description:IsPeriodicDeleterEnabled": "Wenn diese Option deaktiviert ist, funktioniert der periodische Löscher nicht. Audit-Logs werden nicht automatisch gelöscht.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Bereinigungsdienst für alle Mandanten und Host aktivieren",
+ "Description:GlobalIsExpiredDeleterEnabled": "Wenn diese Option aktiviert ist, werden alle abgelaufenen Elemente der Mandanten und des Hosts automatisch gelöscht, es sei denn, es gibt eine spezifische Einstellung.",
+ "DisplayName:IsExpiredDeleterEnabled": "Bereinigungsdienst aktivieren",
+ "Description:IsExpiredDeleterEnabled": "Wenn diese Option aktiviert ist, werden abgelaufene Elemente automatisch gelöscht.",
+ "DisplayName:ExpiredDeleterPeriod": "Löschzeitraum für abgelaufene Elemente",
+ "Description:ExpiredDeleterPeriod": "Legen Sie die Anzahl der Tage fest, nach denen abgelaufene Elemente automatisch gelöscht werden.",
+ "ExpiredDeleterPeriodUnit": "Tag(e)",
+ "AuditLogsBeforeXWillBeDeleted": "Audit-Logs vor {0} werden gelöscht.",
+ "TenantId": "Mandanten-ID",
+ "Permission:Export": "Audit-Logs exportieren",
+ "ExportToExcel": "Nach Excel exportieren",
+ "Exporting": "Exportieren",
+ "ExportCompleted": "Export erfolgreich abgeschlossen",
+ "ExportFailed": "Export fehlgeschlagen",
+ "ExportJobQueued": "Export-Job wurde für {0} Datensätze in die Warteschlange eingereiht. Sie erhalten eine E-Mail, wenn der Export abgeschlossen ist.",
+ "ExportReady": "Export für {0} Datensätze abgeschlossen und zum Download bereit.",
+ "FileName": "Dateiname",
+ "TotalRecords": "Gesamtdatensätze",
+ "ExcelFileAttachedMessage": "Die Excel-Datei ist an diese E-Mail angehängt.",
+ "EntityChangeExportCompletedSubject": "Entity-Änderungsexport abgeschlossen",
+ "AuditLogExportCompletedSubject": "Audit-Log-Export abgeschlossen",
+ "DownloadLinkExplanation": "Sie können die Datei über den Link unten bis {0} (UTC) herunterladen",
+ "DownloadNow": "Jetzt herunterladen",
+ "TryAgainMessage": "Bitte versuchen Sie es erneut. Wenn das Problem weiterhin besteht, wenden Sie sich bitte an den Support."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/en.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/en.json
index ac03e75db7..e837e01666 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/en.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/en.json
@@ -97,6 +97,21 @@
"Description:ExpiredDeleterPeriod": "Set the number of days after which expired items will be automatically deleted.",
"ExpiredDeleterPeriodUnit": "day(s)",
"AuditLogsBeforeXWillBeDeleted": "Audit logs before {0} will be deleted.",
- "TenantId": "Tenant Id"
+ "TenantId": "Tenant Id",
+ "Permission:Export": "Export audit logs",
+ "ExportToExcel": "Export to Excel",
+ "Exporting": "Exporting",
+ "ExportCompleted": "Export completed successfully",
+ "ExportFailed": "Export failed",
+ "ExportJobQueued": "Export job has been queued for {0} records. You will receive an email when the export is completed.",
+ "ExportReady": "Export completed for {0} records and is ready for download.",
+ "FileName": "File name",
+ "TotalRecords": "Total records",
+ "ExcelFileAttachedMessage": "The Excel file is attached to this email.",
+ "EntityChangeExportCompletedSubject": "Entity change export completed",
+ "AuditLogExportCompletedSubject": "Audit log export completed",
+ "DownloadLinkExplanation": "You can download the file using the link below until {0} (UTC)",
+ "DownloadNow": "Download now",
+ "TryAgainMessage": "Please try again. If the problem persists, please contact support."
}
}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/es.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/es.json
index 310b5de91b..518c29d0ea 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/es.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/es.json
@@ -82,6 +82,36 @@
"Feature:AuditLoggingGroup": "Registros de auditoría",
"Feature:AuditLoggingEnable": "Habilitar la página de registro de auditoría",
"Feature:AuditLoggingEnableDescription": "Habilite la página de registro de auditoría en la aplicación.",
- "TenantId": "ID de inquilino"
+ "Feature:AuditLoggingSettingManagementEnable": "Habilitar la gestión de configuración de registro de auditoría",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Habilite la configuración de la gestión de configuración de registro de auditoría dentro de la aplicación.",
+ "InvalidAuditLogDeletionSettings": "Configuración de eliminación de registro de auditoría no válida. Si la eliminación está habilitada, el período debe ser mayor a 0 días.",
+ "AuditLogSettingsGeneral": "General",
+ "AuditLogSettingsGlobal": "Global",
+ "DisplayName:IsPeriodicDeleterEnabled": "Habilitar servicio de limpieza en todo el sistema",
+ "Description:IsPeriodicDeleterEnabled": "Si esta opción está deshabilitada, el eliminador periódico no funcionará. Los registros de auditoría no se eliminarán automáticamente.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Habilitar servicio de limpieza para todos los inquilinos y host",
+ "Description:GlobalIsExpiredDeleterEnabled": "Si esta opción está habilitada, todos los elementos vencidos de los inquilinos y el host se eliminarán automáticamente a menos que tenga una configuración específica.",
+ "DisplayName:IsExpiredDeleterEnabled": "Habilitar servicio de limpieza",
+ "Description:IsExpiredDeleterEnabled": "Si esta opción está habilitada, los elementos vencidos se eliminarán automáticamente.",
+ "DisplayName:ExpiredDeleterPeriod": "Período de eliminación de elementos vencidos",
+ "Description:ExpiredDeleterPeriod": "Establezca el número de días después de los cuales los elementos vencidos se eliminarán automáticamente.",
+ "ExpiredDeleterPeriodUnit": "día(s)",
+ "AuditLogsBeforeXWillBeDeleted": "Los registros de auditoría antes de {0} serán eliminados.",
+ "TenantId": "ID de inquilino",
+ "Permission:Export": "Exportar registros de auditoría",
+ "ExportToExcel": "Exportar a Excel",
+ "Exporting": "Exportando",
+ "ExportCompleted": "Exportación completada exitosamente",
+ "ExportFailed": "Exportación fallida",
+ "ExportJobQueued": "El trabajo de exportación ha sido puesto en cola para {0} registros. Recibirá un correo electrónico cuando se complete la exportación.",
+ "ExportReady": "Exportación completada para {0} registros y lista para descarga.",
+ "FileName": "Nombre del archivo",
+ "TotalRecords": "Total de registros",
+ "ExcelFileAttachedMessage": "El archivo de Excel está adjunto a este correo electrónico.",
+ "EntityChangeExportCompletedSubject": "Exportación de cambios de entidad completada",
+ "AuditLogExportCompletedSubject": "Exportación de registro de auditoría completada",
+ "DownloadLinkExplanation": "Puede descargar el archivo usando el enlace a continuación hasta {0} (UTC)",
+ "DownloadNow": "Descargar ahora",
+ "TryAgainMessage": "Por favor, inténtelo de nuevo. Si el problema persiste, contacte con soporte."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fi.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fi.json
index 76b374f51a..a71a9cf5e8 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fi.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fi.json
@@ -79,9 +79,39 @@
"DurationMs": "Kesto (ms)",
"StartDate": "Aloituspäivämäärä",
"EndDate": "Päättymispäivä",
- "Feature:AuditLoggingGroup": "Tarkastusten kirjaaminen",
- "Feature:AuditLoggingEnable": "Aktivoi auditointilokisivu",
- "Feature:AuditLoggingEnableDescription": "Ota käyttöön tarkastuksen kirjaussivu sovelluksessa.",
- "TenantId": "Vuokralaisen tunnus"
+ "Feature:AuditLoggingGroup": "Tarkastuslokin kirjaaminen",
+ "Feature:AuditLoggingEnable": "Ota käyttöön tarkastuslokin kirjaussivu",
+ "Feature:AuditLoggingEnableDescription": "Ota käyttöön tarkastuslokin kirjaussivu sovelluksessa.",
+ "Feature:AuditLoggingSettingManagementEnable": "Ota käyttöön tarkastuslokin asetusten hallinta",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Ota käyttöön tarkastuslokin asetusten hallinnan konfigurointi sovelluksessa.",
+ "InvalidAuditLogDeletionSettings": "Virheelliset tarkastuslokin poisto-asetukset. Jos poistaminen on käytössä, ajanjakson tulee olla suurempi kuin 0 päivää.",
+ "AuditLogSettingsGeneral": "Yleinen",
+ "AuditLogSettingsGlobal": "Globaali",
+ "DisplayName:IsPeriodicDeleterEnabled": "Ota käyttöön siivouspalvelu koko järjestelmässä",
+ "Description:IsPeriodicDeleterEnabled": "Jos tämä vaihtoehto on poistettu käytöstä, jaksollinen poistaja ei toimi. Tarkastuslokeja ei poisteta automaattisesti.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Ota käyttöön siivouspalvelu kaikille vuokralaisille ja isännälle",
+ "Description:GlobalIsExpiredDeleterEnabled": "Jos tämä vaihtoehto on käytössä, kaikki vuokralaisten ja isännän vanhentuneet kohteet poistetaan automaattisesti, ellei niillä ole erityistä asetusta.",
+ "DisplayName:IsExpiredDeleterEnabled": "Ota käyttöön siivouspalvelu",
+ "Description:IsExpiredDeleterEnabled": "Jos tämä vaihtoehto on käytössä, vanhentuneet kohteet poistetaan automaattisesti.",
+ "DisplayName:ExpiredDeleterPeriod": "Vanhentuneiden kohteiden poistojakso",
+ "Description:ExpiredDeleterPeriod": "Aseta päivien määrä, jonka jälkeen vanhentuneet kohteet poistetaan automaattisesti.",
+ "ExpiredDeleterPeriodUnit": "päivä(ä)",
+ "AuditLogsBeforeXWillBeDeleted": "Tarkastuslokit ennen {0} poistetaan.",
+ "TenantId": "Vuokralaisen tunnus",
+ "Permission:Export": "Vie tarkastuslokit",
+ "ExportToExcel": "Vie Exceliin",
+ "Exporting": "Viedään",
+ "ExportCompleted": "Vienti suoritettu onnistuneesti",
+ "ExportFailed": "Vienti epäonnistui",
+ "ExportJobQueued": "Vientityö on asetettu jonoon {0} tietueelle. Saat sähköpostin, kun vienti on valmis.",
+ "ExportReady": "Vienti valmis {0} tietueelle ja valmis ladattavaksi.",
+ "FileName": "Tiedostonimi",
+ "TotalRecords": "Tietueiden kokonaismäärä",
+ "ExcelFileAttachedMessage": "Excel-tiedosto on liitetty tähän sähköpostiin.",
+ "EntityChangeExportCompletedSubject": "Entiteettimuutosten vienti valmis",
+ "AuditLogExportCompletedSubject": "Tarkastuslokin vienti valmis",
+ "DownloadLinkExplanation": "Voit ladata tiedoston alla olevan linkin kautta {0} (UTC) asti",
+ "DownloadNow": "Lataa nyt",
+ "TryAgainMessage": "Yritä uudelleen. Jos ongelma jatkuu, ota yhteyttä tukeen."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fr.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fr.json
index 5ea79065aa..c12e499403 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fr.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/fr.json
@@ -82,6 +82,36 @@
"Feature:AuditLoggingGroup": "Journalisation d'audit",
"Feature:AuditLoggingEnable": "Page de journalisation d'audit activée",
"Feature:AuditLoggingEnableDescription": "Activez la page de journalisation d'audit dans l'application.",
- "TenantId": "ID du locataire"
+ "Feature:AuditLoggingSettingManagementEnable": "Activer la gestion des paramètres de journalisation d'audit",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Activez la configuration de la gestion des paramètres de journalisation d'audit dans l'application.",
+ "InvalidAuditLogDeletionSettings": "Paramètres de suppression de journal d'audit non valides. Si la suppression est activée, la période doit être supérieure à 0 jour.",
+ "AuditLogSettingsGeneral": "Général",
+ "AuditLogSettingsGlobal": "Global",
+ "DisplayName:IsPeriodicDeleterEnabled": "Activer le service de nettoyage à l'échelle du système",
+ "Description:IsPeriodicDeleterEnabled": "Si cette option est désactivée, le suppresseur périodique ne fonctionnera pas. Les journaux d'audit ne seront pas supprimés automatiquement.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Activer le service de nettoyage pour tous les locataires et l'hôte",
+ "Description:GlobalIsExpiredDeleterEnabled": "Si cette option est activée, tous les éléments expirés des locataires et de l'hôte seront supprimés automatiquement, sauf s'il y a un paramètre spécifique.",
+ "DisplayName:IsExpiredDeleterEnabled": "Activer le service de nettoyage",
+ "Description:IsExpiredDeleterEnabled": "Si cette option est activée, les éléments expirés seront supprimés automatiquement.",
+ "DisplayName:ExpiredDeleterPeriod": "Période de suppression des éléments expirés",
+ "Description:ExpiredDeleterPeriod": "Définissez le nombre de jours après lesquels les éléments expirés seront automatiquement supprimés.",
+ "ExpiredDeleterPeriodUnit": "jour(s)",
+ "AuditLogsBeforeXWillBeDeleted": "Les journaux d'audit avant {0} seront supprimés.",
+ "TenantId": "ID du locataire",
+ "Permission:Export": "Exporter les journaux d'audit",
+ "ExportToExcel": "Exporter vers Excel",
+ "Exporting": "Exportation",
+ "ExportCompleted": "Exportation terminée avec succès",
+ "ExportFailed": "Échec de l'exportation",
+ "ExportJobQueued": "Le travail d'exportation a été mis en file d'attente pour {0} enregistrements. Vous recevrez un e-mail lorsque l'exportation sera terminée.",
+ "ExportReady": "Exportation terminée pour {0} enregistrements et prête pour le téléchargement.",
+ "FileName": "Nom du fichier",
+ "TotalRecords": "Total des enregistrements",
+ "ExcelFileAttachedMessage": "Le fichier Excel est joint à cet e-mail.",
+ "EntityChangeExportCompletedSubject": "Exportation des changements d'entité terminée",
+ "AuditLogExportCompletedSubject": "Exportation du journal d'audit terminée",
+ "DownloadLinkExplanation": "Vous pouvez télécharger le fichier en utilisant le lien ci-dessous jusqu'au {0} (UTC)",
+ "DownloadNow": "Télécharger maintenant",
+ "TryAgainMessage": "Veuillez réessayer. Si le problème persiste, veuillez contacter le support."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hi.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hi.json
index 7e1e84de7e..b2e2788e52 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hi.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hi.json
@@ -82,6 +82,9 @@
"Feature:AuditLoggingGroup": "ऑडिट लॉगिंग",
"Feature:AuditLoggingEnable": "सक्षम ऑडिट लॉगिंग पृष्ठ",
"Feature:AuditLoggingEnableDescription": "एप्लिकेशन में ऑडिट लॉगिंग पृष्ठ सक्षम करें।",
- "TenantId": "किरायेदार आईडी"
+ "TenantId": "किरायेदार आईडी",
+ "DownloadLinkExplanation": "आप {0} (UTC) तक नीचे दिए गए लिंक का उपयोग करके फ़ाइल डाउनलोड कर सकते हैं",
+ "DownloadNow": "अभी डाउनलोड करें",
+ "TryAgainMessage": "कृपया पुनः प्रयास करें। यदि समस्या बनी रहती है, तो कृपया सहायता से संपर्क करें।"
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hr.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hr.json
index ed6c345578..7d4a3f57b6 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hr.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hr.json
@@ -82,6 +82,9 @@
"Feature:AuditLoggingGroup": "Zapisivanje revizije",
"Feature:AuditLoggingEnable": "Omogućena stranica za bilježenje revizije",
"Feature:AuditLoggingEnableDescription": "Omogućite stranicu za bilježenje revizije u aplikaciji.",
- "TenantId": "ID stanara"
+ "TenantId": "ID stanara",
+ "DownloadLinkExplanation": "Datoteku možete preuzeti pomoću veze u nastavku do {0} (UTC)",
+ "DownloadNow": "Preuzmi odmah",
+ "TryAgainMessage": "Molimo pokušajte ponovno. Ako se problem nastavi, obratite se podršci."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hu.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hu.json
index 816aa4c0d5..af744ac07b 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hu.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/hu.json
@@ -80,8 +80,38 @@
"StartDate": "Kezdő dátum",
"EndDate": "Befejezés dátuma",
"Feature:AuditLoggingGroup": "Audit naplózás",
- "Feature:AuditLoggingEnable": "Engedélyezett naplózási oldal",
- "Feature:AuditLoggingEnableDescription": "Engedélyezze a naplózási oldalt az alkalmazásban.",
- "TenantId": "Bérlő azonosító"
+ "Feature:AuditLoggingEnable": "Audit naplózási oldal engedélyezése",
+ "Feature:AuditLoggingEnableDescription": "Engedélyezze az audit naplózási oldalt az alkalmazásban.",
+ "Feature:AuditLoggingSettingManagementEnable": "Audit napló beállítások kezelésének engedélyezése",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Engedélyezze az audit napló beállítások kezelésének konfigurációját az alkalmazásban.",
+ "InvalidAuditLogDeletionSettings": "Érvénytelen audit napló törlési beállítások. Ha a törlés engedélyezett, az időszaknak nagyobbnak kell lennie 0 napnál.",
+ "AuditLogSettingsGeneral": "Általános",
+ "AuditLogSettingsGlobal": "Globális",
+ "DisplayName:IsPeriodicDeleterEnabled": "Takarítási szolgáltatás engedélyezése rendszerszinten",
+ "Description:IsPeriodicDeleterEnabled": "Ha ez az opció le van tiltva, a periodikus törlő nem fog működni. Az audit naplók nem lesznek automatikusan törölve.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Takarítási szolgáltatás engedélyezése minden bérlő és host számára",
+ "Description:GlobalIsExpiredDeleterEnabled": "Ha ez az opció engedélyezett, minden bérlő és host lejárt elemei automatikusan törölve lesznek, kivéve ha van specifikus beállítás.",
+ "DisplayName:IsExpiredDeleterEnabled": "Takarítási szolgáltatás engedélyezése",
+ "Description:IsExpiredDeleterEnabled": "Ha ez az opció engedélyezett, a lejárt elemek automatikusan törölve lesznek.",
+ "DisplayName:ExpiredDeleterPeriod": "Lejárt elemek törlési időszaka",
+ "Description:ExpiredDeleterPeriod": "Állítsa be a napok számát, amely után a lejárt elemek automatikusan törölve lesznek.",
+ "ExpiredDeleterPeriodUnit": "nap(ok)",
+ "AuditLogsBeforeXWillBeDeleted": "Az audit naplók {0} előtt törölve lesznek.",
+ "TenantId": "Bérlő azonosító",
+ "Permission:Export": "Audit naplók exportálása",
+ "ExportToExcel": "Exportálás Excelbe",
+ "Exporting": "Exportálás",
+ "ExportCompleted": "Exportálás sikeresen befejezve",
+ "ExportFailed": "Exportálás sikertelen",
+ "ExportJobQueued": "Exportálási feladat sorba állítva {0} rekordhoz. E-mailt fog kapni, amikor az exportálás befejeződött.",
+ "ExportReady": "Exportálás befejezve {0} rekordhoz és letöltésre kész.",
+ "FileName": "Fájlnév",
+ "TotalRecords": "Összes rekord",
+ "ExcelFileAttachedMessage": "Az Excel fájl csatolva van ehhez az e-mailhez.",
+ "EntityChangeExportCompletedSubject": "Entitás változás exportálás befejezve",
+ "AuditLogExportCompletedSubject": "Audit napló exportálás befejezve",
+ "DownloadLinkExplanation": "A fájlt letöltheti az alábbi linken keresztül {0} (UTC) időpontig",
+ "DownloadNow": "Letöltés most",
+ "TryAgainMessage": "Kérjük, próbálja újra. Ha a probléma továbbra is fennáll, forduljon az ügyfélszolgálathoz."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/is.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/is.json
index fc556570ff..2d2f8915f3 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/is.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/is.json
@@ -82,6 +82,9 @@
"Feature:AuditLoggingGroup": "Endurskoðunarskráning",
"Feature:AuditLoggingEnable": "Virkjað endurskoðunarskráningarsíða",
"Feature:AuditLoggingEnableDescription": "Virkjaðu endurskoðunarskráningarsíðu í forritinu.",
- "TenantId": "Leigutakaauðkenni"
+ "TenantId": "Leigutakaauðkenni",
+ "DownloadLinkExplanation": "Þú getur sótt skrána með tenglinum hér að neðan til {0} (UTC)",
+ "DownloadNow": "Sækja núna",
+ "TryAgainMessage": "Vinsamlegast reyndu aftur. Ef vandamálið er viðvarandi, hafðu samband við þjónustuaðila."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/it.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/it.json
index 6e3ef94959..b43511d03b 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/it.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/it.json
@@ -82,6 +82,36 @@
"Feature:AuditLoggingGroup": "Registrazione di controllo",
"Feature:AuditLoggingEnable": "Pagina di registrazione di controllo abilitata",
"Feature:AuditLoggingEnableDescription": "Abilita la pagina di registrazione dell'audit nell'applicazione.",
- "TenantId": "ID inquilino"
+ "Feature:AuditLoggingSettingManagementEnable": "Abilita gestione impostazioni log di audit",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Abilita la configurazione della gestione delle impostazioni del log di audit nell'applicazione.",
+ "InvalidAuditLogDeletionSettings": "Impostazioni di eliminazione del log di audit non valide. Se l'eliminazione è abilitata, il periodo dovrebbe essere maggiore di 0 giorni.",
+ "AuditLogSettingsGeneral": "Generale",
+ "AuditLogSettingsGlobal": "Globale",
+ "DisplayName:IsPeriodicDeleterEnabled": "Abilita servizio di pulizia a livello di sistema",
+ "Description:IsPeriodicDeleterEnabled": "Se questa opzione è disabilitata, l'eliminatore periodico non funzionerà. I log di audit non verranno eliminati automaticamente.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Abilita servizio di pulizia per tutti i tenant e l'host",
+ "Description:GlobalIsExpiredDeleterEnabled": "Se questa opzione è abilitata, tutti gli elementi scaduti dei tenant e dell'host verranno eliminati automaticamente a meno che non abbiano un'impostazione specifica.",
+ "DisplayName:IsExpiredDeleterEnabled": "Abilita servizio di pulizia",
+ "Description:IsExpiredDeleterEnabled": "Se questa opzione è abilitata, gli elementi scaduti verranno eliminati automaticamente.",
+ "DisplayName:ExpiredDeleterPeriod": "Periodo di eliminazione elementi scaduti",
+ "Description:ExpiredDeleterPeriod": "Imposta il numero di giorni dopo i quali gli elementi scaduti verranno eliminati automaticamente.",
+ "ExpiredDeleterPeriodUnit": "giorno(i)",
+ "AuditLogsBeforeXWillBeDeleted": "I log di audit prima di {0} verranno eliminati.",
+ "TenantId": "ID inquilino",
+ "Permission:Export": "Esporta log di audit",
+ "ExportToExcel": "Esporta in Excel",
+ "Exporting": "Esportazione",
+ "ExportCompleted": "Esportazione completata con successo",
+ "ExportFailed": "Esportazione fallita",
+ "ExportJobQueued": "Il lavoro di esportazione è stato messo in coda per {0} record. Riceverai un'email quando l'esportazione sarà completata.",
+ "ExportReady": "Esportazione completata per {0} record e pronta per il download.",
+ "FileName": "Nome file",
+ "TotalRecords": "Record totali",
+ "ExcelFileAttachedMessage": "Il file Excel è allegato a questa email.",
+ "EntityChangeExportCompletedSubject": "Esportazione modifiche entità completata",
+ "AuditLogExportCompletedSubject": "Esportazione log di audit completata",
+ "DownloadLinkExplanation": "Puoi scaricare il file utilizzando il link qui sotto fino a {0} (UTC)",
+ "DownloadNow": "Scarica ora",
+ "TryAgainMessage": "Per favore riprova. Se il problema persiste, contatta il supporto."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/nl.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/nl.json
index 289b2318e3..9b44a3c884 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/nl.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/nl.json
@@ -79,9 +79,39 @@
"DurationMs": "Duur (ms)",
"StartDate": "Begin datum",
"EndDate": "Einddatum",
- "Feature:AuditLoggingGroup": "Auditregistratie",
- "Feature:AuditLoggingEnable": "Pagina voor auditregistratie ingeschakeld",
- "Feature:AuditLoggingEnableDescription": "Schakel de auditlogboekpagina in de applicatie in.",
- "TenantId": "Huurder-ID"
+ "Feature:AuditLoggingGroup": "Auditlogboekregistratie",
+ "Feature:AuditLoggingEnable": "Auditlogboekregistratiepagina ingeschakeld",
+ "Feature:AuditLoggingEnableDescription": "Schakel de auditlogboekregistratiepagina in de applicatie in.",
+ "Feature:AuditLoggingSettingManagementEnable": "Beheer van auditlog-instellingen inschakelen",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Schakel de configuratie van het beheer van auditlog-instellingen binnen de applicatie in.",
+ "InvalidAuditLogDeletionSettings": "Ongeldige instellingen voor het verwijderen van auditlogs. Als verwijdering is ingeschakeld, moet de periode groter zijn dan 0 dagen.",
+ "AuditLogSettingsGeneral": "Algemeen",
+ "AuditLogSettingsGlobal": "Globaal",
+ "DisplayName:IsPeriodicDeleterEnabled": "Opruimservice systeembreed inschakelen",
+ "Description:IsPeriodicDeleterEnabled": "Als deze optie is uitgeschakeld, werkt de periodieke verwijderaar niet. Auditlogs worden niet automatisch verwijderd.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Opruimservice inschakelen voor alle huurders en host",
+ "Description:GlobalIsExpiredDeleterEnabled": "Als deze optie is ingeschakeld, worden alle verlopen items van huurders en de host automatisch verwijderd, tenzij er een specifieke instelling is.",
+ "DisplayName:IsExpiredDeleterEnabled": "Opruimservice inschakelen",
+ "Description:IsExpiredDeleterEnabled": "Als deze optie is ingeschakeld, worden verlopen items automatisch verwijderd.",
+ "DisplayName:ExpiredDeleterPeriod": "Verwijderingsperiode voor verlopen items",
+ "Description:ExpiredDeleterPeriod": "Stel het aantal dagen in waarna verlopen items automatisch worden verwijderd.",
+ "ExpiredDeleterPeriodUnit": "dag(en)",
+ "AuditLogsBeforeXWillBeDeleted": "Auditlogs vóór {0} worden verwijderd.",
+ "TenantId": "Huurder-ID",
+ "Permission:Export": "Auditlogs exporteren",
+ "ExportToExcel": "Exporteren naar Excel",
+ "Exporting": "Exporteren",
+ "ExportCompleted": "Export succesvol voltooid",
+ "ExportFailed": "Export mislukt",
+ "ExportJobQueued": "Exporttaak is in de wachtrij geplaatst voor {0} records. U ontvangt een e-mail wanneer de export is voltooid.",
+ "ExportReady": "Export voltooid voor {0} records en klaar voor download.",
+ "FileName": "Bestandsnaam",
+ "TotalRecords": "Totaal aantal records",
+ "ExcelFileAttachedMessage": "Het Excel-bestand is bijgevoegd bij deze e-mail.",
+ "EntityChangeExportCompletedSubject": "Export van entiteitswijzigingen voltooid",
+ "AuditLogExportCompletedSubject": "Auditlog export voltooid",
+ "DownloadLinkExplanation": "U kunt het bestand downloaden via de onderstaande link tot {0} (UTC)",
+ "DownloadNow": "Download nu",
+ "TryAgainMessage": "Probeer het opnieuw. Als het probleem aanhoudt, neem dan contact op met de ondersteuning."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pl-PL.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pl-PL.json
index 9f4f6db58f..17162d6af8 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pl-PL.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pl-PL.json
@@ -80,8 +80,38 @@
"StartDate": "Data rozpoczęcia",
"EndDate": "Data końcowa",
"Feature:AuditLoggingGroup": "Rejestrowanie audytu",
- "Feature:AuditLoggingEnable": "Włączono stronę rejestrowania audytu",
+ "Feature:AuditLoggingEnable": "Włącz stronę rejestrowania audytu",
"Feature:AuditLoggingEnableDescription": "Włącz stronę rejestrowania audytu w aplikacji.",
- "TenantId": "Identyfikator najemcy"
+ "Feature:AuditLoggingSettingManagementEnable": "Włącz zarządzanie ustawieniami dziennika audytu",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Włącz konfigurację zarządzania ustawieniami dziennika audytu w aplikacji.",
+ "InvalidAuditLogDeletionSettings": "Nieprawidłowe ustawienia usuwania dziennika audytu. Jeśli usuwanie jest włączone, okres powinien być większy niż 0 dni.",
+ "AuditLogSettingsGeneral": "Ogólne",
+ "AuditLogSettingsGlobal": "Globalne",
+ "DisplayName:IsPeriodicDeleterEnabled": "Włącz usługę czyszczenia w całym systemie",
+ "Description:IsPeriodicDeleterEnabled": "Jeśli ta opcja jest wyłączona, okresowy usuwacz nie będzie działać. Dzienniki audytu nie będą automatycznie usuwane.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Włącz usługę czyszczenia dla wszystkich najemców i hosta",
+ "Description:GlobalIsExpiredDeleterEnabled": "Jeśli ta opcja jest włączona, wszystkie wygasłe elementy najemców i hosta będą automatycznie usuwane, chyba że mają określone ustawienie.",
+ "DisplayName:IsExpiredDeleterEnabled": "Włącz usługę czyszczenia",
+ "Description:IsExpiredDeleterEnabled": "Jeśli ta opcja jest włączona, wygasłe elementy będą automatycznie usuwane.",
+ "DisplayName:ExpiredDeleterPeriod": "Okres usuwania wygasłych elementów",
+ "Description:ExpiredDeleterPeriod": "Ustaw liczbę dni, po których wygasłe elementy będą automatycznie usuwane.",
+ "ExpiredDeleterPeriodUnit": "dzień(dni)",
+ "AuditLogsBeforeXWillBeDeleted": "Dzienniki audytu przed {0} zostaną usunięte.",
+ "TenantId": "ID najemcy",
+ "Permission:Export": "Eksportuj dzienniki audytu",
+ "ExportToExcel": "Eksportuj do Excela",
+ "Exporting": "Eksportowanie",
+ "ExportCompleted": "Eksport zakończony pomyślnie",
+ "ExportFailed": "Eksport nieudany",
+ "ExportJobQueued": "Zadanie eksportu zostało umieszczone w kolejce dla {0} rekordów. Otrzymasz e-mail po zakończeniu eksportu.",
+ "ExportReady": "Eksport zakończony dla {0} rekordów i gotowy do pobrania.",
+ "FileName": "Nazwa pliku",
+ "TotalRecords": "Łączna liczba rekordów",
+ "ExcelFileAttachedMessage": "Plik Excel jest załączony do tego e-maila.",
+ "EntityChangeExportCompletedSubject": "Eksport zmian encji zakończony",
+ "AuditLogExportCompletedSubject": "Eksport dziennika audytu zakończony",
+ "DownloadLinkExplanation": "Możesz pobrać plik, korzystając z poniższego łącza do {0} (UTC)",
+ "DownloadNow": "Pobierz teraz",
+ "TryAgainMessage": "Proszę spróbuj ponownie. Jeśli problem nie ustąpi, skontaktuj się z pomocą techniczną."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pt-BR.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pt-BR.json
index d88aba16a6..03ec81d51e 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pt-BR.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/pt-BR.json
@@ -82,6 +82,36 @@
"Feature:AuditLoggingGroup": "Registro de auditoria",
"Feature:AuditLoggingEnable": "Página de registro de auditoria habilitada",
"Feature:AuditLoggingEnableDescription": "Habilite a página de registro de auditoria no aplicativo.",
- "TenantId": "ID do inquilino"
+ "Feature:AuditLoggingSettingManagementEnable": "Habilitar gerenciamento de configurações de log de auditoria",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Habilite a configuração do gerenciamento de configurações de log de auditoria dentro do aplicativo.",
+ "InvalidAuditLogDeletionSettings": "Configurações de exclusão de log de auditoria inválidas. Se a exclusão estiver habilitada, o período deve ser maior que 0 dias.",
+ "AuditLogSettingsGeneral": "Geral",
+ "AuditLogSettingsGlobal": "Global",
+ "DisplayName:IsPeriodicDeleterEnabled": "Habilitar serviço de limpeza em todo o sistema",
+ "Description:IsPeriodicDeleterEnabled": "Se esta opção estiver desabilitada, o excluidor periódico não funcionará. Os logs de auditoria não serão excluídos automaticamente.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Habilitar serviço de limpeza para todos os inquilinos e host",
+ "Description:GlobalIsExpiredDeleterEnabled": "Se esta opção estiver habilitada, todos os itens expirados dos inquilinos e do host serão excluídos automaticamente, a menos que tenham uma configuração específica.",
+ "DisplayName:IsExpiredDeleterEnabled": "Habilitar serviço de limpeza",
+ "Description:IsExpiredDeleterEnabled": "Se esta opção estiver habilitada, os itens expirados serão excluídos automaticamente.",
+ "DisplayName:ExpiredDeleterPeriod": "Período de exclusão de itens expirados",
+ "Description:ExpiredDeleterPeriod": "Defina o número de dias após os quais os itens expirados serão excluídos automaticamente.",
+ "ExpiredDeleterPeriodUnit": "dia(s)",
+ "AuditLogsBeforeXWillBeDeleted": "Os logs de auditoria antes de {0} serão excluídos.",
+ "TenantId": "ID do inquilino",
+ "Permission:Export": "Exportar logs de auditoria",
+ "ExportToExcel": "Exportar para Excel",
+ "Exporting": "Exportando",
+ "ExportCompleted": "Exportação concluída com sucesso",
+ "ExportFailed": "Exportação falhou",
+ "ExportJobQueued": "O trabalho de exportação foi enfileirado para {0} registros. Você receberá um email quando a exportação for concluída.",
+ "ExportReady": "Exportação concluída para {0} registros e pronta para download.",
+ "FileName": "Nome do arquivo",
+ "TotalRecords": "Total de registros",
+ "ExcelFileAttachedMessage": "O arquivo Excel está anexado a este email.",
+ "EntityChangeExportCompletedSubject": "Exportação de mudanças de entidade concluída",
+ "AuditLogExportCompletedSubject": "Exportação de log de auditoria concluída",
+ "DownloadLinkExplanation": "Você pode baixar o arquivo usando o link abaixo até {0} (UTC)",
+ "DownloadNow": "Baixar agora",
+ "TryAgainMessage": "Por favor, tente novamente. Se o problema persistir, entre em contato com o suporte."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ro-RO.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ro-RO.json
index 0b546c4866..2cc471a1e4 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ro-RO.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ro-RO.json
@@ -82,6 +82,9 @@
"Feature:AuditLoggingGroup": "Înregistrare de audit",
"Feature:AuditLoggingEnable": "Pagina de înregistrare a auditului activată",
"Feature:AuditLoggingEnableDescription": "Activați pagina de înregistrare a auditului în aplicație.",
- "TenantId": "ID chiriaș"
+ "TenantId": "ID chiriaș",
+ "DownloadLinkExplanation": "Puteți descărca fișierul folosind link-ul de mai jos până la {0} (UTC)",
+ "DownloadNow": "Descărcați acum",
+ "TryAgainMessage": "Vă rugăm să încercați din nou. Dacă problema persistă, vă rugăm să contactați asistența."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ru.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ru.json
index 9d12238ac2..f07c7baa78 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ru.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/ru.json
@@ -82,6 +82,36 @@
"Feature:AuditLoggingGroup": "Ведение журнала аудита",
"Feature:AuditLoggingEnable": "Включенная страница ведения журнала аудита",
"Feature:AuditLoggingEnableDescription": "Включить страницу ведения журнала аудита в приложении.",
- "TenantId": "Идентификатор арендатора"
+ "Feature:AuditLoggingSettingManagementEnable": "Включить управление настройками журнала аудита",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Включить конфигурацию управления настройками журнала аудита в приложении.",
+ "InvalidAuditLogDeletionSettings": "Недопустимые настройки удаления журнала аудита. Если удаление включено, период должен быть больше 0 дней.",
+ "AuditLogSettingsGeneral": "Общие",
+ "AuditLogSettingsGlobal": "Глобальные",
+ "DisplayName:IsPeriodicDeleterEnabled": "Включить службу очистки в масштабе системы",
+ "Description:IsPeriodicDeleterEnabled": "Если эта опция отключена, периодический удалитель не будет работать. Журналы аудита не будут удаляться автоматически.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Включить службу очистки для всех арендаторов и хоста",
+ "Description:GlobalIsExpiredDeleterEnabled": "Если эта опция включена, все просроченные элементы арендаторов и хоста будут удаляться автоматически, если у них нет специальной настройки.",
+ "DisplayName:IsExpiredDeleterEnabled": "Включить службу очистки",
+ "Description:IsExpiredDeleterEnabled": "Если эта опция включена, просроченные элементы будут удаляться автоматически.",
+ "DisplayName:ExpiredDeleterPeriod": "Период удаления просроченных элементов",
+ "Description:ExpiredDeleterPeriod": "Установите количество дней, после которых просроченные элементы будут автоматически удалены.",
+ "ExpiredDeleterPeriodUnit": "день(дни)",
+ "AuditLogsBeforeXWillBeDeleted": "Журналы аудита до {0} будут удалены.",
+ "TenantId": "Идентификатор арендатора",
+ "Permission:Export": "Экспорт журналов аудита",
+ "ExportToExcel": "Экспорт в Excel",
+ "Exporting": "Экспорт",
+ "ExportCompleted": "Экспорт успешно завершен",
+ "ExportFailed": "Экспорт не удался",
+ "ExportJobQueued": "Задача экспорта поставлена в очередь для {0} записей. Вы получите электронное письмо, когда экспорт будет завершен.",
+ "ExportReady": "Экспорт завершен для {0} записей и готов к загрузке.",
+ "FileName": "Имя файла",
+ "TotalRecords": "Всего записей",
+ "ExcelFileAttachedMessage": "Файл Excel прикреплен к этому электронному письму.",
+ "EntityChangeExportCompletedSubject": "Экспорт изменений сущности завершен",
+ "AuditLogExportCompletedSubject": "Экспорт журнала аудита завершен",
+ "DownloadLinkExplanation": "Вы можете скачать файл по ссылке ниже до {0} (UTC)",
+ "DownloadNow": "Скачать сейчас",
+ "TryAgainMessage": "Пожалуйста, попробуйте еще раз. Если проблема не исчезнет, обратитесь в службу поддержки."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sk.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sk.json
index ae3925ea79..e406b3ec25 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sk.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sk.json
@@ -79,9 +79,39 @@
"DurationMs": "Trvanie (ms)",
"StartDate": "Dátum začiatku",
"EndDate": "Dátum konca",
- "Feature:AuditLoggingGroup": "Audit logovanie",
- "Feature:AuditLoggingEnable": "Povoliť stránku audit logovania",
- "Feature:AuditLoggingEnableDescription": "Povolená stránka audit logovania v aplikácii.",
- "TenantId": "ID nájomníka"
+ "Feature:AuditLoggingGroup": "Protokolovanie auditu",
+ "Feature:AuditLoggingEnable": "Povoliť stránku protokolovania auditu",
+ "Feature:AuditLoggingEnableDescription": "Povoliť stránku protokolovania auditu v aplikácii.",
+ "Feature:AuditLoggingSettingManagementEnable": "Povoliť správu nastavení protokolu auditu",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Povoliť konfiguráciu správy nastavení protokolu auditu v aplikácii.",
+ "InvalidAuditLogDeletionSettings": "Neplatné nastavenia mazania protokolu auditu. Ak je mazanie povolené, obdobie by malo byť väčšie ako 0 dní.",
+ "AuditLogSettingsGeneral": "Všeobecné",
+ "AuditLogSettingsGlobal": "Globálne",
+ "DisplayName:IsPeriodicDeleterEnabled": "Povoliť službu čistenia v celom systéme",
+ "Description:IsPeriodicDeleterEnabled": "Ak je táto možnosť zakázaná, periodický mazač nebude fungovať. Protokoly auditu nebudú automaticky mazané.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Povoliť službu čistenia pre všetkých nájomcov a hostiteľa",
+ "Description:GlobalIsExpiredDeleterEnabled": "Ak je táto možnosť povolená, všetky prešlé položky nájomcov a hostiteľa budú automaticky zmazané, pokiaľ nemajú špecifické nastavenie.",
+ "DisplayName:IsExpiredDeleterEnabled": "Povoliť službu čistenia",
+ "Description:IsExpiredDeleterEnabled": "Ak je táto možnosť povolená, prešlé položky budú automaticky zmazané.",
+ "DisplayName:ExpiredDeleterPeriod": "Obdobie mazania prešlých položiek",
+ "Description:ExpiredDeleterPeriod": "Nastavte počet dní, po ktorých budú prešlé položky automaticky zmazané.",
+ "ExpiredDeleterPeriodUnit": "deň(dni)",
+ "AuditLogsBeforeXWillBeDeleted": "Protokoly auditu pred {0} budú zmazané.",
+ "TenantId": "ID nájomcu",
+ "Permission:Export": "Exportovať protokoly auditu",
+ "ExportToExcel": "Exportovať do Excelu",
+ "Exporting": "Exportovanie",
+ "ExportCompleted": "Export úspešne dokončený",
+ "ExportFailed": "Export sa nepodaril",
+ "ExportJobQueued": "Úloha exportu bola zaradená do fronty pre {0} záznamov. Dostanete e-mail, keď bude export dokončený.",
+ "ExportReady": "Export dokončený pre {0} záznamov a pripravený na stiahnutie.",
+ "FileName": "Názov súboru",
+ "TotalRecords": "Celkom záznamov",
+ "ExcelFileAttachedMessage": "Súbor Excel je pripojený k tomuto e-mailu.",
+ "EntityChangeExportCompletedSubject": "Export zmien entít dokončený",
+ "AuditLogExportCompletedSubject": "Export protokolu auditu dokončený",
+ "DownloadLinkExplanation": "Súbor si môžete stiahnuť pomocou odkazu nižšie do {0} (UTC)",
+ "DownloadNow": "Stiahnuť teraz",
+ "TryAgainMessage": "Skúste to prosím znova. Ak problém pretrváva, kontaktujte podporu."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sl.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sl.json
index 460e43458e..0efc30a3d0 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sl.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sl.json
@@ -79,9 +79,39 @@
"DurationMs": "Trajanje (ms)",
"StartDate": "Začetni datum",
"EndDate": "Končni datum",
- "Feature:AuditLoggingGroup": "Revizijsko beleženje",
- "Feature:AuditLoggingEnable": "Omogočena stran za beleženje revizije",
- "Feature:AuditLoggingEnableDescription": "Omogočite stran za beleženje revizije v aplikaciji.",
- "TenantId": "ID najemnika"
+ "Feature:AuditLoggingGroup": "Beleženje revizije",
+ "Feature:AuditLoggingEnable": "Omogoči stran beleženja revizije",
+ "Feature:AuditLoggingEnableDescription": "Omogočite stran beleženja revizije v aplikaciji.",
+ "Feature:AuditLoggingSettingManagementEnable": "Omogoči upravljanje nastavitev dnevnika revizije",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Omogočite konfiguracijo upravljanja nastavitev dnevnika revizije v aplikaciji.",
+ "InvalidAuditLogDeletionSettings": "Neveljavne nastavitve brisanja dnevnika revizije. Če je brisanje omogočeno, mora biti obdobje večje od 0 dni.",
+ "AuditLogSettingsGeneral": "Splošno",
+ "AuditLogSettingsGlobal": "Globalno",
+ "DisplayName:IsPeriodicDeleterEnabled": "Omogoči storitev čiščenja po celotnem sistemu",
+ "Description:IsPeriodicDeleterEnabled": "Če je ta možnost onemogočena, periodični brisalec ne bo deloval. Dnevniki revizije ne bodo samodejno izbrisani.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Omogoči storitev čiščenja za vse najemnike in gostitelja",
+ "Description:GlobalIsExpiredDeleterEnabled": "Če je ta možnost omogočena, bodo vsi potekli elementi najemnikov in gostitelja samodejno izbrisani, razen če imajo specifično nastavitev.",
+ "DisplayName:IsExpiredDeleterEnabled": "Omogoči storitev čiščenja",
+ "Description:IsExpiredDeleterEnabled": "Če je ta možnost omogočena, bodo potekli elementi samodejno izbrisani.",
+ "DisplayName:ExpiredDeleterPeriod": "Obdobje brisanja poteklih elementov",
+ "Description:ExpiredDeleterPeriod": "Nastavite število dni, po katerih bodo potekli elementi samodejno izbrisani.",
+ "ExpiredDeleterPeriodUnit": "dan(i)",
+ "AuditLogsBeforeXWillBeDeleted": "Dnevniki revizije pred {0} bodo izbrisani.",
+ "TenantId": "ID najemnika",
+ "Permission:Export": "Izvozi dnevnike revizije",
+ "ExportToExcel": "Izvozi v Excel",
+ "Exporting": "Izvažanje",
+ "ExportCompleted": "Izvoz uspešno dokončan",
+ "ExportFailed": "Izvoz neuspešen",
+ "ExportJobQueued": "Naloga izvoza je bila postavljena v vrsto za {0} zapisov. Prejeli boste e-pošto, ko bo izvoz dokončan.",
+ "ExportReady": "Izvoz dokončan za {0} zapisov in pripravljen za prenos.",
+ "FileName": "Ime datoteke",
+ "TotalRecords": "Skupaj zapisov",
+ "ExcelFileAttachedMessage": "Datoteka Excel je priložena tej e-pošti.",
+ "EntityChangeExportCompletedSubject": "Izvoz sprememb entitet dokončan",
+ "AuditLogExportCompletedSubject": "Izvoz dnevnika revizije dokončan",
+ "DownloadLinkExplanation": "Datoteko lahko prenesete s spodnjo povezavo do {0} (UTC)",
+ "DownloadNow": "Prenesi zdaj",
+ "TryAgainMessage": "Prosimo, poskusite znova. Če težava vztraja, se obrnite na podporo."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sv.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sv.json
index 3c57005a3d..b3a44c27ed 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sv.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/sv.json
@@ -79,24 +79,39 @@
"DurationMs": "Varaktighet (ms)",
"StartDate": "Startdatum",
"EndDate": "Slutdatum",
- "Feature:AuditLoggingGroup": "Granskning av loggning",
- "Feature:AuditLoggingEnable": "Aktivera granskningsloggning sida",
- "Feature:AuditLoggingEnableDescription": "Aktivera sidan för granskningsloggning i programmet.",
- "Feature:AuditLoggingSettingManagementEnable": "Aktivera hantering av inställningar för granskningslogg",
- "Feature:AuditLoggingSettingManagementEnableDescription": "Aktivera konfigurationen av inställningshanteringen för granskningsloggen i programmet.",
- "InvalidAuditLogDeletionSettings": "Ogiltiga inställningar för radering av revisionslogg. Om radering är aktiverad ska perioden vara större än 0 dagar.",
+ "Feature:AuditLoggingGroup": "Granskningsloggning",
+ "Feature:AuditLoggingEnable": "Aktivera granskningsloggningssida",
+ "Feature:AuditLoggingEnableDescription": "Aktivera granskningsloggningssidan i applikationen.",
+ "Feature:AuditLoggingSettingManagementEnable": "Aktivera hantering av granskningslogginställningar",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "Aktivera konfiguration av hantering av granskningslogginställningar inom applikationen.",
+ "InvalidAuditLogDeletionSettings": "Ogiltiga inställningar för borttagning av granskningslogg. Om borttagning är aktiverat ska perioden vara större än 0 dagar.",
"AuditLogSettingsGeneral": "Allmänt",
"AuditLogSettingsGlobal": "Globalt",
- "DisplayName:IsPeriodicDeleterEnabled": "Möjliggör uppstädning av hela systemet",
- "Description:IsPeriodicDeleterEnabled": "Om detta alternativ är avaktiverat fungerar inte den periodiska raderingen. Granskningsloggar kommer inte att raderas automatiskt.",
- "DisplayName:GlobalIsExpiredDeleterEnabled": "Aktivera städservice för alla hyresgäster och värd",
- "Description:GlobalIsExpiredDeleterEnabled": "Om det här alternativet är aktiverat raderas alla förfallna objekt för hyresgäster och värd automatiskt om det inte har en specifik inställning.",
- "DisplayName:IsExpiredDeleterEnabled": "Möjliggör städning",
- "Description:IsExpiredDeleterEnabled": "Om detta alternativ är aktiverat raderas de utgångna artiklarna automatiskt.",
- "DisplayName:ExpiredDeleterPeriod": "Utgången raderingsperiod för objekt",
- "Description:ExpiredDeleterPeriod": "Ställ in antalet dagar efter vilka utgångna objekt automatiskt ska raderas.",
+ "DisplayName:IsPeriodicDeleterEnabled": "Aktivera rengöringstjänst systemomfattande",
+ "Description:IsPeriodicDeleterEnabled": "Om detta alternativ är inaktiverat kommer den periodiska raderaren inte att fungera. Granskningsloggar kommer inte att raderas automatiskt.",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "Aktivera rengöringstjänst för alla hyresgäster och värd",
+ "Description:GlobalIsExpiredDeleterEnabled": "Om detta alternativ är aktiverat kommer alla utgångna objekt för hyresgäster och värd att raderas automatiskt såvida de inte har en specifik inställning.",
+ "DisplayName:IsExpiredDeleterEnabled": "Aktivera rengöringstjänst",
+ "Description:IsExpiredDeleterEnabled": "Om detta alternativ är aktiverat kommer utgångna objekt att raderas automatiskt.",
+ "DisplayName:ExpiredDeleterPeriod": "Period för radering av utgångna objekt",
+ "Description:ExpiredDeleterPeriod": "Ange antalet dagar efter vilka utgångna objekt kommer att raderas automatiskt.",
"ExpiredDeleterPeriodUnit": "dag(ar)",
"AuditLogsBeforeXWillBeDeleted": "Granskningsloggar före {0} kommer att raderas.",
- "TenantId": "Hyresgäst-ID"
+ "TenantId": "Hyresgäst-ID",
+ "Permission:Export": "Exportera granskningsloggar",
+ "ExportToExcel": "Exportera till Excel",
+ "Exporting": "Exporterar",
+ "ExportCompleted": "Export slutförd framgångsrikt",
+ "ExportFailed": "Export misslyckades",
+ "ExportJobQueued": "Exportjobb har köats för {0} poster. Du kommer att få ett e-postmeddelande när exporten är klar.",
+ "ExportReady": "Export slutförd för {0} poster och redo för nedladdning.",
+ "FileName": "Filnamn",
+ "TotalRecords": "Totalt antal poster",
+ "ExcelFileAttachedMessage": "Excel-filen är bifogad till detta e-postmeddelande.",
+ "EntityChangeExportCompletedSubject": "Export av entitetsändringar slutförd",
+ "AuditLogExportCompletedSubject": "Export av granskningslogg slutförd",
+ "DownloadLinkExplanation": "Du kan ladda ner filen via länken nedan fram till {0} (UTC)",
+ "DownloadNow": "Ladda ner nu",
+ "TryAgainMessage": "Försök igen. Om problemet kvarstår, kontakta support."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/tr.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/tr.json
index b3e09335fc..86105e1a08 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/tr.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/tr.json
@@ -82,6 +82,21 @@
"Feature:AuditLoggingEnable": "İşlem kayıtları sayfasını etkinleştirin",
"Feature:AuditLoggingEnableDescription": "Uygulamadanızdaki işlem kayıtları sayfasını etkinleştirir.",
"MinMaxDuration": "Süre (Min. - Max.)",
- "TenantId": "Müşteri Id"
+ "TenantId": "Müşteri Id",
+ "Permission:Export": "İşlem kayıtlarını dışa aktar",
+ "ExportToExcel": "Excel'e Aktar",
+ "Exporting": "Aktarılıyor",
+ "ExportCompleted": "Aktarma başarıyla tamamlandı",
+ "ExportFailed": "Aktarma başarısız",
+ "ExportJobQueued": "{0} kayıt için dışa aktarma işi sıraya alındı. İşlem tamamlandığında e-posta ile bilgilendirileceksiniz.",
+ "ExportReady": "{0} kayıt için dışa aktarma tamamlandı ve indirme için hazır.",
+ "FileName": "Dosya adı",
+ "TotalRecords": "Toplam kayıt",
+ "ExcelFileAttachedMessage": "Excel dosyası bu e-postaya eklenmiştir.",
+ "EntityChangeExportCompletedSubject": "Entity değişiklik dışa aktarma tamamlandı",
+ "AuditLogExportCompletedSubject": "İşlem log dışa aktarma tamamlandı",
+ "DownloadLinkExplanation": "Dosyayı aşağıdaki bağlantıyı kullanarak {0} (UTC) tarihine kadar indirebilirsiniz",
+ "DownloadNow": "Şimdi İndir",
+ "TryAgainMessage": "Lütfen tekrar deneyin. Sorun devam ederse, lütfen destek ekibiyle iletişime geçin."
}
}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/vi.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/vi.json
index 933593c168..ad4f040a96 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/vi.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/vi.json
@@ -82,6 +82,9 @@
"Feature:AuditLoggingGroup": "Ghi nhật ký kiểm tra",
"Feature:AuditLoggingEnable": "Đã bật trang ghi nhật ký kiểm tra",
"Feature:AuditLoggingEnableDescription": "Kích hoạt trang ghi nhật ký kiểm tra trong ứng dụng.",
- "TenantId": "ID người thuê"
+ "TenantId": "ID người thuê",
+ "DownloadLinkExplanation": "Bạn có thể tải xuống tệp bằng liên kết bên dưới cho đến {0} (UTC)",
+ "DownloadNow": "Tải xuống ngay",
+ "TryAgainMessage": "Vui lòng thử lại. Nếu sự cố vẫn tiếp diễn, vui lòng liên hệ bộ phận hỗ trợ."
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json
index dc9cc4d667..4b3d61f2a3 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json
@@ -80,8 +80,38 @@
"StartDate": "开始日期",
"EndDate": "结束日期",
"Feature:AuditLoggingGroup": "审计日志",
- "Feature:AuditLoggingEnable": "启用审计记录页面",
+ "Feature:AuditLoggingEnable": "启用审计日志页面",
"Feature:AuditLoggingEnableDescription": "在应用程序中启用审计日志页面。",
- "TenantId": "租户 ID"
+ "Feature:AuditLoggingSettingManagementEnable": "启用审计日志设置管理",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "在应用程序中启用审计日志设置管理的配置。",
+ "InvalidAuditLogDeletionSettings": "无效的审计日志删除设置。如果启用删除,期间应大于0天。",
+ "AuditLogSettingsGeneral": "常规",
+ "AuditLogSettingsGlobal": "全局",
+ "DisplayName:IsPeriodicDeleterEnabled": "启用系统范围的清理服务",
+ "Description:IsPeriodicDeleterEnabled": "如果禁用此选项,定期删除器将不工作。审计日志不会自动删除。",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "为所有租户和主机启用清理服务",
+ "Description:GlobalIsExpiredDeleterEnabled": "如果启用此选项,所有租户和主机的过期项目将自动删除,除非有特定设置。",
+ "DisplayName:IsExpiredDeleterEnabled": "启用清理服务",
+ "Description:IsExpiredDeleterEnabled": "如果启用此选项,过期项目将自动删除。",
+ "DisplayName:ExpiredDeleterPeriod": "过期项目删除期间",
+ "Description:ExpiredDeleterPeriod": "设置过期项目自动删除的天数。",
+ "ExpiredDeleterPeriodUnit": "天",
+ "AuditLogsBeforeXWillBeDeleted": "{0}之前的审计日志将被删除。",
+ "TenantId": "租户ID",
+ "Permission:Export": "导出审计日志",
+ "ExportToExcel": "导出到Excel",
+ "Exporting": "导出中",
+ "ExportCompleted": "导出成功完成",
+ "ExportFailed": "导出失败",
+ "ExportJobQueued": "导出作业已为{0}条记录排队。导出完成后您将收到电子邮件。",
+ "ExportReady": "{0}条记录的导出已完成,可以下载。",
+ "FileName": "文件名",
+ "TotalRecords": "总记录数",
+ "ExcelFileAttachedMessage": "Excel文件已附加到此电子邮件。",
+ "EntityChangeExportCompletedSubject": "实体变更导出已完成",
+ "AuditLogExportCompletedSubject": "审计日志导出已完成",
+ "DownloadLinkExplanation": "您可以使用下面的链接下载文件,直到{0}(UTC)",
+ "DownloadNow": "立即下载",
+ "TryAgainMessage": "请再试一次。如果问题仍然存在,请联系支持人员。"
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hant.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hant.json
index dc0275186d..00e9cc4c08 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hant.json
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hant.json
@@ -79,9 +79,39 @@
"DurationMs": "持續時間(毫秒)",
"StartDate": "開始時間",
"EndDate": "結束時間",
- "Feature:AuditLoggingGroup": "審計日誌",
- "Feature:AuditLoggingEnable": "啟用審計日誌頁面",
- "Feature:AuditLoggingEnableDescription": "在應用程序中啟用審計日誌頁面.",
- "TenantId": "租戶 ID"
+ "Feature:AuditLoggingGroup": "稽核日誌",
+ "Feature:AuditLoggingEnable": "啟用稽核日誌頁面",
+ "Feature:AuditLoggingEnableDescription": "在應用程式中啟用稽核日誌頁面。",
+ "Feature:AuditLoggingSettingManagementEnable": "啟用稽核日誌設定管理",
+ "Feature:AuditLoggingSettingManagementEnableDescription": "在應用程式中啟用稽核日誌設定管理的配置。",
+ "InvalidAuditLogDeletionSettings": "無效的稽核日誌刪除設定。如果啟用刪除,期間應大於0天。",
+ "AuditLogSettingsGeneral": "一般",
+ "AuditLogSettingsGlobal": "全域",
+ "DisplayName:IsPeriodicDeleterEnabled": "啟用系統範圍的清理服務",
+ "Description:IsPeriodicDeleterEnabled": "如果停用此選項,定期刪除器將不工作。稽核日誌不會自動刪除。",
+ "DisplayName:GlobalIsExpiredDeleterEnabled": "為所有租戶和主機啟用清理服務",
+ "Description:GlobalIsExpiredDeleterEnabled": "如果啟用此選項,所有租戶和主機的過期項目將自動刪除,除非有特定設定。",
+ "DisplayName:IsExpiredDeleterEnabled": "啟用清理服務",
+ "Description:IsExpiredDeleterEnabled": "如果啟用此選項,過期項目將自動刪除。",
+ "DisplayName:ExpiredDeleterPeriod": "過期項目刪除期間",
+ "Description:ExpiredDeleterPeriod": "設定過期項目自動刪除的天數。",
+ "ExpiredDeleterPeriodUnit": "天",
+ "AuditLogsBeforeXWillBeDeleted": "{0}之前的稽核日誌將被刪除。",
+ "TenantId": "租戶ID",
+ "Permission:Export": "匯出稽核日誌",
+ "ExportToExcel": "匯出到Excel",
+ "Exporting": "匯出中",
+ "ExportCompleted": "匯出成功完成",
+ "ExportFailed": "匯出失敗",
+ "ExportJobQueued": "匯出作業已為{0}條記錄排隊。匯出完成後您將收到電子郵件。",
+ "ExportReady": "{0}條記錄的匯出已完成,可以下載。",
+ "FileName": "檔案名稱",
+ "TotalRecords": "總記錄數",
+ "ExcelFileAttachedMessage": "Excel檔案已附加到此電子郵件。",
+ "EntityChangeExportCompletedSubject": "實體變更匯出已完成",
+ "AuditLogExportCompletedSubject": "稽核日誌匯出已完成",
+ "DownloadLinkExplanation": "您可以使用下面的連結下載檔案,直到{0}(UTC)",
+ "DownloadNow": "立即下載",
+ "TryAgainMessage": "請再試一次。如果問題仍然存在,請聯絡支援人員。"
}
}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogExcelFile.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogExcelFile.cs
new file mode 100644
index 0000000000..ed2e99db4c
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogExcelFile.cs
@@ -0,0 +1,27 @@
+using System;
+using Volo.Abp.Domain.Entities.Auditing;
+using Volo.Abp.MultiTenancy;
+
+namespace Volo.Abp.AuditLogging;
+
+public class AuditLogExcelFile : CreationAuditedEntity, IMultiTenant
+{
+ public virtual Guid? TenantId { get; protected set; }
+
+ public virtual string FileName { get; protected set; }
+
+ protected AuditLogExcelFile()
+ {
+ }
+
+ public AuditLogExcelFile(
+ Guid id,
+ string fileName,
+ Guid? tenantId = null,
+ Guid? creatorId = null) : base(id)
+ {
+ FileName = Check.NotNullOrWhiteSpace(fileName, nameof(fileName), AuditLogExcelFileConsts.MaxFileNameLength);
+ TenantId = tenantId;
+ CreatorId = creatorId;
+ }
+}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/IAuditLogExcelFileRepository.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/IAuditLogExcelFileRepository.cs
new file mode 100644
index 0000000000..b29ec07684
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/IAuditLogExcelFileRepository.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Repositories;
+
+namespace Volo.Abp.AuditLogging;
+
+public interface IAuditLogExcelFileRepository : IRepository
+{
+ Task> GetListCreationTimeBeforeAsync(
+ DateTime creationTimeBefore,
+ int maxResultCount = 50,
+ CancellationToken cancellationToken = default);
+}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContext.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContext.cs
index b0e4eee5ba..16f6ac5603 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContext.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContext.cs
@@ -9,6 +9,8 @@ public class AbpAuditLoggingDbContext : AbpDbContext,
{
public DbSet AuditLogs { get; set; }
+ public DbSet AuditLogExcelFiles { get; set; }
+
public AbpAuditLoggingDbContext(DbContextOptions options)
: base(options)
{
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs
index e63d806993..da73060c8e 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs
@@ -103,6 +103,13 @@ public static class AbpAuditLoggingDbContextModelBuilderExtensions
b.ApplyObjectExtensionMappings();
});
+ builder.Entity(b =>
+ {
+ b.ToTable(AbpAuditLoggingDbProperties.DbTablePrefix + "AuditLogExcelFiles", AbpAuditLoggingDbProperties.DbSchema);
+ b.ConfigureByConvention();
+ b.Property(x => x.FileName).HasMaxLength(AuditLogExcelFileConsts.MaxFileNameLength).HasColumnName(nameof(AuditLogExcelFile.FileName));
+ });
+
builder.TryConfigureObjectExtensions();
}
}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreModule.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreModule.cs
index d413994f87..28d1436088 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreModule.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreModule.cs
@@ -13,6 +13,7 @@ public class AbpAuditLoggingEntityFrameworkCoreModule : AbpModule
context.Services.AddAbpDbContext(options =>
{
options.AddRepository();
+ options.AddRepository();
});
}
}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/EfCoreAuditLogExcelFileRepository.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/EfCoreAuditLogExcelFileRepository.cs
new file mode 100644
index 0000000000..d3b8cc8d7c
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/EfCoreAuditLogExcelFileRepository.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace Volo.Abp.AuditLogging.EntityFrameworkCore;
+
+public class EfCoreAuditLogExcelFileRepository : EfCoreRepository, IAuditLogExcelFileRepository
+{
+ public EfCoreAuditLogExcelFileRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
+ {
+ }
+
+ public async Task> GetListCreationTimeBeforeAsync(
+ DateTime creationTimeBefore,
+ int maxResultCount = 50,
+ CancellationToken cancellationToken = default)
+ {
+ var queryable = await GetQueryableAsync();
+ return await queryable.Where(x => x.CreationTime < creationTimeBefore).Take(maxResultCount).ToListAsync(cancellationToken);
+ }
+}
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/IAuditLoggingDbContext.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/IAuditLoggingDbContext.cs
index ca03f6b6a3..d2f47e574b 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/IAuditLoggingDbContext.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/IAuditLoggingDbContext.cs
@@ -8,4 +8,6 @@ namespace Volo.Abp.AuditLogging.EntityFrameworkCore;
public interface IAuditLoggingDbContext : IEfCoreDbContext
{
DbSet AuditLogs { get; }
+
+ DbSet AuditLogExcelFiles { get; }
}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbContextExtensions.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbContextExtensions.cs
index b20a2b20a2..3f48b34bb2 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbContextExtensions.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbContextExtensions.cs
@@ -13,5 +13,10 @@ public static class AbpAuditLoggingMongoDbContextExtensions
{
b.CollectionName = AbpAuditLoggingDbProperties.DbTablePrefix + "AuditLogs";
});
+
+ builder.Entity(b =>
+ {
+ b.CollectionName = AbpAuditLoggingDbProperties.DbTablePrefix + "AuditLogExcelFiles";
+ });
}
}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbModule.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbModule.cs
index 116df1f0f6..ab46e8d1cc 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbModule.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbModule.cs
@@ -13,6 +13,7 @@ public class AbpAuditLoggingMongoDbModule : AbpModule
context.Services.AddMongoDbContext(options =>
{
options.AddRepository();
+ options.AddRepository();
});
}
}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AuditLoggingMongoDbContext.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AuditLoggingMongoDbContext.cs
index d755029372..1d286022e1 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AuditLoggingMongoDbContext.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AuditLoggingMongoDbContext.cs
@@ -9,6 +9,8 @@ public class AuditLoggingMongoDbContext : AbpMongoDbContext, IAuditLoggingMongoD
{
public IMongoCollection AuditLogs => Collection();
+ public IMongoCollection AuditLogExcelFiles => Collection();
+
protected override void CreateModel(IMongoModelBuilder modelBuilder)
{
base.CreateModel(modelBuilder);
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/IAuditLoggingMongoDbContext.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/IAuditLoggingMongoDbContext.cs
index 54350672ab..e11241ddb1 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/IAuditLoggingMongoDbContext.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/IAuditLoggingMongoDbContext.cs
@@ -8,4 +8,6 @@ namespace Volo.Abp.AuditLogging.MongoDB;
public interface IAuditLoggingMongoDbContext : IAbpMongoDbContext
{
IMongoCollection AuditLogs { get; }
+
+ IMongoCollection AuditLogExcelFiles { get; }
}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/MongoAuditLogExcelFileRepository.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/MongoAuditLogExcelFileRepository.cs
new file mode 100644
index 0000000000..3e2ab68361
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/MongoAuditLogExcelFileRepository.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using MongoDB.Driver.Linq;
+using Volo.Abp.Domain.Repositories.MongoDB;
+using Volo.Abp.MongoDB;
+
+namespace Volo.Abp.AuditLogging.MongoDB;
+
+public class MongoAuditLogExcelFileRepository : MongoDbRepository, IAuditLogExcelFileRepository
+{
+ public MongoAuditLogExcelFileRepository(IMongoDbContextProvider dbContextProvider) : base(dbContextProvider)
+ {
+ }
+
+ public async Task> GetListCreationTimeBeforeAsync(DateTime creationTimeBefore, int maxResultCount = 50, CancellationToken cancellationToken = default)
+ {
+ var queryable = await GetQueryableAsync();
+ return await queryable.Where(x => x.CreationTime < creationTimeBefore).Take(maxResultCount).ToListAsync(cancellationToken);
+ }
+}
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
index 761ce4be75..d0e6ac3931 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
@@ -3,8 +3,8 @@
"name": "asp.net",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "~9.2.0-rc.4",
- "@abp/prismjs": "~9.2.0-rc.4",
- "@abp/highlight.js": "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.shared": "~9.2.0",
+ "@abp/prismjs": "~9.2.0",
+ "@abp/highlight.js": "~9.2.0"
}
}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
index 36daf84280..267e042944 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
@@ -2,203 +2,203 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.4.tgz#4212523cc2d2db881d2a0a9c1b28f372c53c19d7"
- integrity sha512-z6nCmIfcaiQ6CPHhVq0C6RYljjrqScVVj+Sf0uI8eP6qG+CVT/aEVgb+3Nc5EM5SjDvR/eTxH4J3YcVNDj32Lg==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.4"
- "@abp/bootstrap" "~9.2.0-rc.4"
- "@abp/bootstrap-datepicker" "~9.2.0-rc.4"
- "@abp/bootstrap-daterangepicker" "~9.2.0-rc.4"
- "@abp/datatables.net-bs5" "~9.2.0-rc.4"
- "@abp/font-awesome" "~9.2.0-rc.4"
- "@abp/jquery-form" "~9.2.0-rc.4"
- "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.4"
- "@abp/lodash" "~9.2.0-rc.4"
- "@abp/luxon" "~9.2.0-rc.4"
- "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.4"
- "@abp/moment" "~9.2.0-rc.4"
- "@abp/select2" "~9.2.0-rc.4"
- "@abp/sweetalert2" "~9.2.0-rc.4"
- "@abp/timeago" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.4.tgz#a47763a480e488363b901327d94556fdad6cccb7"
- integrity sha512-7fxC3zifdnpJZwKsP1hgK0+mu9y/w4zrMY1rR8AVvcpMdt8/Mmtj6mJi+Ompv3YtO9F/Zgnxqma5R0pYMTke7g==
+"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0.tgz#791f419e8e0fab229e3f93f7a90edcd259100206"
+ integrity sha512-Mrs+kQg0S5OyRsPBwXQTqOq2DBWDdot7emETcX/gatv26GFbRe3nTOk1E+VWD/nsxHEOKTSE8LClC6TgkMxD8Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~9.2.0"
+ "@abp/bootstrap" "~9.2.0"
+ "@abp/bootstrap-datepicker" "~9.2.0"
+ "@abp/bootstrap-daterangepicker" "~9.2.0"
+ "@abp/datatables.net-bs5" "~9.2.0"
+ "@abp/font-awesome" "~9.2.0"
+ "@abp/jquery-form" "~9.2.0"
+ "@abp/jquery-validation-unobtrusive" "~9.2.0"
+ "@abp/lodash" "~9.2.0"
+ "@abp/luxon" "~9.2.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~9.2.0"
+ "@abp/moment" "~9.2.0"
+ "@abp/select2" "~9.2.0"
+ "@abp/sweetalert2" "~9.2.0"
+ "@abp/timeago" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0.tgz#e3e703ea46caf04cc966ea0af6deb64427a90d4c"
+ integrity sha512-VHH68/7Bw7r8p70T9grnVISgYPe2t3m9199S/wAXGtpGHML/lbHhDflWbm7y1MHcrmCfaXy42O9SmTHV25BJhA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.4.tgz#0aec67332e3148e21658650bfaaa08c64180e2ad"
- integrity sha512-CaD709aGigfQk76XDshSrctm9TkgjA+7XgnDuVraPRPwq4dwXGIhbNAiJ1+5k6OXrUHqJP3nPc4NDPZiXDwgqw==
+"@abp/bootstrap-datepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0.tgz#271ff68e2cee7b4ffe5a60406561a05948d6bbe6"
+ integrity sha512-V8o1cn1MKXE5GH1ZpBHiWWilzxjHIp4IS6rNoCDBSnaQcVvRku9KPI8tPNQSf+4x3jBfHDV9aOBDbDGTQ6J2yw==
dependencies:
bootstrap-datepicker "^1.10.0"
-"@abp/bootstrap-daterangepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.4.tgz#b08d564b0dfc8be62a052fc205e1445764b6a2d0"
- integrity sha512-zwWkb6JaUqN2rtIGLtb0Cf1RtP0nuCFK0x2r4J9kYnv1vKiT8vrK2Jl5mJVjvdnO0JifS1rueDMPglVpOeghRw==
+"@abp/bootstrap-daterangepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0.tgz#a239f8c2efce57d2e2beca70ceeede52d1b177d5"
+ integrity sha512-Cd9naCyepTvmUotkR1VyOBqUMgyeSXnOVWR7HxXm+jugKtnWRzrztZB6UyfnNzzjc1RMOyiAUEjzitKSJrXeoA==
dependencies:
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.4.tgz#0615ec9fa7422d76e8f4af22ec28fe9672d60c38"
- integrity sha512-m1ORR/R84nPEfid/x5rC5jy4orsw4yhkk4nApiW11H4Eb7ssbcviR75ugJ5GBt3GOevHHlTZWwvf8K4C+zdqZg==
+"@abp/bootstrap@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0.tgz#08859288b8372ea111a240b507047b144d6caca9"
+ integrity sha512-L3EZQza2c/5VmvZkLsf0EOuaMi8fseyyiwlFN65i1hpcDwhOLcaqnxMneeaSJ+Dy4xczJT+oBml9D9OSTuzmkA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
bootstrap "^5.3.3"
-"@abp/clipboard@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.4.tgz#e91e8c9b9947cef648e31f17ac8050d342a88416"
- integrity sha512-iUvCQK3YJKPflLWkXNsueXit+Ipez5+R5q4OdngcvTmVXIUoH8t+3iiM+Q7ohA0vRknsdEGPMUUS7TnDW9fVqA==
+"@abp/clipboard@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0.tgz#348a0e45752c7eb055fb00af52660593ad340caf"
+ integrity sha512-2+wt2ShLBfoHqx0DNNevJkaz1POLcs1tcK1hL4ZqsjOnS7BrTk1r8zwNvCw1XEeH2S1rPftAWH4PvzL4j86DFA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
clipboard "^2.0.11"
-"@abp/core@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.4.tgz#b758ea117ae3e3e3596e407a347617b8fcb6c112"
- integrity sha512-eNklBpyUAort/UEhgmnvMglBS/FSAzUiKalN7hgJFKx0nd3cDDkjkN6YFY8VuPInt3YfRz5omZQsGNq7eyjtbQ==
+"@abp/core@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0.tgz#db08fd34cfc891e94eb9e59ed3c0d0e6ef45c51a"
+ integrity sha512-3iESoHFj8I2xK81dwQVpCI6C1bc87VfWKyJE3/IUv4zWvG4QvI0aKhe1wxocmJqTjjowPUA3/fa2hvpfqPs2Bw==
dependencies:
- "@abp/utils" "~9.2.0-rc.4"
+ "@abp/utils" "~9.2.0"
-"@abp/datatables.net-bs5@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.4.tgz#75c12fe053d593b738bb5ca7394b2954409f5e00"
- integrity sha512-5FG5Jc6Co9q/1xYmmW2SabSaXVkdJohPJ9XtzTthwnY8Ko5eGV7TPkEfwwsk0PLXp+Wu3ifQaZI4CIE9WR81XA==
+"@abp/datatables.net-bs5@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0.tgz#eab201c959727c27aaab30dc5bd8159249d8b54b"
+ integrity sha512-bmK6GKffXzYbfkDIlN27D7mohnYsXoODEiHqhZnBdIzeSJyHwrwRPRVbO1EcBn1SEBHjGJp3S69Z6gDbRs018g==
dependencies:
- "@abp/datatables.net" "~9.2.0-rc.4"
+ "@abp/datatables.net" "~9.2.0"
datatables.net-bs5 "^2.1.8"
-"@abp/datatables.net@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.4.tgz#523b017e4b9ea9d3a6d3262f66bd3daaade05c0b"
- integrity sha512-udCSjJYYpi/Ql/KJZxYDMxbtX6gXw7hsfMxQjP0u37JsyNLgd4fTrzaXCe7OKn3x7poJcANoqsEgWow/9R/WIg==
+"@abp/datatables.net@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0.tgz#e4880fe074d86d3c5dbd7f48c86244790fc376c2"
+ integrity sha512-bKaaa+tl0Pt4oNaV+X8pBbvsHc2mPYoL7yuAs+LN8ZLwBdsGoUw7RNhLQ63O3tuYdHuaHhI/mx23X6JThr0SYw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
datatables.net "^2.1.8"
-"@abp/font-awesome@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.4.tgz#31d9fa475af3b543ddaff16e6af8caba966bd331"
- integrity sha512-FYmfrf2mX5rzU+GqK078rn85UmfAwdCB8JQhnGfkylybMRJvmocRsPBIEThjlFZAPGqqvULHUTRMwnRPTgpuNw==
+"@abp/font-awesome@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0.tgz#3e359da2510cbc0e5b9e46e9cb3664baf285722e"
+ integrity sha512-HRGg6XK3bCxFdVvEBnBKyLamqMUrenj//E4JuKOs8DtGLVH0jTyh8TwUT5/E/pI+POV7HEOpv9WpSB2p8pfsAg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
"@fortawesome/fontawesome-free" "^6.6.0"
-"@abp/highlight.js@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-9.2.0-rc.4.tgz#34b5e4ac1c340b6da27a3f9f2c9d565f08a69438"
- integrity sha512-Rwn6YUIbty5LuDm0PH5OM0j7Vk4OrZgWncgsubSekc/r8fh/ry6spoxdjuBB/AjwM8ZlJ0DWMQLw51K6Y18z7A==
+"@abp/highlight.js@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-9.2.0.tgz#85ac7c252aee377c2ff9e15153c692fdea5cb96d"
+ integrity sha512-zD6UVZNUQEJ22ynqQs14jR8eBWQR7loOCpt9lPlIjXF6tnoBvcc7NBeBFw9ehKjkG2cegJCmahYb4cFnlJFigA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
"@highlightjs/cdn-assets" "~11.10.0"
-"@abp/jquery-form@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.4.tgz#b200be90031b58305a2ebfd646ffbd5ce4cca40c"
- integrity sha512-ohCtIfz48E0+vNdNyKTsLlfW0NYMJfKWXd9BPp2szgBaDbC7jYdGYyABbxGxRc7mp1B8xQzRhLnTzdRtWaJemg==
+"@abp/jquery-form@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0.tgz#40fac992584c26e6c54f66e7f68f8abf8944a626"
+ integrity sha512-B7Shq1itQjsnzdU1kjLpGHWjkSGFhIM2iF5BNMkqcylG3Yq1Se4+8QPoJpn/soilmtX8gbO2fx8TOejfIazXIw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.4.tgz#0329f9268b83e0832e26ea3f6523dbc5226b9114"
- integrity sha512-iOnw5YoiC3bCIFRjuXPagz+ixFV+PM36hP0UJ4x03BK6GDJnAvjLshYe6qnQG9Xnz1arzmIX5ud5EjWvWSBIoA==
+"@abp/jquery-validation-unobtrusive@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0.tgz#c2df51d024d48e71f0e7fb8d4207a8b2855393f4"
+ integrity sha512-c1cPfWVdo+gpaMoegAkw0DzGL2fy/1ylEi/shb95MAGt3iyECVx+X+R/XOxbVHKVI57D4d5IGj6cXYBhdKkvAw==
dependencies:
- "@abp/jquery-validation" "~9.2.0-rc.4"
+ "@abp/jquery-validation" "~9.2.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.4.tgz#073e4cbf905f652ce83633b98696b559916b984d"
- integrity sha512-pS2Y2c6gXFOzfKeM2/JlW56ZmrUeflT2av64aWrFYnv7IgJUp38PEjR10uPy3g/mP2c9jis8dOfkdbRrlHwf+g==
+"@abp/jquery-validation@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0.tgz#97688d2e3c25699d4368ebf7234e04943aa5e6ab"
+ integrity sha512-UO+T6SqXBrh0ODwvMm840CGbE2fdYNo5oqJL4V4JbHv9uz7MH+k0bB1DK7mFb94iDM7QcglLzIfcN4hLRV7arw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.4.tgz#ac8a6ce969d58cc4f05d33adcfad76e7442231e8"
- integrity sha512-N5hZ8VGXJUn5QW1mSXHIO7SjdvoyrkCyH5j8DhXJO1mDlS1L36n+MJHFwQK7UZpHcFOuklAJ7f417r3sISOBCw==
+"@abp/jquery@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0.tgz#38c249be6eda0cdc899cc8a1f20e5152c39ae9a0"
+ integrity sha512-sIe3Zk+8549ytydCtDlECZ930PapW/2J0652two/sJwYG/SGUGxYQbw3QnJGFTcL9TFwcWwRj5iWX0gWrLEIyA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
jquery "~3.7.1"
-"@abp/lodash@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.4.tgz#e428df195ed90414a9a412e1dcb6494344475f82"
- integrity sha512-WsbyBNA57/giyI5pnM7Y7dk0p56hMDS5OMdmNilaGOWMnvz7mMTJNvStMBqS7fqekzfXsFGfrLbTmehY3pTYwQ==
+"@abp/lodash@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0.tgz#7fa4c9e956c766e34ec4677d2102a6d00f899a4b"
+ integrity sha512-2elXj/eWw875tF9ixbOm3uqXCxGaG5gL9Tub5k7cP+XhFpNBOYijNaXdN8SeDSxr83WDVWdrk//OQL8BF7XPdw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
lodash "^4.17.21"
-"@abp/luxon@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.4.tgz#dacb173d24987a1ab4fb7e53dff9f91728a1efaa"
- integrity sha512-qNuYml25Q2ODzZ830FhijGY66WvAUa02mB9hgulpFlF0p2UiFmhA0dMNVahEuytoFodjkSrhLP6cGfONf7ht8A==
+"@abp/luxon@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0.tgz#865db7b60dba4029134fb4a4b5eaa08c723dcea8"
+ integrity sha512-LWjczvzu1gFIq0/2fRz+bJW2+zsmXAmfz0I+lZ3wmqUdkViqAqwTa+5NMIl2tC92u4Dv3LGXKtH37Jw8m+XjTg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
luxon "^3.5.0"
-"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.4.tgz#9b0c0444ec8f11c8c8040387f83080e51a281657"
- integrity sha512-cvYJI/4jkzOWSvTY0C/PxSq62SxEq3UlaXpefj/W+CAwPVjG+Yik2YHt5qgcmRRn0oF5V/XRJHB7A4H23+VKyA==
+"@abp/malihu-custom-scrollbar-plugin@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0.tgz#09722b1e7ca34b96e2a68368db0e96cdf9ab0e6c"
+ integrity sha512-kfDf/1RwGtAlos/7BW+7xbh3LtJ4VG0Z4mxS+b2HsywAwlt/kE5FltfBj2ResQb030bsGNl7A5JglV9Pv1UlPw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.4.tgz#527ed54f4330a77ec2ea1411bfffe2d57e62d172"
- integrity sha512-zIRTuMCcPAfJAU64DUeU7dJPUJqoyJ7TvHBhrUcmmGZK7IzNtaP3/KAGjZIHhHbUwIjidjCxlF2YnW1io7hcJg==
+"@abp/moment@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0.tgz#137d688af4df195742061ac2b8a2bf460a027071"
+ integrity sha512-15aTjYAxHK+upkiZ94XCe8CoSPKMl1D8f6GXJIfwPkuYZ+na4ma17qBu4P8bFsc4gu3ngxYiLHRSzYzr4oCSYQ==
dependencies:
moment "^2.30.1"
-"@abp/prismjs@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.4.tgz#5164e64fa04d2a852043e1f7d02952d54112748a"
- integrity sha512-fUCqWhmmRMu5DgpDxyH7uyEHS6lCFk+BY+JuS22sTvyhu+Q9M4rYhFEl/E9S+cA2rfxSNAG5h7HPXUWTqHPLgg==
+"@abp/prismjs@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0.tgz#03fca8cd2f4bdc09a68bd9b1fcdeaede56f96542"
+ integrity sha512-OUbjaxeXKxmrR9fZe/wazS9hGrYXYam/CypnQNTVaNNgSpwvgoKoCFCll9SJUGV8tXA6iEpVdszMGyRY5Hov+g==
dependencies:
- "@abp/clipboard" "~9.2.0-rc.4"
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/clipboard" "~9.2.0"
+ "@abp/core" "~9.2.0"
prismjs "^1.29.0"
-"@abp/select2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.4.tgz#6a8c6347ec75fcf60d76bc50ecca8008253fc7c7"
- integrity sha512-OMyXr+gYMM81CQliqDVnEGsK2/WbmC4N5IZ1ZSJl+mW7cUClmyg9CLg418ID/7OU+ItUwbw9YvG4RPwnGF1ujw==
+"@abp/select2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0.tgz#c96d869be0d3298ed7c0888288ea9829e6266cd4"
+ integrity sha512-V+qx9hw3oe7o0WbG03ZgAjbqRJPVuedzrdy7ExEdueTc6LRP/WEgbVpXhsNISObtouE6Dadwp3iXYSExgNUC6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.4.tgz#26d4e9c935f20a7e0bde23327c6761fe6466cd41"
- integrity sha512-zhwnA0WpkNO6JuqbBgO6PQ817wuThw6mtGcP96V1m/xtckJWNDub1gby0gJqnWqnq5Cuj4u9gPRkkcVmfPn8ZA==
+"@abp/sweetalert2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0.tgz#826d6dd0b70c35a7401cc884fb1e82af99a0305d"
+ integrity sha512-0r338ayjaL9uzmLKE8oHpcMgJeVgVoMYfhQAPINeQHv1TPXuYCLo0aoRNoLsfmUo3ayYBBa3zOrugFIVis7Q6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
sweetalert2 "^11.14.1"
-"@abp/timeago@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.4.tgz#494b25062f14f8a139ed66958991d34fcf4023a3"
- integrity sha512-6HoEkdQCYDxrEGSjxHXN2Vj5ipc3rIXTbCqj7dYI9K5tuaQ4Wq0Obz/Wx6UZ71ZjzGAeAQkDeXVc68GjQyLX6Q==
+"@abp/timeago@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0.tgz#79bbe6dd32b0ee7df2e8ebd05274a0ecc7882ba7"
+ integrity sha512-hEUi5re5N1YkDSpaUaUtXF1Mz4YyiEvNzVADbKRz11kbR4ZAFzcvVqsQLeNo7qnuFLfJNAtuzyjkuxwL75kmaA==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
timeago "^1.6.7"
-"@abp/utils@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.4.tgz#350eb915af78ecdbc2a0a15a1ad4bac4212cefc2"
- integrity sha512-PZzfkiq6sthX5+Icw7h3HVpnDVgN7ZnmOnIyzKhBeHALpH+JfO7QruwJl96Moba4LGmzPdFdLkwm2qznVoqyZA==
+"@abp/utils@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0.tgz#bf32ced1175e45fbe010c3cb806c7cd37f85089c"
+ integrity sha512-aciBuXhzlaqe+o7mNt536bCk425cmxY5BE0wwl13u3pX3LfWYWLEgwl8GS0aeI11TS1/7+1N85RJELyz/+y0hQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
index 16a8f597fc..63f441f6f3 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
@@ -3,8 +3,8 @@
"name": "asp.net",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.4",
- "@abp/prismjs": "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0",
+ "@abp/prismjs": "~9.2.0"
},
"devDependencies": {}
}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
index 112d32cf1e..e2f54a2f6b 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
@@ -2,202 +2,202 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.4.tgz#2659ec541028ec6a1688b748414fb181924f1f58"
- integrity sha512-KSpfnvgRPxDb9oJWBnjpFm/FcXSTRO6aAVBlCERi4jtGzp04e//3rHnOWjv+JyxJqOP0JszWSALXK4A/oMQFNQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.4.tgz#4212523cc2d2db881d2a0a9c1b28f372c53c19d7"
- integrity sha512-z6nCmIfcaiQ6CPHhVq0C6RYljjrqScVVj+Sf0uI8eP6qG+CVT/aEVgb+3Nc5EM5SjDvR/eTxH4J3YcVNDj32Lg==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.4"
- "@abp/bootstrap" "~9.2.0-rc.4"
- "@abp/bootstrap-datepicker" "~9.2.0-rc.4"
- "@abp/bootstrap-daterangepicker" "~9.2.0-rc.4"
- "@abp/datatables.net-bs5" "~9.2.0-rc.4"
- "@abp/font-awesome" "~9.2.0-rc.4"
- "@abp/jquery-form" "~9.2.0-rc.4"
- "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.4"
- "@abp/lodash" "~9.2.0-rc.4"
- "@abp/luxon" "~9.2.0-rc.4"
- "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.4"
- "@abp/moment" "~9.2.0-rc.4"
- "@abp/select2" "~9.2.0-rc.4"
- "@abp/sweetalert2" "~9.2.0-rc.4"
- "@abp/timeago" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.4.tgz#a47763a480e488363b901327d94556fdad6cccb7"
- integrity sha512-7fxC3zifdnpJZwKsP1hgK0+mu9y/w4zrMY1rR8AVvcpMdt8/Mmtj6mJi+Ompv3YtO9F/Zgnxqma5R0pYMTke7g==
+"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0.tgz#af6ff5071cadb480b4aece0f15400d56b105a350"
+ integrity sha512-+LOmhSfsua7i3VQy9vYTDv7nE0fdIA+kNvorQ4wkkRzijOAlwmS4fkupglwOKJQSCWGAM7VXccPy2NzdmwvEtw==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0.tgz#791f419e8e0fab229e3f93f7a90edcd259100206"
+ integrity sha512-Mrs+kQg0S5OyRsPBwXQTqOq2DBWDdot7emETcX/gatv26GFbRe3nTOk1E+VWD/nsxHEOKTSE8LClC6TgkMxD8Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~9.2.0"
+ "@abp/bootstrap" "~9.2.0"
+ "@abp/bootstrap-datepicker" "~9.2.0"
+ "@abp/bootstrap-daterangepicker" "~9.2.0"
+ "@abp/datatables.net-bs5" "~9.2.0"
+ "@abp/font-awesome" "~9.2.0"
+ "@abp/jquery-form" "~9.2.0"
+ "@abp/jquery-validation-unobtrusive" "~9.2.0"
+ "@abp/lodash" "~9.2.0"
+ "@abp/luxon" "~9.2.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~9.2.0"
+ "@abp/moment" "~9.2.0"
+ "@abp/select2" "~9.2.0"
+ "@abp/sweetalert2" "~9.2.0"
+ "@abp/timeago" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0.tgz#e3e703ea46caf04cc966ea0af6deb64427a90d4c"
+ integrity sha512-VHH68/7Bw7r8p70T9grnVISgYPe2t3m9199S/wAXGtpGHML/lbHhDflWbm7y1MHcrmCfaXy42O9SmTHV25BJhA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.4.tgz#0aec67332e3148e21658650bfaaa08c64180e2ad"
- integrity sha512-CaD709aGigfQk76XDshSrctm9TkgjA+7XgnDuVraPRPwq4dwXGIhbNAiJ1+5k6OXrUHqJP3nPc4NDPZiXDwgqw==
+"@abp/bootstrap-datepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0.tgz#271ff68e2cee7b4ffe5a60406561a05948d6bbe6"
+ integrity sha512-V8o1cn1MKXE5GH1ZpBHiWWilzxjHIp4IS6rNoCDBSnaQcVvRku9KPI8tPNQSf+4x3jBfHDV9aOBDbDGTQ6J2yw==
dependencies:
bootstrap-datepicker "^1.10.0"
-"@abp/bootstrap-daterangepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.4.tgz#b08d564b0dfc8be62a052fc205e1445764b6a2d0"
- integrity sha512-zwWkb6JaUqN2rtIGLtb0Cf1RtP0nuCFK0x2r4J9kYnv1vKiT8vrK2Jl5mJVjvdnO0JifS1rueDMPglVpOeghRw==
+"@abp/bootstrap-daterangepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0.tgz#a239f8c2efce57d2e2beca70ceeede52d1b177d5"
+ integrity sha512-Cd9naCyepTvmUotkR1VyOBqUMgyeSXnOVWR7HxXm+jugKtnWRzrztZB6UyfnNzzjc1RMOyiAUEjzitKSJrXeoA==
dependencies:
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.4.tgz#0615ec9fa7422d76e8f4af22ec28fe9672d60c38"
- integrity sha512-m1ORR/R84nPEfid/x5rC5jy4orsw4yhkk4nApiW11H4Eb7ssbcviR75ugJ5GBt3GOevHHlTZWwvf8K4C+zdqZg==
+"@abp/bootstrap@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0.tgz#08859288b8372ea111a240b507047b144d6caca9"
+ integrity sha512-L3EZQza2c/5VmvZkLsf0EOuaMi8fseyyiwlFN65i1hpcDwhOLcaqnxMneeaSJ+Dy4xczJT+oBml9D9OSTuzmkA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
bootstrap "^5.3.3"
-"@abp/clipboard@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.4.tgz#e91e8c9b9947cef648e31f17ac8050d342a88416"
- integrity sha512-iUvCQK3YJKPflLWkXNsueXit+Ipez5+R5q4OdngcvTmVXIUoH8t+3iiM+Q7ohA0vRknsdEGPMUUS7TnDW9fVqA==
+"@abp/clipboard@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0.tgz#348a0e45752c7eb055fb00af52660593ad340caf"
+ integrity sha512-2+wt2ShLBfoHqx0DNNevJkaz1POLcs1tcK1hL4ZqsjOnS7BrTk1r8zwNvCw1XEeH2S1rPftAWH4PvzL4j86DFA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
clipboard "^2.0.11"
-"@abp/core@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.4.tgz#b758ea117ae3e3e3596e407a347617b8fcb6c112"
- integrity sha512-eNklBpyUAort/UEhgmnvMglBS/FSAzUiKalN7hgJFKx0nd3cDDkjkN6YFY8VuPInt3YfRz5omZQsGNq7eyjtbQ==
+"@abp/core@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0.tgz#db08fd34cfc891e94eb9e59ed3c0d0e6ef45c51a"
+ integrity sha512-3iESoHFj8I2xK81dwQVpCI6C1bc87VfWKyJE3/IUv4zWvG4QvI0aKhe1wxocmJqTjjowPUA3/fa2hvpfqPs2Bw==
dependencies:
- "@abp/utils" "~9.2.0-rc.4"
+ "@abp/utils" "~9.2.0"
-"@abp/datatables.net-bs5@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.4.tgz#75c12fe053d593b738bb5ca7394b2954409f5e00"
- integrity sha512-5FG5Jc6Co9q/1xYmmW2SabSaXVkdJohPJ9XtzTthwnY8Ko5eGV7TPkEfwwsk0PLXp+Wu3ifQaZI4CIE9WR81XA==
+"@abp/datatables.net-bs5@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0.tgz#eab201c959727c27aaab30dc5bd8159249d8b54b"
+ integrity sha512-bmK6GKffXzYbfkDIlN27D7mohnYsXoODEiHqhZnBdIzeSJyHwrwRPRVbO1EcBn1SEBHjGJp3S69Z6gDbRs018g==
dependencies:
- "@abp/datatables.net" "~9.2.0-rc.4"
+ "@abp/datatables.net" "~9.2.0"
datatables.net-bs5 "^2.1.8"
-"@abp/datatables.net@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.4.tgz#523b017e4b9ea9d3a6d3262f66bd3daaade05c0b"
- integrity sha512-udCSjJYYpi/Ql/KJZxYDMxbtX6gXw7hsfMxQjP0u37JsyNLgd4fTrzaXCe7OKn3x7poJcANoqsEgWow/9R/WIg==
+"@abp/datatables.net@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0.tgz#e4880fe074d86d3c5dbd7f48c86244790fc376c2"
+ integrity sha512-bKaaa+tl0Pt4oNaV+X8pBbvsHc2mPYoL7yuAs+LN8ZLwBdsGoUw7RNhLQ63O3tuYdHuaHhI/mx23X6JThr0SYw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
datatables.net "^2.1.8"
-"@abp/font-awesome@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.4.tgz#31d9fa475af3b543ddaff16e6af8caba966bd331"
- integrity sha512-FYmfrf2mX5rzU+GqK078rn85UmfAwdCB8JQhnGfkylybMRJvmocRsPBIEThjlFZAPGqqvULHUTRMwnRPTgpuNw==
+"@abp/font-awesome@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0.tgz#3e359da2510cbc0e5b9e46e9cb3664baf285722e"
+ integrity sha512-HRGg6XK3bCxFdVvEBnBKyLamqMUrenj//E4JuKOs8DtGLVH0jTyh8TwUT5/E/pI+POV7HEOpv9WpSB2p8pfsAg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
"@fortawesome/fontawesome-free" "^6.6.0"
-"@abp/jquery-form@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.4.tgz#b200be90031b58305a2ebfd646ffbd5ce4cca40c"
- integrity sha512-ohCtIfz48E0+vNdNyKTsLlfW0NYMJfKWXd9BPp2szgBaDbC7jYdGYyABbxGxRc7mp1B8xQzRhLnTzdRtWaJemg==
+"@abp/jquery-form@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0.tgz#40fac992584c26e6c54f66e7f68f8abf8944a626"
+ integrity sha512-B7Shq1itQjsnzdU1kjLpGHWjkSGFhIM2iF5BNMkqcylG3Yq1Se4+8QPoJpn/soilmtX8gbO2fx8TOejfIazXIw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.4.tgz#0329f9268b83e0832e26ea3f6523dbc5226b9114"
- integrity sha512-iOnw5YoiC3bCIFRjuXPagz+ixFV+PM36hP0UJ4x03BK6GDJnAvjLshYe6qnQG9Xnz1arzmIX5ud5EjWvWSBIoA==
+"@abp/jquery-validation-unobtrusive@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0.tgz#c2df51d024d48e71f0e7fb8d4207a8b2855393f4"
+ integrity sha512-c1cPfWVdo+gpaMoegAkw0DzGL2fy/1ylEi/shb95MAGt3iyECVx+X+R/XOxbVHKVI57D4d5IGj6cXYBhdKkvAw==
dependencies:
- "@abp/jquery-validation" "~9.2.0-rc.4"
+ "@abp/jquery-validation" "~9.2.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.4.tgz#073e4cbf905f652ce83633b98696b559916b984d"
- integrity sha512-pS2Y2c6gXFOzfKeM2/JlW56ZmrUeflT2av64aWrFYnv7IgJUp38PEjR10uPy3g/mP2c9jis8dOfkdbRrlHwf+g==
+"@abp/jquery-validation@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0.tgz#97688d2e3c25699d4368ebf7234e04943aa5e6ab"
+ integrity sha512-UO+T6SqXBrh0ODwvMm840CGbE2fdYNo5oqJL4V4JbHv9uz7MH+k0bB1DK7mFb94iDM7QcglLzIfcN4hLRV7arw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.4.tgz#ac8a6ce969d58cc4f05d33adcfad76e7442231e8"
- integrity sha512-N5hZ8VGXJUn5QW1mSXHIO7SjdvoyrkCyH5j8DhXJO1mDlS1L36n+MJHFwQK7UZpHcFOuklAJ7f417r3sISOBCw==
+"@abp/jquery@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0.tgz#38c249be6eda0cdc899cc8a1f20e5152c39ae9a0"
+ integrity sha512-sIe3Zk+8549ytydCtDlECZ930PapW/2J0652two/sJwYG/SGUGxYQbw3QnJGFTcL9TFwcWwRj5iWX0gWrLEIyA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
jquery "~3.7.1"
-"@abp/lodash@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.4.tgz#e428df195ed90414a9a412e1dcb6494344475f82"
- integrity sha512-WsbyBNA57/giyI5pnM7Y7dk0p56hMDS5OMdmNilaGOWMnvz7mMTJNvStMBqS7fqekzfXsFGfrLbTmehY3pTYwQ==
+"@abp/lodash@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0.tgz#7fa4c9e956c766e34ec4677d2102a6d00f899a4b"
+ integrity sha512-2elXj/eWw875tF9ixbOm3uqXCxGaG5gL9Tub5k7cP+XhFpNBOYijNaXdN8SeDSxr83WDVWdrk//OQL8BF7XPdw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
lodash "^4.17.21"
-"@abp/luxon@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.4.tgz#dacb173d24987a1ab4fb7e53dff9f91728a1efaa"
- integrity sha512-qNuYml25Q2ODzZ830FhijGY66WvAUa02mB9hgulpFlF0p2UiFmhA0dMNVahEuytoFodjkSrhLP6cGfONf7ht8A==
+"@abp/luxon@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0.tgz#865db7b60dba4029134fb4a4b5eaa08c723dcea8"
+ integrity sha512-LWjczvzu1gFIq0/2fRz+bJW2+zsmXAmfz0I+lZ3wmqUdkViqAqwTa+5NMIl2tC92u4Dv3LGXKtH37Jw8m+XjTg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
luxon "^3.5.0"
-"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.4.tgz#9b0c0444ec8f11c8c8040387f83080e51a281657"
- integrity sha512-cvYJI/4jkzOWSvTY0C/PxSq62SxEq3UlaXpefj/W+CAwPVjG+Yik2YHt5qgcmRRn0oF5V/XRJHB7A4H23+VKyA==
+"@abp/malihu-custom-scrollbar-plugin@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0.tgz#09722b1e7ca34b96e2a68368db0e96cdf9ab0e6c"
+ integrity sha512-kfDf/1RwGtAlos/7BW+7xbh3LtJ4VG0Z4mxS+b2HsywAwlt/kE5FltfBj2ResQb030bsGNl7A5JglV9Pv1UlPw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.4.tgz#527ed54f4330a77ec2ea1411bfffe2d57e62d172"
- integrity sha512-zIRTuMCcPAfJAU64DUeU7dJPUJqoyJ7TvHBhrUcmmGZK7IzNtaP3/KAGjZIHhHbUwIjidjCxlF2YnW1io7hcJg==
+"@abp/moment@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0.tgz#137d688af4df195742061ac2b8a2bf460a027071"
+ integrity sha512-15aTjYAxHK+upkiZ94XCe8CoSPKMl1D8f6GXJIfwPkuYZ+na4ma17qBu4P8bFsc4gu3ngxYiLHRSzYzr4oCSYQ==
dependencies:
moment "^2.30.1"
-"@abp/prismjs@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.4.tgz#5164e64fa04d2a852043e1f7d02952d54112748a"
- integrity sha512-fUCqWhmmRMu5DgpDxyH7uyEHS6lCFk+BY+JuS22sTvyhu+Q9M4rYhFEl/E9S+cA2rfxSNAG5h7HPXUWTqHPLgg==
+"@abp/prismjs@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0.tgz#03fca8cd2f4bdc09a68bd9b1fcdeaede56f96542"
+ integrity sha512-OUbjaxeXKxmrR9fZe/wazS9hGrYXYam/CypnQNTVaNNgSpwvgoKoCFCll9SJUGV8tXA6iEpVdszMGyRY5Hov+g==
dependencies:
- "@abp/clipboard" "~9.2.0-rc.4"
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/clipboard" "~9.2.0"
+ "@abp/core" "~9.2.0"
prismjs "^1.29.0"
-"@abp/select2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.4.tgz#6a8c6347ec75fcf60d76bc50ecca8008253fc7c7"
- integrity sha512-OMyXr+gYMM81CQliqDVnEGsK2/WbmC4N5IZ1ZSJl+mW7cUClmyg9CLg418ID/7OU+ItUwbw9YvG4RPwnGF1ujw==
+"@abp/select2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0.tgz#c96d869be0d3298ed7c0888288ea9829e6266cd4"
+ integrity sha512-V+qx9hw3oe7o0WbG03ZgAjbqRJPVuedzrdy7ExEdueTc6LRP/WEgbVpXhsNISObtouE6Dadwp3iXYSExgNUC6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.4.tgz#26d4e9c935f20a7e0bde23327c6761fe6466cd41"
- integrity sha512-zhwnA0WpkNO6JuqbBgO6PQ817wuThw6mtGcP96V1m/xtckJWNDub1gby0gJqnWqnq5Cuj4u9gPRkkcVmfPn8ZA==
+"@abp/sweetalert2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0.tgz#826d6dd0b70c35a7401cc884fb1e82af99a0305d"
+ integrity sha512-0r338ayjaL9uzmLKE8oHpcMgJeVgVoMYfhQAPINeQHv1TPXuYCLo0aoRNoLsfmUo3ayYBBa3zOrugFIVis7Q6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
sweetalert2 "^11.14.1"
-"@abp/timeago@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.4.tgz#494b25062f14f8a139ed66958991d34fcf4023a3"
- integrity sha512-6HoEkdQCYDxrEGSjxHXN2Vj5ipc3rIXTbCqj7dYI9K5tuaQ4Wq0Obz/Wx6UZ71ZjzGAeAQkDeXVc68GjQyLX6Q==
+"@abp/timeago@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0.tgz#79bbe6dd32b0ee7df2e8ebd05274a0ecc7882ba7"
+ integrity sha512-hEUi5re5N1YkDSpaUaUtXF1Mz4YyiEvNzVADbKRz11kbR4ZAFzcvVqsQLeNo7qnuFLfJNAtuzyjkuxwL75kmaA==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
timeago "^1.6.7"
-"@abp/utils@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.4.tgz#350eb915af78ecdbc2a0a15a1ad4bac4212cefc2"
- integrity sha512-PZzfkiq6sthX5+Icw7h3HVpnDVgN7ZnmOnIyzKhBeHALpH+JfO7QruwJl96Moba4LGmzPdFdLkwm2qznVoqyZA==
+"@abp/utils@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0.tgz#bf32ced1175e45fbe010c3cb806c7cd37f85089c"
+ integrity sha512-aciBuXhzlaqe+o7mNt536bCk425cmxY5BE0wwl13u3pX3LfWYWLEgwl8GS0aeI11TS1/7+1N85RJELyz/+y0hQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json
index 092346326a..7a947aa7e3 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/package.json
+++ b/modules/blogging/app/Volo.BloggingTestApp/package.json
@@ -3,7 +3,7 @@
"name": "volo.blogtestapp",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.4",
- "@abp/blogging": "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0",
+ "@abp/blogging": "~9.2.0"
}
}
diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
index 03db0b59ea..7da6e7ae57 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
+++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
@@ -2,228 +2,228 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.4.tgz#2659ec541028ec6a1688b748414fb181924f1f58"
- integrity sha512-KSpfnvgRPxDb9oJWBnjpFm/FcXSTRO6aAVBlCERi4jtGzp04e//3rHnOWjv+JyxJqOP0JszWSALXK4A/oMQFNQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.4.tgz#4212523cc2d2db881d2a0a9c1b28f372c53c19d7"
- integrity sha512-z6nCmIfcaiQ6CPHhVq0C6RYljjrqScVVj+Sf0uI8eP6qG+CVT/aEVgb+3Nc5EM5SjDvR/eTxH4J3YcVNDj32Lg==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.4"
- "@abp/bootstrap" "~9.2.0-rc.4"
- "@abp/bootstrap-datepicker" "~9.2.0-rc.4"
- "@abp/bootstrap-daterangepicker" "~9.2.0-rc.4"
- "@abp/datatables.net-bs5" "~9.2.0-rc.4"
- "@abp/font-awesome" "~9.2.0-rc.4"
- "@abp/jquery-form" "~9.2.0-rc.4"
- "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.4"
- "@abp/lodash" "~9.2.0-rc.4"
- "@abp/luxon" "~9.2.0-rc.4"
- "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.4"
- "@abp/moment" "~9.2.0-rc.4"
- "@abp/select2" "~9.2.0-rc.4"
- "@abp/sweetalert2" "~9.2.0-rc.4"
- "@abp/timeago" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.4.tgz#a47763a480e488363b901327d94556fdad6cccb7"
- integrity sha512-7fxC3zifdnpJZwKsP1hgK0+mu9y/w4zrMY1rR8AVvcpMdt8/Mmtj6mJi+Ompv3YtO9F/Zgnxqma5R0pYMTke7g==
+"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0.tgz#af6ff5071cadb480b4aece0f15400d56b105a350"
+ integrity sha512-+LOmhSfsua7i3VQy9vYTDv7nE0fdIA+kNvorQ4wkkRzijOAlwmS4fkupglwOKJQSCWGAM7VXccPy2NzdmwvEtw==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0.tgz#791f419e8e0fab229e3f93f7a90edcd259100206"
+ integrity sha512-Mrs+kQg0S5OyRsPBwXQTqOq2DBWDdot7emETcX/gatv26GFbRe3nTOk1E+VWD/nsxHEOKTSE8LClC6TgkMxD8Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~9.2.0"
+ "@abp/bootstrap" "~9.2.0"
+ "@abp/bootstrap-datepicker" "~9.2.0"
+ "@abp/bootstrap-daterangepicker" "~9.2.0"
+ "@abp/datatables.net-bs5" "~9.2.0"
+ "@abp/font-awesome" "~9.2.0"
+ "@abp/jquery-form" "~9.2.0"
+ "@abp/jquery-validation-unobtrusive" "~9.2.0"
+ "@abp/lodash" "~9.2.0"
+ "@abp/luxon" "~9.2.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~9.2.0"
+ "@abp/moment" "~9.2.0"
+ "@abp/select2" "~9.2.0"
+ "@abp/sweetalert2" "~9.2.0"
+ "@abp/timeago" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0.tgz#e3e703ea46caf04cc966ea0af6deb64427a90d4c"
+ integrity sha512-VHH68/7Bw7r8p70T9grnVISgYPe2t3m9199S/wAXGtpGHML/lbHhDflWbm7y1MHcrmCfaXy42O9SmTHV25BJhA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/blogging@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-9.2.0-rc.4.tgz#e7d7b5dceb2bc82b4d9b5d8797da89e373cd965a"
- integrity sha512-oVeiq9zFOKJihsRmQLCmIOWvgCxgnbxyZXgwgJhi2MzFaE54jg67JT+x3Pibw6LdpxHl58icdHMFuVXrqFM9aw==
+"@abp/blogging@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-9.2.0.tgz#62f4490e4c454fff8e10a84c1a7d8aee85b94313"
+ integrity sha512-ptaawKmyUTgGCWOxKPjLCxTY7X/fYTyxoB4sTy2O9vcaDrNqZephppKGl/nTn2EBxsYLKRGDKCl5z0Kl9MG6pQ==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.4"
- "@abp/owl.carousel" "~9.2.0-rc.4"
- "@abp/prismjs" "~9.2.0-rc.4"
- "@abp/tui-editor" "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0"
+ "@abp/owl.carousel" "~9.2.0"
+ "@abp/prismjs" "~9.2.0"
+ "@abp/tui-editor" "~9.2.0"
-"@abp/bootstrap-datepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.4.tgz#0aec67332e3148e21658650bfaaa08c64180e2ad"
- integrity sha512-CaD709aGigfQk76XDshSrctm9TkgjA+7XgnDuVraPRPwq4dwXGIhbNAiJ1+5k6OXrUHqJP3nPc4NDPZiXDwgqw==
+"@abp/bootstrap-datepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0.tgz#271ff68e2cee7b4ffe5a60406561a05948d6bbe6"
+ integrity sha512-V8o1cn1MKXE5GH1ZpBHiWWilzxjHIp4IS6rNoCDBSnaQcVvRku9KPI8tPNQSf+4x3jBfHDV9aOBDbDGTQ6J2yw==
dependencies:
bootstrap-datepicker "^1.10.0"
-"@abp/bootstrap-daterangepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.4.tgz#b08d564b0dfc8be62a052fc205e1445764b6a2d0"
- integrity sha512-zwWkb6JaUqN2rtIGLtb0Cf1RtP0nuCFK0x2r4J9kYnv1vKiT8vrK2Jl5mJVjvdnO0JifS1rueDMPglVpOeghRw==
+"@abp/bootstrap-daterangepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0.tgz#a239f8c2efce57d2e2beca70ceeede52d1b177d5"
+ integrity sha512-Cd9naCyepTvmUotkR1VyOBqUMgyeSXnOVWR7HxXm+jugKtnWRzrztZB6UyfnNzzjc1RMOyiAUEjzitKSJrXeoA==
dependencies:
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.4.tgz#0615ec9fa7422d76e8f4af22ec28fe9672d60c38"
- integrity sha512-m1ORR/R84nPEfid/x5rC5jy4orsw4yhkk4nApiW11H4Eb7ssbcviR75ugJ5GBt3GOevHHlTZWwvf8K4C+zdqZg==
+"@abp/bootstrap@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0.tgz#08859288b8372ea111a240b507047b144d6caca9"
+ integrity sha512-L3EZQza2c/5VmvZkLsf0EOuaMi8fseyyiwlFN65i1hpcDwhOLcaqnxMneeaSJ+Dy4xczJT+oBml9D9OSTuzmkA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
bootstrap "^5.3.3"
-"@abp/clipboard@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.4.tgz#e91e8c9b9947cef648e31f17ac8050d342a88416"
- integrity sha512-iUvCQK3YJKPflLWkXNsueXit+Ipez5+R5q4OdngcvTmVXIUoH8t+3iiM+Q7ohA0vRknsdEGPMUUS7TnDW9fVqA==
+"@abp/clipboard@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0.tgz#348a0e45752c7eb055fb00af52660593ad340caf"
+ integrity sha512-2+wt2ShLBfoHqx0DNNevJkaz1POLcs1tcK1hL4ZqsjOnS7BrTk1r8zwNvCw1XEeH2S1rPftAWH4PvzL4j86DFA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
clipboard "^2.0.11"
-"@abp/core@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.4.tgz#b758ea117ae3e3e3596e407a347617b8fcb6c112"
- integrity sha512-eNklBpyUAort/UEhgmnvMglBS/FSAzUiKalN7hgJFKx0nd3cDDkjkN6YFY8VuPInt3YfRz5omZQsGNq7eyjtbQ==
+"@abp/core@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0.tgz#db08fd34cfc891e94eb9e59ed3c0d0e6ef45c51a"
+ integrity sha512-3iESoHFj8I2xK81dwQVpCI6C1bc87VfWKyJE3/IUv4zWvG4QvI0aKhe1wxocmJqTjjowPUA3/fa2hvpfqPs2Bw==
dependencies:
- "@abp/utils" "~9.2.0-rc.4"
+ "@abp/utils" "~9.2.0"
-"@abp/datatables.net-bs5@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.4.tgz#75c12fe053d593b738bb5ca7394b2954409f5e00"
- integrity sha512-5FG5Jc6Co9q/1xYmmW2SabSaXVkdJohPJ9XtzTthwnY8Ko5eGV7TPkEfwwsk0PLXp+Wu3ifQaZI4CIE9WR81XA==
+"@abp/datatables.net-bs5@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0.tgz#eab201c959727c27aaab30dc5bd8159249d8b54b"
+ integrity sha512-bmK6GKffXzYbfkDIlN27D7mohnYsXoODEiHqhZnBdIzeSJyHwrwRPRVbO1EcBn1SEBHjGJp3S69Z6gDbRs018g==
dependencies:
- "@abp/datatables.net" "~9.2.0-rc.4"
+ "@abp/datatables.net" "~9.2.0"
datatables.net-bs5 "^2.1.8"
-"@abp/datatables.net@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.4.tgz#523b017e4b9ea9d3a6d3262f66bd3daaade05c0b"
- integrity sha512-udCSjJYYpi/Ql/KJZxYDMxbtX6gXw7hsfMxQjP0u37JsyNLgd4fTrzaXCe7OKn3x7poJcANoqsEgWow/9R/WIg==
+"@abp/datatables.net@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0.tgz#e4880fe074d86d3c5dbd7f48c86244790fc376c2"
+ integrity sha512-bKaaa+tl0Pt4oNaV+X8pBbvsHc2mPYoL7yuAs+LN8ZLwBdsGoUw7RNhLQ63O3tuYdHuaHhI/mx23X6JThr0SYw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
datatables.net "^2.1.8"
-"@abp/font-awesome@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.4.tgz#31d9fa475af3b543ddaff16e6af8caba966bd331"
- integrity sha512-FYmfrf2mX5rzU+GqK078rn85UmfAwdCB8JQhnGfkylybMRJvmocRsPBIEThjlFZAPGqqvULHUTRMwnRPTgpuNw==
+"@abp/font-awesome@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0.tgz#3e359da2510cbc0e5b9e46e9cb3664baf285722e"
+ integrity sha512-HRGg6XK3bCxFdVvEBnBKyLamqMUrenj//E4JuKOs8DtGLVH0jTyh8TwUT5/E/pI+POV7HEOpv9WpSB2p8pfsAg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
"@fortawesome/fontawesome-free" "^6.6.0"
-"@abp/jquery-form@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.4.tgz#b200be90031b58305a2ebfd646ffbd5ce4cca40c"
- integrity sha512-ohCtIfz48E0+vNdNyKTsLlfW0NYMJfKWXd9BPp2szgBaDbC7jYdGYyABbxGxRc7mp1B8xQzRhLnTzdRtWaJemg==
+"@abp/jquery-form@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0.tgz#40fac992584c26e6c54f66e7f68f8abf8944a626"
+ integrity sha512-B7Shq1itQjsnzdU1kjLpGHWjkSGFhIM2iF5BNMkqcylG3Yq1Se4+8QPoJpn/soilmtX8gbO2fx8TOejfIazXIw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.4.tgz#0329f9268b83e0832e26ea3f6523dbc5226b9114"
- integrity sha512-iOnw5YoiC3bCIFRjuXPagz+ixFV+PM36hP0UJ4x03BK6GDJnAvjLshYe6qnQG9Xnz1arzmIX5ud5EjWvWSBIoA==
+"@abp/jquery-validation-unobtrusive@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0.tgz#c2df51d024d48e71f0e7fb8d4207a8b2855393f4"
+ integrity sha512-c1cPfWVdo+gpaMoegAkw0DzGL2fy/1ylEi/shb95MAGt3iyECVx+X+R/XOxbVHKVI57D4d5IGj6cXYBhdKkvAw==
dependencies:
- "@abp/jquery-validation" "~9.2.0-rc.4"
+ "@abp/jquery-validation" "~9.2.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.4.tgz#073e4cbf905f652ce83633b98696b559916b984d"
- integrity sha512-pS2Y2c6gXFOzfKeM2/JlW56ZmrUeflT2av64aWrFYnv7IgJUp38PEjR10uPy3g/mP2c9jis8dOfkdbRrlHwf+g==
+"@abp/jquery-validation@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0.tgz#97688d2e3c25699d4368ebf7234e04943aa5e6ab"
+ integrity sha512-UO+T6SqXBrh0ODwvMm840CGbE2fdYNo5oqJL4V4JbHv9uz7MH+k0bB1DK7mFb94iDM7QcglLzIfcN4hLRV7arw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.4.tgz#ac8a6ce969d58cc4f05d33adcfad76e7442231e8"
- integrity sha512-N5hZ8VGXJUn5QW1mSXHIO7SjdvoyrkCyH5j8DhXJO1mDlS1L36n+MJHFwQK7UZpHcFOuklAJ7f417r3sISOBCw==
+"@abp/jquery@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0.tgz#38c249be6eda0cdc899cc8a1f20e5152c39ae9a0"
+ integrity sha512-sIe3Zk+8549ytydCtDlECZ930PapW/2J0652two/sJwYG/SGUGxYQbw3QnJGFTcL9TFwcWwRj5iWX0gWrLEIyA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
jquery "~3.7.1"
-"@abp/lodash@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.4.tgz#e428df195ed90414a9a412e1dcb6494344475f82"
- integrity sha512-WsbyBNA57/giyI5pnM7Y7dk0p56hMDS5OMdmNilaGOWMnvz7mMTJNvStMBqS7fqekzfXsFGfrLbTmehY3pTYwQ==
+"@abp/lodash@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0.tgz#7fa4c9e956c766e34ec4677d2102a6d00f899a4b"
+ integrity sha512-2elXj/eWw875tF9ixbOm3uqXCxGaG5gL9Tub5k7cP+XhFpNBOYijNaXdN8SeDSxr83WDVWdrk//OQL8BF7XPdw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
lodash "^4.17.21"
-"@abp/luxon@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.4.tgz#dacb173d24987a1ab4fb7e53dff9f91728a1efaa"
- integrity sha512-qNuYml25Q2ODzZ830FhijGY66WvAUa02mB9hgulpFlF0p2UiFmhA0dMNVahEuytoFodjkSrhLP6cGfONf7ht8A==
+"@abp/luxon@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0.tgz#865db7b60dba4029134fb4a4b5eaa08c723dcea8"
+ integrity sha512-LWjczvzu1gFIq0/2fRz+bJW2+zsmXAmfz0I+lZ3wmqUdkViqAqwTa+5NMIl2tC92u4Dv3LGXKtH37Jw8m+XjTg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
luxon "^3.5.0"
-"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.4.tgz#9b0c0444ec8f11c8c8040387f83080e51a281657"
- integrity sha512-cvYJI/4jkzOWSvTY0C/PxSq62SxEq3UlaXpefj/W+CAwPVjG+Yik2YHt5qgcmRRn0oF5V/XRJHB7A4H23+VKyA==
+"@abp/malihu-custom-scrollbar-plugin@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0.tgz#09722b1e7ca34b96e2a68368db0e96cdf9ab0e6c"
+ integrity sha512-kfDf/1RwGtAlos/7BW+7xbh3LtJ4VG0Z4mxS+b2HsywAwlt/kE5FltfBj2ResQb030bsGNl7A5JglV9Pv1UlPw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.4.tgz#527ed54f4330a77ec2ea1411bfffe2d57e62d172"
- integrity sha512-zIRTuMCcPAfJAU64DUeU7dJPUJqoyJ7TvHBhrUcmmGZK7IzNtaP3/KAGjZIHhHbUwIjidjCxlF2YnW1io7hcJg==
+"@abp/moment@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0.tgz#137d688af4df195742061ac2b8a2bf460a027071"
+ integrity sha512-15aTjYAxHK+upkiZ94XCe8CoSPKMl1D8f6GXJIfwPkuYZ+na4ma17qBu4P8bFsc4gu3ngxYiLHRSzYzr4oCSYQ==
dependencies:
moment "^2.30.1"
-"@abp/owl.carousel@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-9.2.0-rc.4.tgz#0e225bb0a5b0b9103dc9ec837f45c8dc71bb960d"
- integrity sha512-SQFusBIWxYSBzkmjbQLXfd1qz7iIzT55lGcb5y8IhlBp19UwkbeyJq68Oj6maL6COyZT0O4lSBRqkGmIC1UR8A==
+"@abp/owl.carousel@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-9.2.0.tgz#e2bd2c6a67cf942302393cd12c44519ea55eb27b"
+ integrity sha512-nu1noD/VX9Fae6PGDPMGMTV+/973xoRS4oolYDiYUBVcCzXjPNI6bvVGpnwNJbx+pgHyW07eh008qZ6pR3R3ug==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
owl.carousel "^2.3.4"
-"@abp/prismjs@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.4.tgz#5164e64fa04d2a852043e1f7d02952d54112748a"
- integrity sha512-fUCqWhmmRMu5DgpDxyH7uyEHS6lCFk+BY+JuS22sTvyhu+Q9M4rYhFEl/E9S+cA2rfxSNAG5h7HPXUWTqHPLgg==
+"@abp/prismjs@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0.tgz#03fca8cd2f4bdc09a68bd9b1fcdeaede56f96542"
+ integrity sha512-OUbjaxeXKxmrR9fZe/wazS9hGrYXYam/CypnQNTVaNNgSpwvgoKoCFCll9SJUGV8tXA6iEpVdszMGyRY5Hov+g==
dependencies:
- "@abp/clipboard" "~9.2.0-rc.4"
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/clipboard" "~9.2.0"
+ "@abp/core" "~9.2.0"
prismjs "^1.29.0"
-"@abp/select2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.4.tgz#6a8c6347ec75fcf60d76bc50ecca8008253fc7c7"
- integrity sha512-OMyXr+gYMM81CQliqDVnEGsK2/WbmC4N5IZ1ZSJl+mW7cUClmyg9CLg418ID/7OU+ItUwbw9YvG4RPwnGF1ujw==
+"@abp/select2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0.tgz#c96d869be0d3298ed7c0888288ea9829e6266cd4"
+ integrity sha512-V+qx9hw3oe7o0WbG03ZgAjbqRJPVuedzrdy7ExEdueTc6LRP/WEgbVpXhsNISObtouE6Dadwp3iXYSExgNUC6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.4.tgz#26d4e9c935f20a7e0bde23327c6761fe6466cd41"
- integrity sha512-zhwnA0WpkNO6JuqbBgO6PQ817wuThw6mtGcP96V1m/xtckJWNDub1gby0gJqnWqnq5Cuj4u9gPRkkcVmfPn8ZA==
+"@abp/sweetalert2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0.tgz#826d6dd0b70c35a7401cc884fb1e82af99a0305d"
+ integrity sha512-0r338ayjaL9uzmLKE8oHpcMgJeVgVoMYfhQAPINeQHv1TPXuYCLo0aoRNoLsfmUo3ayYBBa3zOrugFIVis7Q6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
sweetalert2 "^11.14.1"
-"@abp/timeago@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.4.tgz#494b25062f14f8a139ed66958991d34fcf4023a3"
- integrity sha512-6HoEkdQCYDxrEGSjxHXN2Vj5ipc3rIXTbCqj7dYI9K5tuaQ4Wq0Obz/Wx6UZ71ZjzGAeAQkDeXVc68GjQyLX6Q==
+"@abp/timeago@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0.tgz#79bbe6dd32b0ee7df2e8ebd05274a0ecc7882ba7"
+ integrity sha512-hEUi5re5N1YkDSpaUaUtXF1Mz4YyiEvNzVADbKRz11kbR4ZAFzcvVqsQLeNo7qnuFLfJNAtuzyjkuxwL75kmaA==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
timeago "^1.6.7"
-"@abp/tui-editor@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-9.2.0-rc.4.tgz#dca06d694d7105a807887c4ddebc01c7f2a9c5f7"
- integrity sha512-dpSrv1SYZh947AuN95GlrGyI61CeysJHnbsAKPmGsmZ5CH6VSDM5gpI9teo8SdhXsi9L5rtVBehCXBgDHSsiQQ==
+"@abp/tui-editor@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-9.2.0.tgz#f28e1099e39def76ff81d1db64f5e352f0d28f02"
+ integrity sha512-h3Nq0LmkmPWBx1tzPnImJAhPFlAD8sX/GnlAvEZGY3XJ7X6146TPl7HIzZ4fnttm+ilhuDUG2qydgIek/5pWLw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
- "@abp/prismjs" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
+ "@abp/prismjs" "~9.2.0"
-"@abp/utils@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.4.tgz#350eb915af78ecdbc2a0a15a1ad4bac4212cefc2"
- integrity sha512-PZzfkiq6sthX5+Icw7h3HVpnDVgN7ZnmOnIyzKhBeHALpH+JfO7QruwJl96Moba4LGmzPdFdLkwm2qznVoqyZA==
+"@abp/utils@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0.tgz#bf32ced1175e45fbe010c3cb806c7cd37f85089c"
+ integrity sha512-aciBuXhzlaqe+o7mNt536bCk425cmxY5BE0wwl13u3pX3LfWYWLEgwl8GS0aeI11TS1/7+1N85RJELyz/+y0hQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
index 4795c5195d..d190683ea4 100644
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
@@ -3,6 +3,6 @@
"name": "client-simulation-web",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0"
}
}
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
index 682f82ae14..6c8afa8deb 100644
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
@@ -2,185 +2,185 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.4.tgz#2659ec541028ec6a1688b748414fb181924f1f58"
- integrity sha512-KSpfnvgRPxDb9oJWBnjpFm/FcXSTRO6aAVBlCERi4jtGzp04e//3rHnOWjv+JyxJqOP0JszWSALXK4A/oMQFNQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0.tgz#af6ff5071cadb480b4aece0f15400d56b105a350"
+ integrity sha512-+LOmhSfsua7i3VQy9vYTDv7nE0fdIA+kNvorQ4wkkRzijOAlwmS4fkupglwOKJQSCWGAM7VXccPy2NzdmwvEtw==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0"
-"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.4.tgz#4212523cc2d2db881d2a0a9c1b28f372c53c19d7"
- integrity sha512-z6nCmIfcaiQ6CPHhVq0C6RYljjrqScVVj+Sf0uI8eP6qG+CVT/aEVgb+3Nc5EM5SjDvR/eTxH4J3YcVNDj32Lg==
+"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0.tgz#791f419e8e0fab229e3f93f7a90edcd259100206"
+ integrity sha512-Mrs+kQg0S5OyRsPBwXQTqOq2DBWDdot7emETcX/gatv26GFbRe3nTOk1E+VWD/nsxHEOKTSE8LClC6TgkMxD8Q==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.4"
- "@abp/bootstrap" "~9.2.0-rc.4"
- "@abp/bootstrap-datepicker" "~9.2.0-rc.4"
- "@abp/bootstrap-daterangepicker" "~9.2.0-rc.4"
- "@abp/datatables.net-bs5" "~9.2.0-rc.4"
- "@abp/font-awesome" "~9.2.0-rc.4"
- "@abp/jquery-form" "~9.2.0-rc.4"
- "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.4"
- "@abp/lodash" "~9.2.0-rc.4"
- "@abp/luxon" "~9.2.0-rc.4"
- "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.4"
- "@abp/moment" "~9.2.0-rc.4"
- "@abp/select2" "~9.2.0-rc.4"
- "@abp/sweetalert2" "~9.2.0-rc.4"
- "@abp/timeago" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.4.tgz#a47763a480e488363b901327d94556fdad6cccb7"
- integrity sha512-7fxC3zifdnpJZwKsP1hgK0+mu9y/w4zrMY1rR8AVvcpMdt8/Mmtj6mJi+Ompv3YtO9F/Zgnxqma5R0pYMTke7g==
+ "@abp/aspnetcore.mvc.ui" "~9.2.0"
+ "@abp/bootstrap" "~9.2.0"
+ "@abp/bootstrap-datepicker" "~9.2.0"
+ "@abp/bootstrap-daterangepicker" "~9.2.0"
+ "@abp/datatables.net-bs5" "~9.2.0"
+ "@abp/font-awesome" "~9.2.0"
+ "@abp/jquery-form" "~9.2.0"
+ "@abp/jquery-validation-unobtrusive" "~9.2.0"
+ "@abp/lodash" "~9.2.0"
+ "@abp/luxon" "~9.2.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~9.2.0"
+ "@abp/moment" "~9.2.0"
+ "@abp/select2" "~9.2.0"
+ "@abp/sweetalert2" "~9.2.0"
+ "@abp/timeago" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0.tgz#e3e703ea46caf04cc966ea0af6deb64427a90d4c"
+ integrity sha512-VHH68/7Bw7r8p70T9grnVISgYPe2t3m9199S/wAXGtpGHML/lbHhDflWbm7y1MHcrmCfaXy42O9SmTHV25BJhA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.4.tgz#0aec67332e3148e21658650bfaaa08c64180e2ad"
- integrity sha512-CaD709aGigfQk76XDshSrctm9TkgjA+7XgnDuVraPRPwq4dwXGIhbNAiJ1+5k6OXrUHqJP3nPc4NDPZiXDwgqw==
+"@abp/bootstrap-datepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0.tgz#271ff68e2cee7b4ffe5a60406561a05948d6bbe6"
+ integrity sha512-V8o1cn1MKXE5GH1ZpBHiWWilzxjHIp4IS6rNoCDBSnaQcVvRku9KPI8tPNQSf+4x3jBfHDV9aOBDbDGTQ6J2yw==
dependencies:
bootstrap-datepicker "^1.10.0"
-"@abp/bootstrap-daterangepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.4.tgz#b08d564b0dfc8be62a052fc205e1445764b6a2d0"
- integrity sha512-zwWkb6JaUqN2rtIGLtb0Cf1RtP0nuCFK0x2r4J9kYnv1vKiT8vrK2Jl5mJVjvdnO0JifS1rueDMPglVpOeghRw==
+"@abp/bootstrap-daterangepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0.tgz#a239f8c2efce57d2e2beca70ceeede52d1b177d5"
+ integrity sha512-Cd9naCyepTvmUotkR1VyOBqUMgyeSXnOVWR7HxXm+jugKtnWRzrztZB6UyfnNzzjc1RMOyiAUEjzitKSJrXeoA==
dependencies:
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.4.tgz#0615ec9fa7422d76e8f4af22ec28fe9672d60c38"
- integrity sha512-m1ORR/R84nPEfid/x5rC5jy4orsw4yhkk4nApiW11H4Eb7ssbcviR75ugJ5GBt3GOevHHlTZWwvf8K4C+zdqZg==
+"@abp/bootstrap@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0.tgz#08859288b8372ea111a240b507047b144d6caca9"
+ integrity sha512-L3EZQza2c/5VmvZkLsf0EOuaMi8fseyyiwlFN65i1hpcDwhOLcaqnxMneeaSJ+Dy4xczJT+oBml9D9OSTuzmkA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
bootstrap "^5.3.3"
-"@abp/core@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.4.tgz#b758ea117ae3e3e3596e407a347617b8fcb6c112"
- integrity sha512-eNklBpyUAort/UEhgmnvMglBS/FSAzUiKalN7hgJFKx0nd3cDDkjkN6YFY8VuPInt3YfRz5omZQsGNq7eyjtbQ==
+"@abp/core@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0.tgz#db08fd34cfc891e94eb9e59ed3c0d0e6ef45c51a"
+ integrity sha512-3iESoHFj8I2xK81dwQVpCI6C1bc87VfWKyJE3/IUv4zWvG4QvI0aKhe1wxocmJqTjjowPUA3/fa2hvpfqPs2Bw==
dependencies:
- "@abp/utils" "~9.2.0-rc.4"
+ "@abp/utils" "~9.2.0"
-"@abp/datatables.net-bs5@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.4.tgz#75c12fe053d593b738bb5ca7394b2954409f5e00"
- integrity sha512-5FG5Jc6Co9q/1xYmmW2SabSaXVkdJohPJ9XtzTthwnY8Ko5eGV7TPkEfwwsk0PLXp+Wu3ifQaZI4CIE9WR81XA==
+"@abp/datatables.net-bs5@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0.tgz#eab201c959727c27aaab30dc5bd8159249d8b54b"
+ integrity sha512-bmK6GKffXzYbfkDIlN27D7mohnYsXoODEiHqhZnBdIzeSJyHwrwRPRVbO1EcBn1SEBHjGJp3S69Z6gDbRs018g==
dependencies:
- "@abp/datatables.net" "~9.2.0-rc.4"
+ "@abp/datatables.net" "~9.2.0"
datatables.net-bs5 "^2.1.8"
-"@abp/datatables.net@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.4.tgz#523b017e4b9ea9d3a6d3262f66bd3daaade05c0b"
- integrity sha512-udCSjJYYpi/Ql/KJZxYDMxbtX6gXw7hsfMxQjP0u37JsyNLgd4fTrzaXCe7OKn3x7poJcANoqsEgWow/9R/WIg==
+"@abp/datatables.net@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0.tgz#e4880fe074d86d3c5dbd7f48c86244790fc376c2"
+ integrity sha512-bKaaa+tl0Pt4oNaV+X8pBbvsHc2mPYoL7yuAs+LN8ZLwBdsGoUw7RNhLQ63O3tuYdHuaHhI/mx23X6JThr0SYw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
datatables.net "^2.1.8"
-"@abp/font-awesome@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.4.tgz#31d9fa475af3b543ddaff16e6af8caba966bd331"
- integrity sha512-FYmfrf2mX5rzU+GqK078rn85UmfAwdCB8JQhnGfkylybMRJvmocRsPBIEThjlFZAPGqqvULHUTRMwnRPTgpuNw==
+"@abp/font-awesome@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0.tgz#3e359da2510cbc0e5b9e46e9cb3664baf285722e"
+ integrity sha512-HRGg6XK3bCxFdVvEBnBKyLamqMUrenj//E4JuKOs8DtGLVH0jTyh8TwUT5/E/pI+POV7HEOpv9WpSB2p8pfsAg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
"@fortawesome/fontawesome-free" "^6.6.0"
-"@abp/jquery-form@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.4.tgz#b200be90031b58305a2ebfd646ffbd5ce4cca40c"
- integrity sha512-ohCtIfz48E0+vNdNyKTsLlfW0NYMJfKWXd9BPp2szgBaDbC7jYdGYyABbxGxRc7mp1B8xQzRhLnTzdRtWaJemg==
+"@abp/jquery-form@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0.tgz#40fac992584c26e6c54f66e7f68f8abf8944a626"
+ integrity sha512-B7Shq1itQjsnzdU1kjLpGHWjkSGFhIM2iF5BNMkqcylG3Yq1Se4+8QPoJpn/soilmtX8gbO2fx8TOejfIazXIw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.4.tgz#0329f9268b83e0832e26ea3f6523dbc5226b9114"
- integrity sha512-iOnw5YoiC3bCIFRjuXPagz+ixFV+PM36hP0UJ4x03BK6GDJnAvjLshYe6qnQG9Xnz1arzmIX5ud5EjWvWSBIoA==
+"@abp/jquery-validation-unobtrusive@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0.tgz#c2df51d024d48e71f0e7fb8d4207a8b2855393f4"
+ integrity sha512-c1cPfWVdo+gpaMoegAkw0DzGL2fy/1ylEi/shb95MAGt3iyECVx+X+R/XOxbVHKVI57D4d5IGj6cXYBhdKkvAw==
dependencies:
- "@abp/jquery-validation" "~9.2.0-rc.4"
+ "@abp/jquery-validation" "~9.2.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.4.tgz#073e4cbf905f652ce83633b98696b559916b984d"
- integrity sha512-pS2Y2c6gXFOzfKeM2/JlW56ZmrUeflT2av64aWrFYnv7IgJUp38PEjR10uPy3g/mP2c9jis8dOfkdbRrlHwf+g==
+"@abp/jquery-validation@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0.tgz#97688d2e3c25699d4368ebf7234e04943aa5e6ab"
+ integrity sha512-UO+T6SqXBrh0ODwvMm840CGbE2fdYNo5oqJL4V4JbHv9uz7MH+k0bB1DK7mFb94iDM7QcglLzIfcN4hLRV7arw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.4.tgz#ac8a6ce969d58cc4f05d33adcfad76e7442231e8"
- integrity sha512-N5hZ8VGXJUn5QW1mSXHIO7SjdvoyrkCyH5j8DhXJO1mDlS1L36n+MJHFwQK7UZpHcFOuklAJ7f417r3sISOBCw==
+"@abp/jquery@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0.tgz#38c249be6eda0cdc899cc8a1f20e5152c39ae9a0"
+ integrity sha512-sIe3Zk+8549ytydCtDlECZ930PapW/2J0652two/sJwYG/SGUGxYQbw3QnJGFTcL9TFwcWwRj5iWX0gWrLEIyA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
jquery "~3.7.1"
-"@abp/lodash@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.4.tgz#e428df195ed90414a9a412e1dcb6494344475f82"
- integrity sha512-WsbyBNA57/giyI5pnM7Y7dk0p56hMDS5OMdmNilaGOWMnvz7mMTJNvStMBqS7fqekzfXsFGfrLbTmehY3pTYwQ==
+"@abp/lodash@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0.tgz#7fa4c9e956c766e34ec4677d2102a6d00f899a4b"
+ integrity sha512-2elXj/eWw875tF9ixbOm3uqXCxGaG5gL9Tub5k7cP+XhFpNBOYijNaXdN8SeDSxr83WDVWdrk//OQL8BF7XPdw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
lodash "^4.17.21"
-"@abp/luxon@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.4.tgz#dacb173d24987a1ab4fb7e53dff9f91728a1efaa"
- integrity sha512-qNuYml25Q2ODzZ830FhijGY66WvAUa02mB9hgulpFlF0p2UiFmhA0dMNVahEuytoFodjkSrhLP6cGfONf7ht8A==
+"@abp/luxon@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0.tgz#865db7b60dba4029134fb4a4b5eaa08c723dcea8"
+ integrity sha512-LWjczvzu1gFIq0/2fRz+bJW2+zsmXAmfz0I+lZ3wmqUdkViqAqwTa+5NMIl2tC92u4Dv3LGXKtH37Jw8m+XjTg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
luxon "^3.5.0"
-"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.4.tgz#9b0c0444ec8f11c8c8040387f83080e51a281657"
- integrity sha512-cvYJI/4jkzOWSvTY0C/PxSq62SxEq3UlaXpefj/W+CAwPVjG+Yik2YHt5qgcmRRn0oF5V/XRJHB7A4H23+VKyA==
+"@abp/malihu-custom-scrollbar-plugin@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0.tgz#09722b1e7ca34b96e2a68368db0e96cdf9ab0e6c"
+ integrity sha512-kfDf/1RwGtAlos/7BW+7xbh3LtJ4VG0Z4mxS+b2HsywAwlt/kE5FltfBj2ResQb030bsGNl7A5JglV9Pv1UlPw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.4.tgz#527ed54f4330a77ec2ea1411bfffe2d57e62d172"
- integrity sha512-zIRTuMCcPAfJAU64DUeU7dJPUJqoyJ7TvHBhrUcmmGZK7IzNtaP3/KAGjZIHhHbUwIjidjCxlF2YnW1io7hcJg==
+"@abp/moment@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0.tgz#137d688af4df195742061ac2b8a2bf460a027071"
+ integrity sha512-15aTjYAxHK+upkiZ94XCe8CoSPKMl1D8f6GXJIfwPkuYZ+na4ma17qBu4P8bFsc4gu3ngxYiLHRSzYzr4oCSYQ==
dependencies:
moment "^2.30.1"
-"@abp/select2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.4.tgz#6a8c6347ec75fcf60d76bc50ecca8008253fc7c7"
- integrity sha512-OMyXr+gYMM81CQliqDVnEGsK2/WbmC4N5IZ1ZSJl+mW7cUClmyg9CLg418ID/7OU+ItUwbw9YvG4RPwnGF1ujw==
+"@abp/select2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0.tgz#c96d869be0d3298ed7c0888288ea9829e6266cd4"
+ integrity sha512-V+qx9hw3oe7o0WbG03ZgAjbqRJPVuedzrdy7ExEdueTc6LRP/WEgbVpXhsNISObtouE6Dadwp3iXYSExgNUC6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.4.tgz#26d4e9c935f20a7e0bde23327c6761fe6466cd41"
- integrity sha512-zhwnA0WpkNO6JuqbBgO6PQ817wuThw6mtGcP96V1m/xtckJWNDub1gby0gJqnWqnq5Cuj4u9gPRkkcVmfPn8ZA==
+"@abp/sweetalert2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0.tgz#826d6dd0b70c35a7401cc884fb1e82af99a0305d"
+ integrity sha512-0r338ayjaL9uzmLKE8oHpcMgJeVgVoMYfhQAPINeQHv1TPXuYCLo0aoRNoLsfmUo3ayYBBa3zOrugFIVis7Q6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
sweetalert2 "^11.14.1"
-"@abp/timeago@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.4.tgz#494b25062f14f8a139ed66958991d34fcf4023a3"
- integrity sha512-6HoEkdQCYDxrEGSjxHXN2Vj5ipc3rIXTbCqj7dYI9K5tuaQ4Wq0Obz/Wx6UZ71ZjzGAeAQkDeXVc68GjQyLX6Q==
+"@abp/timeago@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0.tgz#79bbe6dd32b0ee7df2e8ebd05274a0ecc7882ba7"
+ integrity sha512-hEUi5re5N1YkDSpaUaUtXF1Mz4YyiEvNzVADbKRz11kbR4ZAFzcvVqsQLeNo7qnuFLfJNAtuzyjkuxwL75kmaA==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
timeago "^1.6.7"
-"@abp/utils@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.4.tgz#350eb915af78ecdbc2a0a15a1ad4bac4212cefc2"
- integrity sha512-PZzfkiq6sthX5+Icw7h3HVpnDVgN7ZnmOnIyzKhBeHALpH+JfO7QruwJl96Moba4LGmzPdFdLkwm2qznVoqyZA==
+"@abp/utils@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0.tgz#bf32ced1175e45fbe010c3cb806c7cd37f85089c"
+ integrity sha512-aciBuXhzlaqe+o7mNt536bCk425cmxY5BE0wwl13u3pX3LfWYWLEgwl8GS0aeI11TS1/7+1N85RJELyz/+y0hQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json
index 6b7c357c9a..c3f2f5712a 100644
--- a/modules/cms-kit/angular/package.json
+++ b/modules/cms-kit/angular/package.json
@@ -15,11 +15,11 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~9.2.0-rc.4",
- "@abp/ng.identity": "~9.2.0-rc.4",
- "@abp/ng.setting-management": "~9.2.0-rc.4",
- "@abp/ng.tenant-management": "~9.2.0-rc.4",
- "@abp/ng.theme.basic": "~9.2.0-rc.4",
+ "@abp/ng.account": "~9.2.0",
+ "@abp/ng.identity": "~9.2.0",
+ "@abp/ng.setting-management": "~9.2.0",
+ "@abp/ng.tenant-management": "~9.2.0",
+ "@abp/ng.theme.basic": "~9.2.0",
"@angular/animations": "~10.0.0",
"@angular/common": "~10.0.0",
"@angular/compiler": "~10.0.0",
diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json
index a312a0ff35..b02a75bb34 100644
--- a/modules/cms-kit/angular/projects/cms-kit/package.json
+++ b/modules/cms-kit/angular/projects/cms-kit/package.json
@@ -4,8 +4,8 @@
"peerDependencies": {
"@angular/common": "^9.1.11",
"@angular/core": "^9.1.11",
- "@abp/ng.core": ">=9.2.0-rc.4",
- "@abp/ng.theme.shared": ">=9.2.0-rc.4"
+ "@abp/ng.core": ">=9.2.0",
+ "@abp/ng.theme.shared": ">=9.2.0"
},
"dependencies": {
"tslib": "^2.0.0"
diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
index cb48f8ff94..39e7548d18 100644
--- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
+++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
@@ -3,6 +3,6 @@
"name": "my-app-identityserver",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0"
}
}
diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
index 682f82ae14..6c8afa8deb 100644
--- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
@@ -2,185 +2,185 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.4.tgz#2659ec541028ec6a1688b748414fb181924f1f58"
- integrity sha512-KSpfnvgRPxDb9oJWBnjpFm/FcXSTRO6aAVBlCERi4jtGzp04e//3rHnOWjv+JyxJqOP0JszWSALXK4A/oMQFNQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0.tgz#af6ff5071cadb480b4aece0f15400d56b105a350"
+ integrity sha512-+LOmhSfsua7i3VQy9vYTDv7nE0fdIA+kNvorQ4wkkRzijOAlwmS4fkupglwOKJQSCWGAM7VXccPy2NzdmwvEtw==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0"
-"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.4.tgz#4212523cc2d2db881d2a0a9c1b28f372c53c19d7"
- integrity sha512-z6nCmIfcaiQ6CPHhVq0C6RYljjrqScVVj+Sf0uI8eP6qG+CVT/aEVgb+3Nc5EM5SjDvR/eTxH4J3YcVNDj32Lg==
+"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0.tgz#791f419e8e0fab229e3f93f7a90edcd259100206"
+ integrity sha512-Mrs+kQg0S5OyRsPBwXQTqOq2DBWDdot7emETcX/gatv26GFbRe3nTOk1E+VWD/nsxHEOKTSE8LClC6TgkMxD8Q==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.4"
- "@abp/bootstrap" "~9.2.0-rc.4"
- "@abp/bootstrap-datepicker" "~9.2.0-rc.4"
- "@abp/bootstrap-daterangepicker" "~9.2.0-rc.4"
- "@abp/datatables.net-bs5" "~9.2.0-rc.4"
- "@abp/font-awesome" "~9.2.0-rc.4"
- "@abp/jquery-form" "~9.2.0-rc.4"
- "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.4"
- "@abp/lodash" "~9.2.0-rc.4"
- "@abp/luxon" "~9.2.0-rc.4"
- "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.4"
- "@abp/moment" "~9.2.0-rc.4"
- "@abp/select2" "~9.2.0-rc.4"
- "@abp/sweetalert2" "~9.2.0-rc.4"
- "@abp/timeago" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.4.tgz#a47763a480e488363b901327d94556fdad6cccb7"
- integrity sha512-7fxC3zifdnpJZwKsP1hgK0+mu9y/w4zrMY1rR8AVvcpMdt8/Mmtj6mJi+Ompv3YtO9F/Zgnxqma5R0pYMTke7g==
+ "@abp/aspnetcore.mvc.ui" "~9.2.0"
+ "@abp/bootstrap" "~9.2.0"
+ "@abp/bootstrap-datepicker" "~9.2.0"
+ "@abp/bootstrap-daterangepicker" "~9.2.0"
+ "@abp/datatables.net-bs5" "~9.2.0"
+ "@abp/font-awesome" "~9.2.0"
+ "@abp/jquery-form" "~9.2.0"
+ "@abp/jquery-validation-unobtrusive" "~9.2.0"
+ "@abp/lodash" "~9.2.0"
+ "@abp/luxon" "~9.2.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~9.2.0"
+ "@abp/moment" "~9.2.0"
+ "@abp/select2" "~9.2.0"
+ "@abp/sweetalert2" "~9.2.0"
+ "@abp/timeago" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0.tgz#e3e703ea46caf04cc966ea0af6deb64427a90d4c"
+ integrity sha512-VHH68/7Bw7r8p70T9grnVISgYPe2t3m9199S/wAXGtpGHML/lbHhDflWbm7y1MHcrmCfaXy42O9SmTHV25BJhA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.4.tgz#0aec67332e3148e21658650bfaaa08c64180e2ad"
- integrity sha512-CaD709aGigfQk76XDshSrctm9TkgjA+7XgnDuVraPRPwq4dwXGIhbNAiJ1+5k6OXrUHqJP3nPc4NDPZiXDwgqw==
+"@abp/bootstrap-datepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0.tgz#271ff68e2cee7b4ffe5a60406561a05948d6bbe6"
+ integrity sha512-V8o1cn1MKXE5GH1ZpBHiWWilzxjHIp4IS6rNoCDBSnaQcVvRku9KPI8tPNQSf+4x3jBfHDV9aOBDbDGTQ6J2yw==
dependencies:
bootstrap-datepicker "^1.10.0"
-"@abp/bootstrap-daterangepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.4.tgz#b08d564b0dfc8be62a052fc205e1445764b6a2d0"
- integrity sha512-zwWkb6JaUqN2rtIGLtb0Cf1RtP0nuCFK0x2r4J9kYnv1vKiT8vrK2Jl5mJVjvdnO0JifS1rueDMPglVpOeghRw==
+"@abp/bootstrap-daterangepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0.tgz#a239f8c2efce57d2e2beca70ceeede52d1b177d5"
+ integrity sha512-Cd9naCyepTvmUotkR1VyOBqUMgyeSXnOVWR7HxXm+jugKtnWRzrztZB6UyfnNzzjc1RMOyiAUEjzitKSJrXeoA==
dependencies:
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.4.tgz#0615ec9fa7422d76e8f4af22ec28fe9672d60c38"
- integrity sha512-m1ORR/R84nPEfid/x5rC5jy4orsw4yhkk4nApiW11H4Eb7ssbcviR75ugJ5GBt3GOevHHlTZWwvf8K4C+zdqZg==
+"@abp/bootstrap@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0.tgz#08859288b8372ea111a240b507047b144d6caca9"
+ integrity sha512-L3EZQza2c/5VmvZkLsf0EOuaMi8fseyyiwlFN65i1hpcDwhOLcaqnxMneeaSJ+Dy4xczJT+oBml9D9OSTuzmkA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
bootstrap "^5.3.3"
-"@abp/core@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.4.tgz#b758ea117ae3e3e3596e407a347617b8fcb6c112"
- integrity sha512-eNklBpyUAort/UEhgmnvMglBS/FSAzUiKalN7hgJFKx0nd3cDDkjkN6YFY8VuPInt3YfRz5omZQsGNq7eyjtbQ==
+"@abp/core@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0.tgz#db08fd34cfc891e94eb9e59ed3c0d0e6ef45c51a"
+ integrity sha512-3iESoHFj8I2xK81dwQVpCI6C1bc87VfWKyJE3/IUv4zWvG4QvI0aKhe1wxocmJqTjjowPUA3/fa2hvpfqPs2Bw==
dependencies:
- "@abp/utils" "~9.2.0-rc.4"
+ "@abp/utils" "~9.2.0"
-"@abp/datatables.net-bs5@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.4.tgz#75c12fe053d593b738bb5ca7394b2954409f5e00"
- integrity sha512-5FG5Jc6Co9q/1xYmmW2SabSaXVkdJohPJ9XtzTthwnY8Ko5eGV7TPkEfwwsk0PLXp+Wu3ifQaZI4CIE9WR81XA==
+"@abp/datatables.net-bs5@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0.tgz#eab201c959727c27aaab30dc5bd8159249d8b54b"
+ integrity sha512-bmK6GKffXzYbfkDIlN27D7mohnYsXoODEiHqhZnBdIzeSJyHwrwRPRVbO1EcBn1SEBHjGJp3S69Z6gDbRs018g==
dependencies:
- "@abp/datatables.net" "~9.2.0-rc.4"
+ "@abp/datatables.net" "~9.2.0"
datatables.net-bs5 "^2.1.8"
-"@abp/datatables.net@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.4.tgz#523b017e4b9ea9d3a6d3262f66bd3daaade05c0b"
- integrity sha512-udCSjJYYpi/Ql/KJZxYDMxbtX6gXw7hsfMxQjP0u37JsyNLgd4fTrzaXCe7OKn3x7poJcANoqsEgWow/9R/WIg==
+"@abp/datatables.net@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0.tgz#e4880fe074d86d3c5dbd7f48c86244790fc376c2"
+ integrity sha512-bKaaa+tl0Pt4oNaV+X8pBbvsHc2mPYoL7yuAs+LN8ZLwBdsGoUw7RNhLQ63O3tuYdHuaHhI/mx23X6JThr0SYw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
datatables.net "^2.1.8"
-"@abp/font-awesome@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.4.tgz#31d9fa475af3b543ddaff16e6af8caba966bd331"
- integrity sha512-FYmfrf2mX5rzU+GqK078rn85UmfAwdCB8JQhnGfkylybMRJvmocRsPBIEThjlFZAPGqqvULHUTRMwnRPTgpuNw==
+"@abp/font-awesome@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0.tgz#3e359da2510cbc0e5b9e46e9cb3664baf285722e"
+ integrity sha512-HRGg6XK3bCxFdVvEBnBKyLamqMUrenj//E4JuKOs8DtGLVH0jTyh8TwUT5/E/pI+POV7HEOpv9WpSB2p8pfsAg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
"@fortawesome/fontawesome-free" "^6.6.0"
-"@abp/jquery-form@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.4.tgz#b200be90031b58305a2ebfd646ffbd5ce4cca40c"
- integrity sha512-ohCtIfz48E0+vNdNyKTsLlfW0NYMJfKWXd9BPp2szgBaDbC7jYdGYyABbxGxRc7mp1B8xQzRhLnTzdRtWaJemg==
+"@abp/jquery-form@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0.tgz#40fac992584c26e6c54f66e7f68f8abf8944a626"
+ integrity sha512-B7Shq1itQjsnzdU1kjLpGHWjkSGFhIM2iF5BNMkqcylG3Yq1Se4+8QPoJpn/soilmtX8gbO2fx8TOejfIazXIw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.4.tgz#0329f9268b83e0832e26ea3f6523dbc5226b9114"
- integrity sha512-iOnw5YoiC3bCIFRjuXPagz+ixFV+PM36hP0UJ4x03BK6GDJnAvjLshYe6qnQG9Xnz1arzmIX5ud5EjWvWSBIoA==
+"@abp/jquery-validation-unobtrusive@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0.tgz#c2df51d024d48e71f0e7fb8d4207a8b2855393f4"
+ integrity sha512-c1cPfWVdo+gpaMoegAkw0DzGL2fy/1ylEi/shb95MAGt3iyECVx+X+R/XOxbVHKVI57D4d5IGj6cXYBhdKkvAw==
dependencies:
- "@abp/jquery-validation" "~9.2.0-rc.4"
+ "@abp/jquery-validation" "~9.2.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.4.tgz#073e4cbf905f652ce83633b98696b559916b984d"
- integrity sha512-pS2Y2c6gXFOzfKeM2/JlW56ZmrUeflT2av64aWrFYnv7IgJUp38PEjR10uPy3g/mP2c9jis8dOfkdbRrlHwf+g==
+"@abp/jquery-validation@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0.tgz#97688d2e3c25699d4368ebf7234e04943aa5e6ab"
+ integrity sha512-UO+T6SqXBrh0ODwvMm840CGbE2fdYNo5oqJL4V4JbHv9uz7MH+k0bB1DK7mFb94iDM7QcglLzIfcN4hLRV7arw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.4.tgz#ac8a6ce969d58cc4f05d33adcfad76e7442231e8"
- integrity sha512-N5hZ8VGXJUn5QW1mSXHIO7SjdvoyrkCyH5j8DhXJO1mDlS1L36n+MJHFwQK7UZpHcFOuklAJ7f417r3sISOBCw==
+"@abp/jquery@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0.tgz#38c249be6eda0cdc899cc8a1f20e5152c39ae9a0"
+ integrity sha512-sIe3Zk+8549ytydCtDlECZ930PapW/2J0652two/sJwYG/SGUGxYQbw3QnJGFTcL9TFwcWwRj5iWX0gWrLEIyA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
jquery "~3.7.1"
-"@abp/lodash@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.4.tgz#e428df195ed90414a9a412e1dcb6494344475f82"
- integrity sha512-WsbyBNA57/giyI5pnM7Y7dk0p56hMDS5OMdmNilaGOWMnvz7mMTJNvStMBqS7fqekzfXsFGfrLbTmehY3pTYwQ==
+"@abp/lodash@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0.tgz#7fa4c9e956c766e34ec4677d2102a6d00f899a4b"
+ integrity sha512-2elXj/eWw875tF9ixbOm3uqXCxGaG5gL9Tub5k7cP+XhFpNBOYijNaXdN8SeDSxr83WDVWdrk//OQL8BF7XPdw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
lodash "^4.17.21"
-"@abp/luxon@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.4.tgz#dacb173d24987a1ab4fb7e53dff9f91728a1efaa"
- integrity sha512-qNuYml25Q2ODzZ830FhijGY66WvAUa02mB9hgulpFlF0p2UiFmhA0dMNVahEuytoFodjkSrhLP6cGfONf7ht8A==
+"@abp/luxon@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0.tgz#865db7b60dba4029134fb4a4b5eaa08c723dcea8"
+ integrity sha512-LWjczvzu1gFIq0/2fRz+bJW2+zsmXAmfz0I+lZ3wmqUdkViqAqwTa+5NMIl2tC92u4Dv3LGXKtH37Jw8m+XjTg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
luxon "^3.5.0"
-"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.4.tgz#9b0c0444ec8f11c8c8040387f83080e51a281657"
- integrity sha512-cvYJI/4jkzOWSvTY0C/PxSq62SxEq3UlaXpefj/W+CAwPVjG+Yik2YHt5qgcmRRn0oF5V/XRJHB7A4H23+VKyA==
+"@abp/malihu-custom-scrollbar-plugin@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0.tgz#09722b1e7ca34b96e2a68368db0e96cdf9ab0e6c"
+ integrity sha512-kfDf/1RwGtAlos/7BW+7xbh3LtJ4VG0Z4mxS+b2HsywAwlt/kE5FltfBj2ResQb030bsGNl7A5JglV9Pv1UlPw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.4.tgz#527ed54f4330a77ec2ea1411bfffe2d57e62d172"
- integrity sha512-zIRTuMCcPAfJAU64DUeU7dJPUJqoyJ7TvHBhrUcmmGZK7IzNtaP3/KAGjZIHhHbUwIjidjCxlF2YnW1io7hcJg==
+"@abp/moment@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0.tgz#137d688af4df195742061ac2b8a2bf460a027071"
+ integrity sha512-15aTjYAxHK+upkiZ94XCe8CoSPKMl1D8f6GXJIfwPkuYZ+na4ma17qBu4P8bFsc4gu3ngxYiLHRSzYzr4oCSYQ==
dependencies:
moment "^2.30.1"
-"@abp/select2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.4.tgz#6a8c6347ec75fcf60d76bc50ecca8008253fc7c7"
- integrity sha512-OMyXr+gYMM81CQliqDVnEGsK2/WbmC4N5IZ1ZSJl+mW7cUClmyg9CLg418ID/7OU+ItUwbw9YvG4RPwnGF1ujw==
+"@abp/select2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0.tgz#c96d869be0d3298ed7c0888288ea9829e6266cd4"
+ integrity sha512-V+qx9hw3oe7o0WbG03ZgAjbqRJPVuedzrdy7ExEdueTc6LRP/WEgbVpXhsNISObtouE6Dadwp3iXYSExgNUC6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.4.tgz#26d4e9c935f20a7e0bde23327c6761fe6466cd41"
- integrity sha512-zhwnA0WpkNO6JuqbBgO6PQ817wuThw6mtGcP96V1m/xtckJWNDub1gby0gJqnWqnq5Cuj4u9gPRkkcVmfPn8ZA==
+"@abp/sweetalert2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0.tgz#826d6dd0b70c35a7401cc884fb1e82af99a0305d"
+ integrity sha512-0r338ayjaL9uzmLKE8oHpcMgJeVgVoMYfhQAPINeQHv1TPXuYCLo0aoRNoLsfmUo3ayYBBa3zOrugFIVis7Q6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
sweetalert2 "^11.14.1"
-"@abp/timeago@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.4.tgz#494b25062f14f8a139ed66958991d34fcf4023a3"
- integrity sha512-6HoEkdQCYDxrEGSjxHXN2Vj5ipc3rIXTbCqj7dYI9K5tuaQ4Wq0Obz/Wx6UZ71ZjzGAeAQkDeXVc68GjQyLX6Q==
+"@abp/timeago@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0.tgz#79bbe6dd32b0ee7df2e8ebd05274a0ecc7882ba7"
+ integrity sha512-hEUi5re5N1YkDSpaUaUtXF1Mz4YyiEvNzVADbKRz11kbR4ZAFzcvVqsQLeNo7qnuFLfJNAtuzyjkuxwL75kmaA==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
timeago "^1.6.7"
-"@abp/utils@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.4.tgz#350eb915af78ecdbc2a0a15a1ad4bac4212cefc2"
- integrity sha512-PZzfkiq6sthX5+Icw7h3HVpnDVgN7ZnmOnIyzKhBeHALpH+JfO7QruwJl96Moba4LGmzPdFdLkwm2qznVoqyZA==
+"@abp/utils@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0.tgz#bf32ced1175e45fbe010c3cb806c7cd37f85089c"
+ integrity sha512-aciBuXhzlaqe+o7mNt536bCk425cmxY5BE0wwl13u3pX3LfWYWLEgwl8GS0aeI11TS1/7+1N85RJELyz/+y0hQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
index 367ececa5e..8bcd4ab173 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0"
}
}
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
index 682f82ae14..6c8afa8deb 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
@@ -2,185 +2,185 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.4.tgz#2659ec541028ec6a1688b748414fb181924f1f58"
- integrity sha512-KSpfnvgRPxDb9oJWBnjpFm/FcXSTRO6aAVBlCERi4jtGzp04e//3rHnOWjv+JyxJqOP0JszWSALXK4A/oMQFNQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0.tgz#af6ff5071cadb480b4aece0f15400d56b105a350"
+ integrity sha512-+LOmhSfsua7i3VQy9vYTDv7nE0fdIA+kNvorQ4wkkRzijOAlwmS4fkupglwOKJQSCWGAM7VXccPy2NzdmwvEtw==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0"
-"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.4.tgz#4212523cc2d2db881d2a0a9c1b28f372c53c19d7"
- integrity sha512-z6nCmIfcaiQ6CPHhVq0C6RYljjrqScVVj+Sf0uI8eP6qG+CVT/aEVgb+3Nc5EM5SjDvR/eTxH4J3YcVNDj32Lg==
+"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0.tgz#791f419e8e0fab229e3f93f7a90edcd259100206"
+ integrity sha512-Mrs+kQg0S5OyRsPBwXQTqOq2DBWDdot7emETcX/gatv26GFbRe3nTOk1E+VWD/nsxHEOKTSE8LClC6TgkMxD8Q==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.4"
- "@abp/bootstrap" "~9.2.0-rc.4"
- "@abp/bootstrap-datepicker" "~9.2.0-rc.4"
- "@abp/bootstrap-daterangepicker" "~9.2.0-rc.4"
- "@abp/datatables.net-bs5" "~9.2.0-rc.4"
- "@abp/font-awesome" "~9.2.0-rc.4"
- "@abp/jquery-form" "~9.2.0-rc.4"
- "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.4"
- "@abp/lodash" "~9.2.0-rc.4"
- "@abp/luxon" "~9.2.0-rc.4"
- "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.4"
- "@abp/moment" "~9.2.0-rc.4"
- "@abp/select2" "~9.2.0-rc.4"
- "@abp/sweetalert2" "~9.2.0-rc.4"
- "@abp/timeago" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.4.tgz#a47763a480e488363b901327d94556fdad6cccb7"
- integrity sha512-7fxC3zifdnpJZwKsP1hgK0+mu9y/w4zrMY1rR8AVvcpMdt8/Mmtj6mJi+Ompv3YtO9F/Zgnxqma5R0pYMTke7g==
+ "@abp/aspnetcore.mvc.ui" "~9.2.0"
+ "@abp/bootstrap" "~9.2.0"
+ "@abp/bootstrap-datepicker" "~9.2.0"
+ "@abp/bootstrap-daterangepicker" "~9.2.0"
+ "@abp/datatables.net-bs5" "~9.2.0"
+ "@abp/font-awesome" "~9.2.0"
+ "@abp/jquery-form" "~9.2.0"
+ "@abp/jquery-validation-unobtrusive" "~9.2.0"
+ "@abp/lodash" "~9.2.0"
+ "@abp/luxon" "~9.2.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~9.2.0"
+ "@abp/moment" "~9.2.0"
+ "@abp/select2" "~9.2.0"
+ "@abp/sweetalert2" "~9.2.0"
+ "@abp/timeago" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0.tgz#e3e703ea46caf04cc966ea0af6deb64427a90d4c"
+ integrity sha512-VHH68/7Bw7r8p70T9grnVISgYPe2t3m9199S/wAXGtpGHML/lbHhDflWbm7y1MHcrmCfaXy42O9SmTHV25BJhA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.4.tgz#0aec67332e3148e21658650bfaaa08c64180e2ad"
- integrity sha512-CaD709aGigfQk76XDshSrctm9TkgjA+7XgnDuVraPRPwq4dwXGIhbNAiJ1+5k6OXrUHqJP3nPc4NDPZiXDwgqw==
+"@abp/bootstrap-datepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0.tgz#271ff68e2cee7b4ffe5a60406561a05948d6bbe6"
+ integrity sha512-V8o1cn1MKXE5GH1ZpBHiWWilzxjHIp4IS6rNoCDBSnaQcVvRku9KPI8tPNQSf+4x3jBfHDV9aOBDbDGTQ6J2yw==
dependencies:
bootstrap-datepicker "^1.10.0"
-"@abp/bootstrap-daterangepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.4.tgz#b08d564b0dfc8be62a052fc205e1445764b6a2d0"
- integrity sha512-zwWkb6JaUqN2rtIGLtb0Cf1RtP0nuCFK0x2r4J9kYnv1vKiT8vrK2Jl5mJVjvdnO0JifS1rueDMPglVpOeghRw==
+"@abp/bootstrap-daterangepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0.tgz#a239f8c2efce57d2e2beca70ceeede52d1b177d5"
+ integrity sha512-Cd9naCyepTvmUotkR1VyOBqUMgyeSXnOVWR7HxXm+jugKtnWRzrztZB6UyfnNzzjc1RMOyiAUEjzitKSJrXeoA==
dependencies:
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.4.tgz#0615ec9fa7422d76e8f4af22ec28fe9672d60c38"
- integrity sha512-m1ORR/R84nPEfid/x5rC5jy4orsw4yhkk4nApiW11H4Eb7ssbcviR75ugJ5GBt3GOevHHlTZWwvf8K4C+zdqZg==
+"@abp/bootstrap@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0.tgz#08859288b8372ea111a240b507047b144d6caca9"
+ integrity sha512-L3EZQza2c/5VmvZkLsf0EOuaMi8fseyyiwlFN65i1hpcDwhOLcaqnxMneeaSJ+Dy4xczJT+oBml9D9OSTuzmkA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
bootstrap "^5.3.3"
-"@abp/core@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.4.tgz#b758ea117ae3e3e3596e407a347617b8fcb6c112"
- integrity sha512-eNklBpyUAort/UEhgmnvMglBS/FSAzUiKalN7hgJFKx0nd3cDDkjkN6YFY8VuPInt3YfRz5omZQsGNq7eyjtbQ==
+"@abp/core@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0.tgz#db08fd34cfc891e94eb9e59ed3c0d0e6ef45c51a"
+ integrity sha512-3iESoHFj8I2xK81dwQVpCI6C1bc87VfWKyJE3/IUv4zWvG4QvI0aKhe1wxocmJqTjjowPUA3/fa2hvpfqPs2Bw==
dependencies:
- "@abp/utils" "~9.2.0-rc.4"
+ "@abp/utils" "~9.2.0"
-"@abp/datatables.net-bs5@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.4.tgz#75c12fe053d593b738bb5ca7394b2954409f5e00"
- integrity sha512-5FG5Jc6Co9q/1xYmmW2SabSaXVkdJohPJ9XtzTthwnY8Ko5eGV7TPkEfwwsk0PLXp+Wu3ifQaZI4CIE9WR81XA==
+"@abp/datatables.net-bs5@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0.tgz#eab201c959727c27aaab30dc5bd8159249d8b54b"
+ integrity sha512-bmK6GKffXzYbfkDIlN27D7mohnYsXoODEiHqhZnBdIzeSJyHwrwRPRVbO1EcBn1SEBHjGJp3S69Z6gDbRs018g==
dependencies:
- "@abp/datatables.net" "~9.2.0-rc.4"
+ "@abp/datatables.net" "~9.2.0"
datatables.net-bs5 "^2.1.8"
-"@abp/datatables.net@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.4.tgz#523b017e4b9ea9d3a6d3262f66bd3daaade05c0b"
- integrity sha512-udCSjJYYpi/Ql/KJZxYDMxbtX6gXw7hsfMxQjP0u37JsyNLgd4fTrzaXCe7OKn3x7poJcANoqsEgWow/9R/WIg==
+"@abp/datatables.net@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0.tgz#e4880fe074d86d3c5dbd7f48c86244790fc376c2"
+ integrity sha512-bKaaa+tl0Pt4oNaV+X8pBbvsHc2mPYoL7yuAs+LN8ZLwBdsGoUw7RNhLQ63O3tuYdHuaHhI/mx23X6JThr0SYw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
datatables.net "^2.1.8"
-"@abp/font-awesome@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.4.tgz#31d9fa475af3b543ddaff16e6af8caba966bd331"
- integrity sha512-FYmfrf2mX5rzU+GqK078rn85UmfAwdCB8JQhnGfkylybMRJvmocRsPBIEThjlFZAPGqqvULHUTRMwnRPTgpuNw==
+"@abp/font-awesome@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0.tgz#3e359da2510cbc0e5b9e46e9cb3664baf285722e"
+ integrity sha512-HRGg6XK3bCxFdVvEBnBKyLamqMUrenj//E4JuKOs8DtGLVH0jTyh8TwUT5/E/pI+POV7HEOpv9WpSB2p8pfsAg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
"@fortawesome/fontawesome-free" "^6.6.0"
-"@abp/jquery-form@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.4.tgz#b200be90031b58305a2ebfd646ffbd5ce4cca40c"
- integrity sha512-ohCtIfz48E0+vNdNyKTsLlfW0NYMJfKWXd9BPp2szgBaDbC7jYdGYyABbxGxRc7mp1B8xQzRhLnTzdRtWaJemg==
+"@abp/jquery-form@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0.tgz#40fac992584c26e6c54f66e7f68f8abf8944a626"
+ integrity sha512-B7Shq1itQjsnzdU1kjLpGHWjkSGFhIM2iF5BNMkqcylG3Yq1Se4+8QPoJpn/soilmtX8gbO2fx8TOejfIazXIw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.4.tgz#0329f9268b83e0832e26ea3f6523dbc5226b9114"
- integrity sha512-iOnw5YoiC3bCIFRjuXPagz+ixFV+PM36hP0UJ4x03BK6GDJnAvjLshYe6qnQG9Xnz1arzmIX5ud5EjWvWSBIoA==
+"@abp/jquery-validation-unobtrusive@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0.tgz#c2df51d024d48e71f0e7fb8d4207a8b2855393f4"
+ integrity sha512-c1cPfWVdo+gpaMoegAkw0DzGL2fy/1ylEi/shb95MAGt3iyECVx+X+R/XOxbVHKVI57D4d5IGj6cXYBhdKkvAw==
dependencies:
- "@abp/jquery-validation" "~9.2.0-rc.4"
+ "@abp/jquery-validation" "~9.2.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.4.tgz#073e4cbf905f652ce83633b98696b559916b984d"
- integrity sha512-pS2Y2c6gXFOzfKeM2/JlW56ZmrUeflT2av64aWrFYnv7IgJUp38PEjR10uPy3g/mP2c9jis8dOfkdbRrlHwf+g==
+"@abp/jquery-validation@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0.tgz#97688d2e3c25699d4368ebf7234e04943aa5e6ab"
+ integrity sha512-UO+T6SqXBrh0ODwvMm840CGbE2fdYNo5oqJL4V4JbHv9uz7MH+k0bB1DK7mFb94iDM7QcglLzIfcN4hLRV7arw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.4.tgz#ac8a6ce969d58cc4f05d33adcfad76e7442231e8"
- integrity sha512-N5hZ8VGXJUn5QW1mSXHIO7SjdvoyrkCyH5j8DhXJO1mDlS1L36n+MJHFwQK7UZpHcFOuklAJ7f417r3sISOBCw==
+"@abp/jquery@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0.tgz#38c249be6eda0cdc899cc8a1f20e5152c39ae9a0"
+ integrity sha512-sIe3Zk+8549ytydCtDlECZ930PapW/2J0652two/sJwYG/SGUGxYQbw3QnJGFTcL9TFwcWwRj5iWX0gWrLEIyA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
jquery "~3.7.1"
-"@abp/lodash@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.4.tgz#e428df195ed90414a9a412e1dcb6494344475f82"
- integrity sha512-WsbyBNA57/giyI5pnM7Y7dk0p56hMDS5OMdmNilaGOWMnvz7mMTJNvStMBqS7fqekzfXsFGfrLbTmehY3pTYwQ==
+"@abp/lodash@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0.tgz#7fa4c9e956c766e34ec4677d2102a6d00f899a4b"
+ integrity sha512-2elXj/eWw875tF9ixbOm3uqXCxGaG5gL9Tub5k7cP+XhFpNBOYijNaXdN8SeDSxr83WDVWdrk//OQL8BF7XPdw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
lodash "^4.17.21"
-"@abp/luxon@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.4.tgz#dacb173d24987a1ab4fb7e53dff9f91728a1efaa"
- integrity sha512-qNuYml25Q2ODzZ830FhijGY66WvAUa02mB9hgulpFlF0p2UiFmhA0dMNVahEuytoFodjkSrhLP6cGfONf7ht8A==
+"@abp/luxon@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0.tgz#865db7b60dba4029134fb4a4b5eaa08c723dcea8"
+ integrity sha512-LWjczvzu1gFIq0/2fRz+bJW2+zsmXAmfz0I+lZ3wmqUdkViqAqwTa+5NMIl2tC92u4Dv3LGXKtH37Jw8m+XjTg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
luxon "^3.5.0"
-"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.4.tgz#9b0c0444ec8f11c8c8040387f83080e51a281657"
- integrity sha512-cvYJI/4jkzOWSvTY0C/PxSq62SxEq3UlaXpefj/W+CAwPVjG+Yik2YHt5qgcmRRn0oF5V/XRJHB7A4H23+VKyA==
+"@abp/malihu-custom-scrollbar-plugin@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0.tgz#09722b1e7ca34b96e2a68368db0e96cdf9ab0e6c"
+ integrity sha512-kfDf/1RwGtAlos/7BW+7xbh3LtJ4VG0Z4mxS+b2HsywAwlt/kE5FltfBj2ResQb030bsGNl7A5JglV9Pv1UlPw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.4.tgz#527ed54f4330a77ec2ea1411bfffe2d57e62d172"
- integrity sha512-zIRTuMCcPAfJAU64DUeU7dJPUJqoyJ7TvHBhrUcmmGZK7IzNtaP3/KAGjZIHhHbUwIjidjCxlF2YnW1io7hcJg==
+"@abp/moment@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0.tgz#137d688af4df195742061ac2b8a2bf460a027071"
+ integrity sha512-15aTjYAxHK+upkiZ94XCe8CoSPKMl1D8f6GXJIfwPkuYZ+na4ma17qBu4P8bFsc4gu3ngxYiLHRSzYzr4oCSYQ==
dependencies:
moment "^2.30.1"
-"@abp/select2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.4.tgz#6a8c6347ec75fcf60d76bc50ecca8008253fc7c7"
- integrity sha512-OMyXr+gYMM81CQliqDVnEGsK2/WbmC4N5IZ1ZSJl+mW7cUClmyg9CLg418ID/7OU+ItUwbw9YvG4RPwnGF1ujw==
+"@abp/select2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0.tgz#c96d869be0d3298ed7c0888288ea9829e6266cd4"
+ integrity sha512-V+qx9hw3oe7o0WbG03ZgAjbqRJPVuedzrdy7ExEdueTc6LRP/WEgbVpXhsNISObtouE6Dadwp3iXYSExgNUC6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
select2 "^4.0.13"
-"@abp/sweetalert2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.4.tgz#26d4e9c935f20a7e0bde23327c6761fe6466cd41"
- integrity sha512-zhwnA0WpkNO6JuqbBgO6PQ817wuThw6mtGcP96V1m/xtckJWNDub1gby0gJqnWqnq5Cuj4u9gPRkkcVmfPn8ZA==
+"@abp/sweetalert2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0.tgz#826d6dd0b70c35a7401cc884fb1e82af99a0305d"
+ integrity sha512-0r338ayjaL9uzmLKE8oHpcMgJeVgVoMYfhQAPINeQHv1TPXuYCLo0aoRNoLsfmUo3ayYBBa3zOrugFIVis7Q6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
sweetalert2 "^11.14.1"
-"@abp/timeago@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.4.tgz#494b25062f14f8a139ed66958991d34fcf4023a3"
- integrity sha512-6HoEkdQCYDxrEGSjxHXN2Vj5ipc3rIXTbCqj7dYI9K5tuaQ4Wq0Obz/Wx6UZ71ZjzGAeAQkDeXVc68GjQyLX6Q==
+"@abp/timeago@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0.tgz#79bbe6dd32b0ee7df2e8ebd05274a0ecc7882ba7"
+ integrity sha512-hEUi5re5N1YkDSpaUaUtXF1Mz4YyiEvNzVADbKRz11kbR4ZAFzcvVqsQLeNo7qnuFLfJNAtuzyjkuxwL75kmaA==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
timeago "^1.6.7"
-"@abp/utils@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.4.tgz#350eb915af78ecdbc2a0a15a1ad4bac4212cefc2"
- integrity sha512-PZzfkiq6sthX5+Icw7h3HVpnDVgN7ZnmOnIyzKhBeHALpH+JfO7QruwJl96Moba4LGmzPdFdLkwm2qznVoqyZA==
+"@abp/utils@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0.tgz#bf32ced1175e45fbe010c3cb806c7cd37f85089c"
+ integrity sha512-aciBuXhzlaqe+o7mNt536bCk425cmxY5BE0wwl13u3pX3LfWYWLEgwl8GS0aeI11TS1/7+1N85RJELyz/+y0hQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
index 1134f3a375..697f1c7ba2 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.4",
- "@abp/cms-kit": "9.2.0-rc.4"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0",
+ "@abp/cms-kit": "9.2.0"
}
}
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
index 1f632241e5..37cacca8fb 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
@@ -2,293 +2,293 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.4.tgz#2659ec541028ec6a1688b748414fb181924f1f58"
- integrity sha512-KSpfnvgRPxDb9oJWBnjpFm/FcXSTRO6aAVBlCERi4jtGzp04e//3rHnOWjv+JyxJqOP0JszWSALXK4A/oMQFNQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.4.tgz#4212523cc2d2db881d2a0a9c1b28f372c53c19d7"
- integrity sha512-z6nCmIfcaiQ6CPHhVq0C6RYljjrqScVVj+Sf0uI8eP6qG+CVT/aEVgb+3Nc5EM5SjDvR/eTxH4J3YcVNDj32Lg==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.4"
- "@abp/bootstrap" "~9.2.0-rc.4"
- "@abp/bootstrap-datepicker" "~9.2.0-rc.4"
- "@abp/bootstrap-daterangepicker" "~9.2.0-rc.4"
- "@abp/datatables.net-bs5" "~9.2.0-rc.4"
- "@abp/font-awesome" "~9.2.0-rc.4"
- "@abp/jquery-form" "~9.2.0-rc.4"
- "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.4"
- "@abp/lodash" "~9.2.0-rc.4"
- "@abp/luxon" "~9.2.0-rc.4"
- "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.4"
- "@abp/moment" "~9.2.0-rc.4"
- "@abp/select2" "~9.2.0-rc.4"
- "@abp/sweetalert2" "~9.2.0-rc.4"
- "@abp/timeago" "~9.2.0-rc.4"
-
-"@abp/aspnetcore.mvc.ui@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.4.tgz#a47763a480e488363b901327d94556fdad6cccb7"
- integrity sha512-7fxC3zifdnpJZwKsP1hgK0+mu9y/w4zrMY1rR8AVvcpMdt8/Mmtj6mJi+Ompv3YtO9F/Zgnxqma5R0pYMTke7g==
+"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0.tgz#af6ff5071cadb480b4aece0f15400d56b105a350"
+ integrity sha512-+LOmhSfsua7i3VQy9vYTDv7nE0fdIA+kNvorQ4wkkRzijOAlwmS4fkupglwOKJQSCWGAM7VXccPy2NzdmwvEtw==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0.tgz#791f419e8e0fab229e3f93f7a90edcd259100206"
+ integrity sha512-Mrs+kQg0S5OyRsPBwXQTqOq2DBWDdot7emETcX/gatv26GFbRe3nTOk1E+VWD/nsxHEOKTSE8LClC6TgkMxD8Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~9.2.0"
+ "@abp/bootstrap" "~9.2.0"
+ "@abp/bootstrap-datepicker" "~9.2.0"
+ "@abp/bootstrap-daterangepicker" "~9.2.0"
+ "@abp/datatables.net-bs5" "~9.2.0"
+ "@abp/font-awesome" "~9.2.0"
+ "@abp/jquery-form" "~9.2.0"
+ "@abp/jquery-validation-unobtrusive" "~9.2.0"
+ "@abp/lodash" "~9.2.0"
+ "@abp/luxon" "~9.2.0"
+ "@abp/malihu-custom-scrollbar-plugin" "~9.2.0"
+ "@abp/moment" "~9.2.0"
+ "@abp/select2" "~9.2.0"
+ "@abp/sweetalert2" "~9.2.0"
+ "@abp/timeago" "~9.2.0"
+
+"@abp/aspnetcore.mvc.ui@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0.tgz#e3e703ea46caf04cc966ea0af6deb64427a90d4c"
+ integrity sha512-VHH68/7Bw7r8p70T9grnVISgYPe2t3m9199S/wAXGtpGHML/lbHhDflWbm7y1MHcrmCfaXy42O9SmTHV25BJhA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.4.tgz#0aec67332e3148e21658650bfaaa08c64180e2ad"
- integrity sha512-CaD709aGigfQk76XDshSrctm9TkgjA+7XgnDuVraPRPwq4dwXGIhbNAiJ1+5k6OXrUHqJP3nPc4NDPZiXDwgqw==
+"@abp/bootstrap-datepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0.tgz#271ff68e2cee7b4ffe5a60406561a05948d6bbe6"
+ integrity sha512-V8o1cn1MKXE5GH1ZpBHiWWilzxjHIp4IS6rNoCDBSnaQcVvRku9KPI8tPNQSf+4x3jBfHDV9aOBDbDGTQ6J2yw==
dependencies:
bootstrap-datepicker "^1.10.0"
-"@abp/bootstrap-daterangepicker@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.4.tgz#b08d564b0dfc8be62a052fc205e1445764b6a2d0"
- integrity sha512-zwWkb6JaUqN2rtIGLtb0Cf1RtP0nuCFK0x2r4J9kYnv1vKiT8vrK2Jl5mJVjvdnO0JifS1rueDMPglVpOeghRw==
+"@abp/bootstrap-daterangepicker@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0.tgz#a239f8c2efce57d2e2beca70ceeede52d1b177d5"
+ integrity sha512-Cd9naCyepTvmUotkR1VyOBqUMgyeSXnOVWR7HxXm+jugKtnWRzrztZB6UyfnNzzjc1RMOyiAUEjzitKSJrXeoA==
dependencies:
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.4.tgz#0615ec9fa7422d76e8f4af22ec28fe9672d60c38"
- integrity sha512-m1ORR/R84nPEfid/x5rC5jy4orsw4yhkk4nApiW11H4Eb7ssbcviR75ugJ5GBt3GOevHHlTZWwvf8K4C+zdqZg==
+"@abp/bootstrap@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0.tgz#08859288b8372ea111a240b507047b144d6caca9"
+ integrity sha512-L3EZQza2c/5VmvZkLsf0EOuaMi8fseyyiwlFN65i1hpcDwhOLcaqnxMneeaSJ+Dy4xczJT+oBml9D9OSTuzmkA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
bootstrap "^5.3.3"
-"@abp/clipboard@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.4.tgz#e91e8c9b9947cef648e31f17ac8050d342a88416"
- integrity sha512-iUvCQK3YJKPflLWkXNsueXit+Ipez5+R5q4OdngcvTmVXIUoH8t+3iiM+Q7ohA0vRknsdEGPMUUS7TnDW9fVqA==
+"@abp/clipboard@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0.tgz#348a0e45752c7eb055fb00af52660593ad340caf"
+ integrity sha512-2+wt2ShLBfoHqx0DNNevJkaz1POLcs1tcK1hL4ZqsjOnS7BrTk1r8zwNvCw1XEeH2S1rPftAWH4PvzL4j86DFA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
clipboard "^2.0.11"
-"@abp/cms-kit.admin@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-9.2.0-rc.4.tgz#0e83fbeac3fe1191b82defaeb8959c69c9458593"
- integrity sha512-xpuaCV+/G9kgzTCWhIfLuEIwWTCq1W3B780eyJ4fnLmg+17BOv+LsP6ygGqARnmjsWYEX6wG1C3NdDkkNE4Dlg==
+"@abp/cms-kit.admin@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-9.2.0.tgz#b86b76692214ab793175d275c9c2845ac44524ce"
+ integrity sha512-s5Mh7OrDBngxD67AE5amtFFCpqY3ZaYVCPnboIvsMNiGk5U3JTqRZU+Ec1L1OpuoBg+jJDbKvPGQEFRuadMKQA==
dependencies:
- "@abp/codemirror" "~9.2.0-rc.4"
- "@abp/jstree" "~9.2.0-rc.4"
- "@abp/markdown-it" "~9.2.0-rc.4"
- "@abp/slugify" "~9.2.0-rc.4"
- "@abp/tui-editor" "~9.2.0-rc.4"
- "@abp/uppy" "~9.2.0-rc.4"
+ "@abp/codemirror" "~9.2.0"
+ "@abp/jstree" "~9.2.0"
+ "@abp/markdown-it" "~9.2.0"
+ "@abp/slugify" "~9.2.0"
+ "@abp/tui-editor" "~9.2.0"
+ "@abp/uppy" "~9.2.0"
-"@abp/cms-kit.public@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-9.2.0-rc.4.tgz#5d2f4bdf4db020c2fb60d58a67314c28dac953a0"
- integrity sha512-WFRLfDQDL9WNRlvRgzOI2TWliGWkdk3hzVwnYcPint0p7tBjeVFkpEPVYBR33hkLYJJAKCgPKf1xnzPfLwfUgg==
+"@abp/cms-kit.public@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-9.2.0.tgz#a85c5923593354614f7a339a5ef17b12ea71a2ea"
+ integrity sha512-W2KhpFZLBK+Q9ZdHI0IYhrfC1ZRem+Ox55tg1G0Ai3TabOLMyr6ubgE4maU6BUNak76DKBkzDXB/SxNFWMvS+g==
dependencies:
- "@abp/highlight.js" "~9.2.0-rc.4"
- "@abp/star-rating-svg" "~9.2.0-rc.4"
+ "@abp/highlight.js" "~9.2.0"
+ "@abp/star-rating-svg" "~9.2.0"
-"@abp/cms-kit@9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-9.2.0-rc.4.tgz#008a367579f14ccc192eefe4e8f10a3e2835093d"
- integrity sha512-nzCQ1k7gEsfBjdgF+vtU0w4NEKnSlEGhK0D3HlWeakqJYi5CuMNIpMYmJCijaHOBUrmT59BfL00hoz/BNcKHwA==
+"@abp/cms-kit@9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-9.2.0.tgz#da9a3dfc3c83755a3c920b0392ec2b37106b5bf1"
+ integrity sha512-JHAiyppt9+Vx9f70duawR8OSWFaSrlPl1mOdLOD4fUWek7j7HhSyFgjddwzaBjLXqSnicTFwg2pmY1qTa8XjMw==
dependencies:
- "@abp/cms-kit.admin" "~9.2.0-rc.4"
- "@abp/cms-kit.public" "~9.2.0-rc.4"
+ "@abp/cms-kit.admin" "~9.2.0"
+ "@abp/cms-kit.public" "~9.2.0"
-"@abp/codemirror@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-9.2.0-rc.4.tgz#69430d5882f60c6d2b76557c76ef31143cafaeff"
- integrity sha512-uYcmMb5j/eDYY6GSOUZ/kdlrwY8QD5JAThFetzZpc2j/lfbnXwA7sA/JYLBOrud6ChwTCqE293wXpldtWbqm4A==
+"@abp/codemirror@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-9.2.0.tgz#83b9c805669640e739a68ad26788547202958bff"
+ integrity sha512-feYwaVZT7LH46BZPEkgpRHIEpn/vqcU5yo4QQ/u8t/D4veYfgLUdMqzt6P6kyFpgzb0X1+SOqvlWBRHBAHeQrQ==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
codemirror "^5.65.1"
-"@abp/core@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.4.tgz#b758ea117ae3e3e3596e407a347617b8fcb6c112"
- integrity sha512-eNklBpyUAort/UEhgmnvMglBS/FSAzUiKalN7hgJFKx0nd3cDDkjkN6YFY8VuPInt3YfRz5omZQsGNq7eyjtbQ==
+"@abp/core@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0.tgz#db08fd34cfc891e94eb9e59ed3c0d0e6ef45c51a"
+ integrity sha512-3iESoHFj8I2xK81dwQVpCI6C1bc87VfWKyJE3/IUv4zWvG4QvI0aKhe1wxocmJqTjjowPUA3/fa2hvpfqPs2Bw==
dependencies:
- "@abp/utils" "~9.2.0-rc.4"
+ "@abp/utils" "~9.2.0"
-"@abp/datatables.net-bs5@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.4.tgz#75c12fe053d593b738bb5ca7394b2954409f5e00"
- integrity sha512-5FG5Jc6Co9q/1xYmmW2SabSaXVkdJohPJ9XtzTthwnY8Ko5eGV7TPkEfwwsk0PLXp+Wu3ifQaZI4CIE9WR81XA==
+"@abp/datatables.net-bs5@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0.tgz#eab201c959727c27aaab30dc5bd8159249d8b54b"
+ integrity sha512-bmK6GKffXzYbfkDIlN27D7mohnYsXoODEiHqhZnBdIzeSJyHwrwRPRVbO1EcBn1SEBHjGJp3S69Z6gDbRs018g==
dependencies:
- "@abp/datatables.net" "~9.2.0-rc.4"
+ "@abp/datatables.net" "~9.2.0"
datatables.net-bs5 "^2.1.8"
-"@abp/datatables.net@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.4.tgz#523b017e4b9ea9d3a6d3262f66bd3daaade05c0b"
- integrity sha512-udCSjJYYpi/Ql/KJZxYDMxbtX6gXw7hsfMxQjP0u37JsyNLgd4fTrzaXCe7OKn3x7poJcANoqsEgWow/9R/WIg==
+"@abp/datatables.net@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0.tgz#e4880fe074d86d3c5dbd7f48c86244790fc376c2"
+ integrity sha512-bKaaa+tl0Pt4oNaV+X8pBbvsHc2mPYoL7yuAs+LN8ZLwBdsGoUw7RNhLQ63O3tuYdHuaHhI/mx23X6JThr0SYw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
datatables.net "^2.1.8"
-"@abp/font-awesome@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.4.tgz#31d9fa475af3b543ddaff16e6af8caba966bd331"
- integrity sha512-FYmfrf2mX5rzU+GqK078rn85UmfAwdCB8JQhnGfkylybMRJvmocRsPBIEThjlFZAPGqqvULHUTRMwnRPTgpuNw==
+"@abp/font-awesome@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0.tgz#3e359da2510cbc0e5b9e46e9cb3664baf285722e"
+ integrity sha512-HRGg6XK3bCxFdVvEBnBKyLamqMUrenj//E4JuKOs8DtGLVH0jTyh8TwUT5/E/pI+POV7HEOpv9WpSB2p8pfsAg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
"@fortawesome/fontawesome-free" "^6.6.0"
-"@abp/highlight.js@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-9.2.0-rc.4.tgz#34b5e4ac1c340b6da27a3f9f2c9d565f08a69438"
- integrity sha512-Rwn6YUIbty5LuDm0PH5OM0j7Vk4OrZgWncgsubSekc/r8fh/ry6spoxdjuBB/AjwM8ZlJ0DWMQLw51K6Y18z7A==
+"@abp/highlight.js@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-9.2.0.tgz#85ac7c252aee377c2ff9e15153c692fdea5cb96d"
+ integrity sha512-zD6UVZNUQEJ22ynqQs14jR8eBWQR7loOCpt9lPlIjXF6tnoBvcc7NBeBFw9ehKjkG2cegJCmahYb4cFnlJFigA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
"@highlightjs/cdn-assets" "~11.10.0"
-"@abp/jquery-form@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.4.tgz#b200be90031b58305a2ebfd646ffbd5ce4cca40c"
- integrity sha512-ohCtIfz48E0+vNdNyKTsLlfW0NYMJfKWXd9BPp2szgBaDbC7jYdGYyABbxGxRc7mp1B8xQzRhLnTzdRtWaJemg==
+"@abp/jquery-form@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0.tgz#40fac992584c26e6c54f66e7f68f8abf8944a626"
+ integrity sha512-B7Shq1itQjsnzdU1kjLpGHWjkSGFhIM2iF5BNMkqcylG3Yq1Se4+8QPoJpn/soilmtX8gbO2fx8TOejfIazXIw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.4.tgz#0329f9268b83e0832e26ea3f6523dbc5226b9114"
- integrity sha512-iOnw5YoiC3bCIFRjuXPagz+ixFV+PM36hP0UJ4x03BK6GDJnAvjLshYe6qnQG9Xnz1arzmIX5ud5EjWvWSBIoA==
+"@abp/jquery-validation-unobtrusive@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0.tgz#c2df51d024d48e71f0e7fb8d4207a8b2855393f4"
+ integrity sha512-c1cPfWVdo+gpaMoegAkw0DzGL2fy/1ylEi/shb95MAGt3iyECVx+X+R/XOxbVHKVI57D4d5IGj6cXYBhdKkvAw==
dependencies:
- "@abp/jquery-validation" "~9.2.0-rc.4"
+ "@abp/jquery-validation" "~9.2.0"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.4.tgz#073e4cbf905f652ce83633b98696b559916b984d"
- integrity sha512-pS2Y2c6gXFOzfKeM2/JlW56ZmrUeflT2av64aWrFYnv7IgJUp38PEjR10uPy3g/mP2c9jis8dOfkdbRrlHwf+g==
+"@abp/jquery-validation@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0.tgz#97688d2e3c25699d4368ebf7234e04943aa5e6ab"
+ integrity sha512-UO+T6SqXBrh0ODwvMm840CGbE2fdYNo5oqJL4V4JbHv9uz7MH+k0bB1DK7mFb94iDM7QcglLzIfcN4hLRV7arw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jquery-validation "^1.21.0"
-"@abp/jquery@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.4.tgz#ac8a6ce969d58cc4f05d33adcfad76e7442231e8"
- integrity sha512-N5hZ8VGXJUn5QW1mSXHIO7SjdvoyrkCyH5j8DhXJO1mDlS1L36n+MJHFwQK7UZpHcFOuklAJ7f417r3sISOBCw==
+"@abp/jquery@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0.tgz#38c249be6eda0cdc899cc8a1f20e5152c39ae9a0"
+ integrity sha512-sIe3Zk+8549ytydCtDlECZ930PapW/2J0652two/sJwYG/SGUGxYQbw3QnJGFTcL9TFwcWwRj5iWX0gWrLEIyA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
jquery "~3.7.1"
-"@abp/jstree@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-9.2.0-rc.4.tgz#352c40541706b9b49ac47eaad6253475086527d1"
- integrity sha512-bkOL5Ip/ZiD1hjG7CC55sP/+79HcIYa/jVfVWj86ke6d/taA2IUhzmvVYcxJ2gABbK3nz0bVTrF7nqTBD9HaxA==
+"@abp/jstree@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-9.2.0.tgz#eb167f0909aacbe3652f169f35b8e62743ed43b8"
+ integrity sha512-Aj35TeMTN1zwgITeCUsg9rFsiJ0r3IeGfKCv7PEL1AJUh37fU0CwVtHNhM0aOi1oUNJeMjs4XnFVYCqzJzVaNw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
jstree "^3.3.17"
-"@abp/lodash@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.4.tgz#e428df195ed90414a9a412e1dcb6494344475f82"
- integrity sha512-WsbyBNA57/giyI5pnM7Y7dk0p56hMDS5OMdmNilaGOWMnvz7mMTJNvStMBqS7fqekzfXsFGfrLbTmehY3pTYwQ==
+"@abp/lodash@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0.tgz#7fa4c9e956c766e34ec4677d2102a6d00f899a4b"
+ integrity sha512-2elXj/eWw875tF9ixbOm3uqXCxGaG5gL9Tub5k7cP+XhFpNBOYijNaXdN8SeDSxr83WDVWdrk//OQL8BF7XPdw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
lodash "^4.17.21"
-"@abp/luxon@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.4.tgz#dacb173d24987a1ab4fb7e53dff9f91728a1efaa"
- integrity sha512-qNuYml25Q2ODzZ830FhijGY66WvAUa02mB9hgulpFlF0p2UiFmhA0dMNVahEuytoFodjkSrhLP6cGfONf7ht8A==
+"@abp/luxon@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0.tgz#865db7b60dba4029134fb4a4b5eaa08c723dcea8"
+ integrity sha512-LWjczvzu1gFIq0/2fRz+bJW2+zsmXAmfz0I+lZ3wmqUdkViqAqwTa+5NMIl2tC92u4Dv3LGXKtH37Jw8m+XjTg==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
luxon "^3.5.0"
-"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.4.tgz#9b0c0444ec8f11c8c8040387f83080e51a281657"
- integrity sha512-cvYJI/4jkzOWSvTY0C/PxSq62SxEq3UlaXpefj/W+CAwPVjG+Yik2YHt5qgcmRRn0oF5V/XRJHB7A4H23+VKyA==
+"@abp/malihu-custom-scrollbar-plugin@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0.tgz#09722b1e7ca34b96e2a68368db0e96cdf9ab0e6c"
+ integrity sha512-kfDf/1RwGtAlos/7BW+7xbh3LtJ4VG0Z4mxS+b2HsywAwlt/kE5FltfBj2ResQb030bsGNl7A5JglV9Pv1UlPw==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/markdown-it@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-9.2.0-rc.4.tgz#f22ba1310cc23406706acb708d4a4953ff7bc2dc"
- integrity sha512-Uz8Y8P0yn8vo8+WtlRD39wjJy1euz+Q+7DwaxY7GJE1fnLCdWMowK+umPihhgTE0hoXmsDuXHvE3ZxsgptayIA==
+"@abp/markdown-it@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-9.2.0.tgz#74946415e4893deb5952e626d7314db1b926e4a3"
+ integrity sha512-yc0N0MeaqhBYkUw3/mIMuafNCk/tnh/paG3xObTFrGTqvU7yhlNH5je3ZQ2oBOlF3wHe/6ge0foS/3/fuGvsOQ==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
markdown-it "^14.1.0"
-"@abp/moment@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.4.tgz#527ed54f4330a77ec2ea1411bfffe2d57e62d172"
- integrity sha512-zIRTuMCcPAfJAU64DUeU7dJPUJqoyJ7TvHBhrUcmmGZK7IzNtaP3/KAGjZIHhHbUwIjidjCxlF2YnW1io7hcJg==
+"@abp/moment@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0.tgz#137d688af4df195742061ac2b8a2bf460a027071"
+ integrity sha512-15aTjYAxHK+upkiZ94XCe8CoSPKMl1D8f6GXJIfwPkuYZ+na4ma17qBu4P8bFsc4gu3ngxYiLHRSzYzr4oCSYQ==
dependencies:
moment "^2.30.1"
-"@abp/prismjs@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.4.tgz#5164e64fa04d2a852043e1f7d02952d54112748a"
- integrity sha512-fUCqWhmmRMu5DgpDxyH7uyEHS6lCFk+BY+JuS22sTvyhu+Q9M4rYhFEl/E9S+cA2rfxSNAG5h7HPXUWTqHPLgg==
+"@abp/prismjs@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0.tgz#03fca8cd2f4bdc09a68bd9b1fcdeaede56f96542"
+ integrity sha512-OUbjaxeXKxmrR9fZe/wazS9hGrYXYam/CypnQNTVaNNgSpwvgoKoCFCll9SJUGV8tXA6iEpVdszMGyRY5Hov+g==
dependencies:
- "@abp/clipboard" "~9.2.0-rc.4"
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/clipboard" "~9.2.0"
+ "@abp/core" "~9.2.0"
prismjs "^1.29.0"
-"@abp/select2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.4.tgz#6a8c6347ec75fcf60d76bc50ecca8008253fc7c7"
- integrity sha512-OMyXr+gYMM81CQliqDVnEGsK2/WbmC4N5IZ1ZSJl+mW7cUClmyg9CLg418ID/7OU+ItUwbw9YvG4RPwnGF1ujw==
+"@abp/select2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0.tgz#c96d869be0d3298ed7c0888288ea9829e6266cd4"
+ integrity sha512-V+qx9hw3oe7o0WbG03ZgAjbqRJPVuedzrdy7ExEdueTc6LRP/WEgbVpXhsNISObtouE6Dadwp3iXYSExgNUC6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
select2 "^4.0.13"
-"@abp/slugify@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-9.2.0-rc.4.tgz#d20d6013182f15c6129f4b9bcbd2fb2f5abebfa8"
- integrity sha512-247cvIVnAhiw+KOSrBdRjQoi/igBH8mcpf2wR3Ag2Mng9L0NWEnx+aqBP92/3nXQi2HDwIZ3N0TQUf6Q8BLU0Q==
+"@abp/slugify@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-9.2.0.tgz#b71ae2f237866a97422c4fe1720ab62b8971ead5"
+ integrity sha512-yjNKhWOTxW9T87g+5CGH9R3w/Pm97H5eJLAEMYs4th5CqpU6ECtab4+1xIboF7LEkB1HwLHjAxa80UUKpdGe+A==
dependencies:
slugify "^1.6.6"
-"@abp/star-rating-svg@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-9.2.0-rc.4.tgz#af32f85a2b74ac2d1debc2cb4eeb74c3b577d77c"
- integrity sha512-3SdcXMbPzRWlCzuALUwYmdAYptHuVjVOD6trvw8WuZ4X2ix0S0UZ2vaQFeX+mrVZoPHnp5PruoZhcnm8t+N9rw==
+"@abp/star-rating-svg@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-9.2.0.tgz#a1cccb2dd82bbaf1288dc530b3c5ff81a4dd772e"
+ integrity sha512-eMYhBlWzEK8EUIS/FYEafhyc1CbCB3qL8PpenFYyLDjMb9kfv3z5x05MYIn2o8vTYYuMrTS/bWAYCAYQOVJCBg==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
star-rating-svg "^3.5.0"
-"@abp/sweetalert2@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.4.tgz#26d4e9c935f20a7e0bde23327c6761fe6466cd41"
- integrity sha512-zhwnA0WpkNO6JuqbBgO6PQ817wuThw6mtGcP96V1m/xtckJWNDub1gby0gJqnWqnq5Cuj4u9gPRkkcVmfPn8ZA==
+"@abp/sweetalert2@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0.tgz#826d6dd0b70c35a7401cc884fb1e82af99a0305d"
+ integrity sha512-0r338ayjaL9uzmLKE8oHpcMgJeVgVoMYfhQAPINeQHv1TPXuYCLo0aoRNoLsfmUo3ayYBBa3zOrugFIVis7Q6A==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
sweetalert2 "^11.14.1"
-"@abp/timeago@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.4.tgz#494b25062f14f8a139ed66958991d34fcf4023a3"
- integrity sha512-6HoEkdQCYDxrEGSjxHXN2Vj5ipc3rIXTbCqj7dYI9K5tuaQ4Wq0Obz/Wx6UZ71ZjzGAeAQkDeXVc68GjQyLX6Q==
+"@abp/timeago@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0.tgz#79bbe6dd32b0ee7df2e8ebd05274a0ecc7882ba7"
+ integrity sha512-hEUi5re5N1YkDSpaUaUtXF1Mz4YyiEvNzVADbKRz11kbR4ZAFzcvVqsQLeNo7qnuFLfJNAtuzyjkuxwL75kmaA==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
timeago "^1.6.7"
-"@abp/tui-editor@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-9.2.0-rc.4.tgz#dca06d694d7105a807887c4ddebc01c7f2a9c5f7"
- integrity sha512-dpSrv1SYZh947AuN95GlrGyI61CeysJHnbsAKPmGsmZ5CH6VSDM5gpI9teo8SdhXsi9L5rtVBehCXBgDHSsiQQ==
+"@abp/tui-editor@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-9.2.0.tgz#f28e1099e39def76ff81d1db64f5e352f0d28f02"
+ integrity sha512-h3Nq0LmkmPWBx1tzPnImJAhPFlAD8sX/GnlAvEZGY3XJ7X6146TPl7HIzZ4fnttm+ilhuDUG2qydgIek/5pWLw==
dependencies:
- "@abp/jquery" "~9.2.0-rc.4"
- "@abp/prismjs" "~9.2.0-rc.4"
+ "@abp/jquery" "~9.2.0"
+ "@abp/prismjs" "~9.2.0"
-"@abp/uppy@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-9.2.0-rc.4.tgz#a2241128f0e2ada9ae667aa45ba29ac08c4c97ef"
- integrity sha512-hIrmltycYeDINFixb3AjnU7UiOdZ/uIIYx9Na4K2Zk2Gc3gyChsAtQ35UIH0UpRYBDf/+4r1G2GddP8TQ2nwQw==
+"@abp/uppy@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-9.2.0.tgz#319cc21b655c310e5bf76bca787a181cd59bb2df"
+ integrity sha512-8SpMK46F9nNwZpXGn1AjzSTARC47K1hPqX2uzuNePCC0nT4RtP/711XrloawOhlefFwvG7n66cknU9LSBvwcMA==
dependencies:
- "@abp/core" "~9.2.0-rc.4"
+ "@abp/core" "~9.2.0"
uppy "^4.4.1"
-"@abp/utils@~9.2.0-rc.4":
- version "9.2.0-rc.4"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.4.tgz#350eb915af78ecdbc2a0a15a1ad4bac4212cefc2"
- integrity sha512-PZzfkiq6sthX5+Icw7h3HVpnDVgN7ZnmOnIyzKhBeHALpH+JfO7QruwJl96Moba4LGmzPdFdLkwm2qznVoqyZA==
+"@abp/utils@~9.2.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0.tgz#bf32ced1175e45fbe010c3cb806c7cd37f85089c"
+ integrity sha512-aciBuXhzlaqe+o7mNt536bCk425cmxY5BE0wwl13u3pX3LfWYWLEgwl8GS0aeI11TS1/7+1N85RJELyz/+y0hQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Details.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Details.cshtml
index a9d064235f..8cb0b482b5 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Details.cshtml
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Details.cshtml
@@ -3,6 +3,7 @@
@using System.Globalization
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Layout
+@using Volo.Abp.Timing
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Comments
@using Volo.CmsKit.Admin.Web.Menus
@using Volo.CmsKit.Comments
@@ -10,6 +11,7 @@
@inject IPageLayout PageLayout
@inject IHtmlLocalizer L
+@inject IClock Clock
@model DetailsModel
@@ -50,7 +52,7 @@