Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ jobs:

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4.37.8
uses: github/codeql-action/init@v4.37.9
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
Expand Down Expand Up @@ -98,6 +98,6 @@ jobs:
exit 1

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4.37.8
uses: github/codeql-action/analyze@v4.37.9
with:
category: "/language:${{matrix.language}}"
2 changes: 1 addition & 1 deletion .github/workflows/defender-for-devops.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,6 @@ jobs:
uses: microsoft/security-devops-action@v1.12.0
id: msdo
- name: Upload results to Security tab
uses: github/codeql-action/upload-sarif@v4.37.8
uses: github/codeql-action/upload-sarif@v4.37.9
with:
sarif_file: ${{ steps.msdo.outputs.sarifFile }}
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# <img width="50" height="50" alt="Logo" src="https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/screenshots/uTPro/logo-utpro.png" /> uTPro – Umbraco Turbo Pro
# <img width="50" height="50" alt="Logo" src="https://docs.utpro.dev/screenshots/uTPro/logo-utpro.png" /> uTPro – Umbraco Turbo Pro

**For developers, by developers**

Expand Down Expand Up @@ -42,9 +42,9 @@ dotnet run --project Project/uTPro.Project.Web/uTPro.Project.Web.csproj

## Screenshots

![Dashboard](https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/screenshots/uTPro/readme-dashboard.png)
![Dashboard](https://docs.utpro.dev/screenshots/uTPro/readme-dashboard.png)

![Block Preview](https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/screenshots/uTPro/readme-block-preview-live.png)
![Block Preview](https://docs.utpro.dev/screenshots/uTPro/readme-block-preview-live.png)

---

Expand Down
8 changes: 5 additions & 3 deletions uTPro/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,11 @@ COPY --from=build /app/publish .
ENV ASPNETCORE_ENVIRONMENT=Production
ENV PORT=10000

# Create a non-root user and grant it ownership of the app + writable temp dirs
RUN groupadd --system --gid 1000 appgroup \
&& useradd --system --uid 1000 --gid appgroup --no-create-home appuser \
# Create a non-root user and grant it ownership of the app + writable temp dirs.
# Use --force so groupadd is a no-op if GID 1000 already exists in the base image,
# and use the -o (non-unique) flag on useradd to tolerate a pre-existing UID 1000.
RUN groupadd --system --gid 1000 --force appgroup \
&& useradd --system --uid 1000 -o --gid appgroup --no-create-home appuser \
&& chown -R appuser:appgroup /app /tmp/umbraco
USER appuser

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
:root {
--umb-login-primary-color: #f6821f;
--uui-color-header-surface: #f6821f;
--umb-login-greeting-color: #D9A44C;
--uui-color-default-emphasis: #D9A44C;
--uui-show-focus-outline: #ff9e40;
--uui-color-default: #f6821f;
--uui-color-current: #FFCE40;
/* --uui-palette-violet-blue: #f6821f; */
/* --uui-button-contrast: #000; */
--umb-login-primary-color: #f6821f !important;
--uui-color-header-surface: #f6821f !important;
--umb-login-greeting-color: #D9A44C !important;
--uui-color-default-emphasis: #D9A44C !important;
--uui-show-focus-outline: #ff9e40 !important;
--uui-color-default: #f6821f !important;
--uui-color-current: #FFCE40 !important;
/* --uui-palette-violet-blue: #f6821f !important; */
/* --uui-button-contrast: #000 !important; */
--umb-login-curves-display: none;
--umb-header-logo-display: none;
--umb-login-header-font-size-large: 2rem;
Expand Down
12 changes: 12 additions & 0 deletions uTPro/Project/uTPro.Project.Web/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,18 @@
var setup = HostingSetup.BuildWebApplicationOptions(args);
var builder = WebApplication.CreateBuilder(setup);

#if DEBUG
// Enable DI container validation in Debug mode only.
// - ValidateScopes: throws if a Scoped service is resolved from the root provider (e.g. injecting scoped into singleton).
// - ValidateOnBuild: throws at Build() if any service has missing or unresolvable dependencies.
// Catches DI misconfigurations early during development instead of failing silently at runtime.
builder.Host.UseDefaultServiceProvider((context, options) =>
{
options.ValidateScopes = true;
options.ValidateOnBuild = true;
});
#endif

// Expose the resolved web/content root to PathFolder (a DI-less static helper) so code
// that locates files via PathFolder respects the configured RootPath instead of assuming
// the default wwwroot under the process current directory.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
"expose": [],
"layout": {}
},
"markup": "\u003Ch2\u003ESetup Domain\u003C/h2\u003E\u003Cp\u003EIn addition to the configurations used for Umbraco, we also provide other configurations for backoffice and language customization.\u003C/p\u003E\u003Cp\u003EIf you want to use multi site or configure separate backoffice, please update the \u003Cstrong\u003Ehosts file\u003C/strong\u003E according to each operating system:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003EFor Windows: C:\\Windows\\System32\\Drivers\\etc\\hosts\u003C/li\u003E\u003Cli\u003EFor MacOS and Linux: /etc/hosts\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-appsettings-config.png\u0022 alt=\u0022Setup appsettings config\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-hosts-file.png\u0022 alt=\u0022Setup hosts file\u0022 /\u003E\u003C/p\u003E\u003Ch2\u003ESetup Project\u003C/h2\u003E\u003Cp\u003ESetting up uTPro is simple. Once you have downloaded the source code, you can open the project solution file in Visual Studio. We recommend using Visual Studio 2022 (or later).\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-visual-studio-solution.png\u0022 alt=\u0022Setup Visual Studio solution\u0022 /\u003E\u003C/p\u003E\u003Cp\u003EThen follow the minimum requirements of the Umbraco CMS project:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EDatabase\u003C/strong\u003E: uTPro ships configured for PostgreSQL (default), and also supports SQL Server and SQLite. Change the ConnectionString in appsettings.json with key \u003Cstrong\u003EumbracoDbDSN\u003C/strong\u003E.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003ETarget framework\u003C/strong\u003E: .NET 10 (Changes depending on the Umbraco version in use \u2014 Umbraco 17 runs on .NET 10)\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-database-config.png\u0022 alt=\u0022Setup database config\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-connection-string.png\u0022 alt=\u0022Setup connection string\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-target-framework.png\u0022 alt=\u0022Setup target framework\u0022 /\u003E\u003C/p\u003E\u003Ch2\u003ESetup Data\u003C/h2\u003E\u003Cp\u003EThe project has been integrated with data, and you can use \u003Cstrong\u003EuSync to synchronize data\u003C/strong\u003E after installing Umbraco CMS.\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-usync-import.png\u0022 alt=\u0022Setup uSync import\u0022 /\u003E\u003C/p\u003E\u003Cp\u003EIn the \u0022Everything\u0022 group, select \u0022Import\u0022 and wait for the results, then refresh the page, return to the \u0022Content\u0022 tab to check the results.\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-usync-result.png\u0022 alt=\u0022Setup uSync result\u0022 /\u003E\u003C/p\u003E"
"markup": "\u003Ch2\u003ESetup Domain\u003C/h2\u003E\u003Cp\u003EIn addition to the configurations used for Umbraco, we also provide other configurations for backoffice and language customization.\u003C/p\u003E\u003Cp\u003EIf you want to use multi site or configure separate backoffice, please update the \u003Cstrong\u003Ehosts file\u003C/strong\u003E according to each operating system:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003EFor Windows: C:\\Windows\\System32\\Drivers\\etc\\hosts\u003C/li\u003E\u003Cli\u003EFor MacOS and Linux: /etc/hosts\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-appsettings-config.png\u0022 alt=\u0022Setup appsettings config\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-hosts-file.png\u0022 alt=\u0022Setup hosts file\u0022 /\u003E\u003C/p\u003E\u003Ch2\u003ESetup Project\u003C/h2\u003E\u003Cp\u003ESetting up uTPro is simple. Once you have downloaded the source code, you can open the project solution file in Visual Studio. We recommend using Visual Studio 2022 (or later).\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-visual-studio-solution.png\u0022 alt=\u0022Setup Visual Studio solution\u0022 /\u003E\u003C/p\u003E\u003Cp\u003EThen follow the minimum requirements of the Umbraco CMS project:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EDatabase\u003C/strong\u003E: uTPro ships configured for PostgreSQL (default), and also supports SQL Server and SQLite. Change the ConnectionString in appsettings.json with key \u003Cstrong\u003EumbracoDbDSN\u003C/strong\u003E.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003ETarget framework\u003C/strong\u003E: .NET 10 (Changes depending on the Umbraco version in use \u2014 Umbraco 17 runs on .NET 10)\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-database-config.png\u0022 alt=\u0022Setup database config\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-connection-string.png\u0022 alt=\u0022Setup connection string\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-target-framework.png\u0022 alt=\u0022Setup target framework\u0022 /\u003E\u003C/p\u003E\u003Ch2\u003ESetup Data\u003C/h2\u003E\u003Cp\u003EThe project has been integrated with data, and you can use \u003Cstrong\u003EuSync to synchronize data\u003C/strong\u003E after installing Umbraco CMS.\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-usync-import.png\u0022 alt=\u0022Setup uSync import\u0022 /\u003E\u003C/p\u003E\u003Cp\u003EIn the \u0022Everything\u0022 group, select \u0022Import\u0022 and wait for the results, then refresh the page, return to the \u0022Content\u0022 tab to check the results.\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-usync-result.png\u0022 alt=\u0022Setup uSync result\u0022 /\u003E\u003C/p\u003E"
}
}
]
Expand Down Expand Up @@ -287,7 +287,7 @@
"expose": [],
"layout": {}
},
"markup": "\u003Ch2\u003EC\u00E0i \u0111\u1EB7t Domain\u003C/h2\u003E\u003Cp\u003ENgo\u00E0i c\u00E1c c\u1EA5u h\u00ECnh d\u00E0nh cho Umbraco, ch\u00FAng t\u00F4i cung c\u1EA5p th\u00EAm c\u1EA5u h\u00ECnh cho backoffice v\u00E0 t\u00F9y ch\u1EC9nh ng\u00F4n ng\u1EEF.\u003C/p\u003E\u003Cp\u003EN\u1EBFu b\u1EA1n mu\u1ED1n s\u1EED d\u1EE5ng multi site ho\u1EB7c c\u1EA5u h\u00ECnh backoffice ri\u00EAng, h\u00E3y c\u1EADp nh\u1EADt \u003Cstrong\u003Ehosts file\u003C/strong\u003E theo h\u1EC7 \u0111i\u1EC1u h\u00E0nh:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003EWindows: C:\\Windows\\System32\\Drivers\\etc\\hosts\u003C/li\u003E\u003Cli\u003EMacOS v\u00E0 Linux: /etc/hosts\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-appsettings-config.png\u0022 alt=\u0022C\u1EA5u h\u00ECnh appsettings\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-hosts-file.png\u0022 alt=\u0022C\u1EA5u h\u00ECnh hosts file\u0022 /\u003E\u003C/p\u003E\u003Ch2\u003EC\u00E0i \u0111\u1EB7t Project\u003C/h2\u003E\u003Cp\u003EC\u00E0i \u0111\u1EB7t uTPro r\u1EA5t \u0111\u01A1n gi\u1EA3n. Sau khi t\u1EA3i m\u00E3 ngu\u1ED3n, m\u1EDF file solution trong Visual Studio 2022 (ho\u1EB7c m\u1EDBi h\u01A1n).\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-visual-studio-solution.png\u0022 alt=\u0022Visual Studio solution\u0022 /\u003E\u003C/p\u003E\u003Cp\u003ESau \u0111\u00F3 \u0111\u00E1p \u1EE9ng y\u00EAu c\u1EA7u t\u1ED1i thi\u1EC3u c\u1EE7a Umbraco CMS:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EDatabase\u003C/strong\u003E: uTPro m\u1EB7c \u0111\u1ECBnh d\u00F9ng PostgreSQL, h\u1ED7 tr\u1EE3 th\u00EAm SQL Server v\u00E0 SQLite. Thay \u0111\u1ED5i ConnectionString trong appsettings.json v\u1EDBi key \u003Cstrong\u003EumbracoDbDSN\u003C/strong\u003E.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003ETarget framework\u003C/strong\u003E: .NET 10 (Umbraco 17 ch\u1EA1y tr\u00EAn .NET 10)\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-database-config.png\u0022 alt=\u0022C\u1EA5u h\u00ECnh database\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-connection-string.png\u0022 alt=\u0022Connection string\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-target-framework.png\u0022 alt=\u0022Target framework\u0022 /\u003E\u003C/p\u003E\u003Ch2\u003EC\u00E0i \u0111\u1EB7t D\u1EEF li\u1EC7u\u003C/h2\u003E\u003Cp\u003ED\u1EF1 \u00E1n \u0111\u00E3 \u0111\u01B0\u1EE3c t\u00EDch h\u1EE3p s\u1EB5n d\u1EEF li\u1EC7u, b\u1EA1n c\u00F3 th\u1EC3 d\u00F9ng \u003Cstrong\u003EuSync \u0111\u1EC3 \u0111\u1ED3ng b\u1ED9 d\u1EEF li\u1EC7u\u003C/strong\u003E sau khi c\u00E0i Umbraco CMS.\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-usync-import.png\u0022 alt=\u0022uSync import\u0022 /\u003E\u003C/p\u003E\u003Cp\u003ETrong nh\u00F3m \u0022Everything\u0022, ch\u1ECDn \u0022Import\u0022 v\u00E0 \u0111\u1EE3i k\u1EBFt qu\u1EA3, sau \u0111\u00F3 refresh trang, quay l\u1EA1i tab \u0022Content\u0022 \u0111\u1EC3 ki\u1EC3m tra.\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://raw.githubusercontent.com/T4VN/uTPro/refs/heads/gh-pages/docs/screenshots/setup-usync-result.png\u0022 alt=\u0022K\u1EBFt qu\u1EA3 uSync\u0022 /\u003E\u003C/p\u003E"
"markup": "\u003Ch2\u003EC\u00E0i \u0111\u1EB7t Domain\u003C/h2\u003E\u003Cp\u003ENgo\u00E0i c\u00E1c c\u1EA5u h\u00ECnh d\u00E0nh cho Umbraco, ch\u00FAng t\u00F4i cung c\u1EA5p th\u00EAm c\u1EA5u h\u00ECnh cho backoffice v\u00E0 t\u00F9y ch\u1EC9nh ng\u00F4n ng\u1EEF.\u003C/p\u003E\u003Cp\u003EN\u1EBFu b\u1EA1n mu\u1ED1n s\u1EED d\u1EE5ng multi site ho\u1EB7c c\u1EA5u h\u00ECnh backoffice ri\u00EAng, h\u00E3y c\u1EADp nh\u1EADt \u003Cstrong\u003Ehosts file\u003C/strong\u003E theo h\u1EC7 \u0111i\u1EC1u h\u00E0nh:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003EWindows: C:\\Windows\\System32\\Drivers\\etc\\hosts\u003C/li\u003E\u003Cli\u003EMacOS v\u00E0 Linux: /etc/hosts\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-appsettings-config.png\u0022 alt=\u0022C\u1EA5u h\u00ECnh appsettings\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-hosts-file.png\u0022 alt=\u0022C\u1EA5u h\u00ECnh hosts file\u0022 /\u003E\u003C/p\u003E\u003Ch2\u003EC\u00E0i \u0111\u1EB7t Project\u003C/h2\u003E\u003Cp\u003EC\u00E0i \u0111\u1EB7t uTPro r\u1EA5t \u0111\u01A1n gi\u1EA3n. Sau khi t\u1EA3i m\u00E3 ngu\u1ED3n, m\u1EDF file solution trong Visual Studio 2022 (ho\u1EB7c m\u1EDBi h\u01A1n).\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-visual-studio-solution.png\u0022 alt=\u0022Visual Studio solution\u0022 /\u003E\u003C/p\u003E\u003Cp\u003ESau \u0111\u00F3 \u0111\u00E1p \u1EE9ng y\u00EAu c\u1EA7u t\u1ED1i thi\u1EC3u c\u1EE7a Umbraco CMS:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EDatabase\u003C/strong\u003E: uTPro m\u1EB7c \u0111\u1ECBnh d\u00F9ng PostgreSQL, h\u1ED7 tr\u1EE3 th\u00EAm SQL Server v\u00E0 SQLite. Thay \u0111\u1ED5i ConnectionString trong appsettings.json v\u1EDBi key \u003Cstrong\u003EumbracoDbDSN\u003C/strong\u003E.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003ETarget framework\u003C/strong\u003E: .NET 10 (Umbraco 17 ch\u1EA1y tr\u00EAn .NET 10)\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-database-config.png\u0022 alt=\u0022C\u1EA5u h\u00ECnh database\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-connection-string.png\u0022 alt=\u0022Connection string\u0022 /\u003E\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-target-framework.png\u0022 alt=\u0022Target framework\u0022 /\u003E\u003C/p\u003E\u003Ch2\u003EC\u00E0i \u0111\u1EB7t D\u1EEF li\u1EC7u\u003C/h2\u003E\u003Cp\u003ED\u1EF1 \u00E1n \u0111\u00E3 \u0111\u01B0\u1EE3c t\u00EDch h\u1EE3p s\u1EB5n d\u1EEF li\u1EC7u, b\u1EA1n c\u00F3 th\u1EC3 d\u00F9ng \u003Cstrong\u003EuSync \u0111\u1EC3 \u0111\u1ED3ng b\u1ED9 d\u1EEF li\u1EC7u\u003C/strong\u003E sau khi c\u00E0i Umbraco CMS.\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-usync-import.png\u0022 alt=\u0022uSync import\u0022 /\u003E\u003C/p\u003E\u003Cp\u003ETrong nh\u00F3m \u0022Everything\u0022, ch\u1ECDn \u0022Import\u0022 v\u00E0 \u0111\u1EE3i k\u1EBFt qu\u1EA3, sau \u0111\u00F3 refresh trang, quay l\u1EA1i tab \u0022Content\u0022 \u0111\u1EC3 ki\u1EC3m tra.\u003C/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https://docs.utpro.dev/docs/screenshots/setup-usync-result.png\u0022 alt=\u0022K\u1EBFt qu\u1EA3 uSync\u0022 /\u003E\u003C/p\u003E"
}
}
]
Expand Down
Loading
Loading