{"id":21328417,"url":"https://github.com/wiredviews/xperience-page-builder-utilities","last_synced_at":"2025-07-12T07:32:00.697Z","repository":{"id":39993215,"uuid":"320396305","full_name":"wiredviews/xperience-page-builder-utilities","owner":"wiredviews","description":"This package provides ASP.NET Core Tag Helpers and abstractions for the Page Builder in Kentico Xperience applications.","archived":false,"fork":false,"pushed_at":"2022-05-21T14:33:31.000Z","size":79,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-09T13:20:35.061Z","etag":null,"topics":["aspnetcore","dotnet","kentico-xperience","taghelper"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wiredviews.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-10T21:39:04.000Z","updated_at":"2024-03-29T20:12:03.000Z","dependencies_parsed_at":"2022-09-05T05:00:43.539Z","dependency_job_id":null,"html_url":"https://github.com/wiredviews/xperience-page-builder-utilities","commit_stats":null,"previous_names":["wiredviews/xperience-page-builder-mode-tag-helper"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiredviews%2Fxperience-page-builder-utilities","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiredviews%2Fxperience-page-builder-utilities/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiredviews%2Fxperience-page-builder-utilities/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiredviews%2Fxperience-page-builder-utilities/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wiredviews","download_url":"https://codeload.github.com/wiredviews/xperience-page-builder-utilities/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225805909,"owners_count":17527004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aspnetcore","dotnet","kentico-xperience","taghelper"],"created_at":"2024-11-21T21:28:52.349Z","updated_at":"2024-11-21T21:28:53.162Z","avatar_url":"https://github.com/wiredviews.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Xperience Page Builder Utilities\n\n## Packages\n\n- [![NuGet Package](https://img.shields.io/nuget/v/XperienceCommunity.PageBuilderUtilities.svg)](https://www.nuget.org/packages/XperienceCommunity.PageBuilderUtilities)\n\n- [![NuGet Package](https://img.shields.io/nuget/v/XperienceCommunity.PageBuilderTagHelpers.svg)](https://www.nuget.org/packages/XperienceCommunity.PageBuilderTagHelpers)\n\n## Dependencies\n\nThese libraries are compatible with ASP.NET Core 3.1 -\u003e ASP.NET Core 6 and are designed to be used with the Xperience 13.0 Content Delivery (MVC) application [running on ASP.NET Core](https://docs.xperience.io/x/BQ2RBg).\n\n## Page Builder Utilities\n\nThis library provides an abstraction over the Kentico Xperience Page Builder [rendering mode](https://docs.xperience.io/x/QA2RBg#Creatingpageswitheditableareas-Checkingforrenderingcontext) so that developers can conditionally execute code based on the mode of a given HTTP request to their ASP.NET Core application.\n\n### How to Use?\n\n1. First, install the NuGet package in your ASP.NET Core project:\n\n   ```bash\n   dotnet add package XperienceCommunity.PageBuilderUtilities\n   ```\n\n1. Add the required types to the DI container in your project's `Startup.cs` file\n\n   ```csharp\n   public void ConfigureServices(IServiceCollection services)\n   {\n       services.AddPageBuilderContext();\n   }\n   ```\n\n1. You can now use the `IPageBuilderContext` interface (available in the `XperienceCommunity.PageBuilderUtilities` namespace) as a constructor dependency anywhere in your application to more easily determine the state of the current request:\n\n   ```csharp\n   public class ProductsController\n   {\n       private readonly IPageBuilderContext context;\n\n       public ProductsController(IPageBuilderContext context) =\u003e\n           this.context = context;\n\n       public ActionResult Index()\n       {\n           if (context.IsEditMode)\n           {\n               // ...\n           }\n\n           if (context.IsLivePreviewMode)\n           {\n               // ...\n           }\n\n           if (context.IsLiveMode)\n           {\n               // ...\n           }\n\n           if (context.IsPreviewMode)\n           {\n               // ...\n           }\n       }\n   }\n   ```\n\n1. By not using `IHttpContextAccessor` and all the Kentico Xperience extension methods, your code is both easier to unit test and read.\n\n1. You can inject this type into your Razor views, but the better option is to use ... 👇\n\n## Page Builder Tag Helpers\n\nThis library provides an [ASP.NET Core Tag Helper](https://docs.microsoft.com/en-US/aspnet/core/mvc/views/tag-helpers/intro?view=aspnetcore-3.1) for [Kentico Xperience 13.0](https://docs.xperience.io/x/bYHaBg)\nto help toggle HTML in Razor views based on the Page Builder 'mode' of the request to the ASP.NET Core application.\n\n### How to Use?\n\n1. First, install the NuGet package in your ASP.NET Core project\n\n   ```bash\n   dotnet add package XperienceCommunity.PageBuilderTagHelpers\n   ```\n\n1. Add the required types to the DI container in your `Startup.cs` file\n\n   ```csharp\n   public void ConfigureServices(IServiceCollection services)\n   {\n       services.AddPageBuilderContext();\n   }\n   ```\n\n   - _Note_: This extension method comes from the `XperienceCommunity.PageBuilderUtilities` package, above, which is a dependency of `XperienceCommunity.PageBuilderTagHelpers`\n\n1. Include the [tag helper assembly name](https://docs.microsoft.com/en-US/aspnet/core/mvc/views/tag-helpers/intro?view=aspnetcore-5.0#addtaghelper-makes-tag-helpers-available) in the `~/Views/_ViewImports.cshtml`\n\n   ```html\n   @addTagHelper *, XperienceCommunity.PageBuilderTagHelpers\n   ```\n\n1. Use the tag helper in your Razor views\n\n   ```html\n   \u003cpage-builder-mode exclude=\"Live\"\u003e\n     \u003c!-- will be displayed in Edit and LivePreview modes --\u003e\n     \u003ch1\u003eHello!\u003c/h1\u003e\n   \u003c/page-builder-mode\u003e\n\n   \u003cpage-builder-mode include=\"LivePreview, Edit\"\u003e\n     \u003c!-- will be displayed in Edit and LivePreview modes --\u003e\n     \u003ch1\u003eHello!\u003c/h1\u003e\n   \u003c/page-builder-mode\u003e\n\n   \u003cpage-data-context\u003e\n     \u003c!-- or \u003cpage-data-context initialized=\"true\"\u003e --\u003e\n     \u003c!-- will be displayed only if the IPageDataContext is popualted --\u003e\n     \u003cwidget-zone /\u003e\n   \u003c/page-data-context\u003e\n\n   \u003cpage-data-context initialized=\"false\"\u003e\n     \u003c!-- will be displayed only if the IPageDataContext is not populated --\u003e\n     \u003cdiv\u003ewidget placeholder!\u003c/div\u003e\n   \u003c/page-data-context\u003e\n   ```\n\n## Contributing\n\nTo build this project, you must have v6.0.300 or higher\nof the [.NET SDK](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) installed.\n\nIf you've found a bug or have a feature request, please [open an issue](https://github.com/wiredviews/xperience-page-builder-utilities/issues/new) on GitHub.\n\nIf you'd like to make a contribution, you can create a [PR on GitHub](https://github.com/wiredviews/xperience-page-builder-utilities/compare).\n\n## References\n\n### Real World Examples\n\n- [Kentico Xperience: MVC Widget Experiments Part 2 - Page Specific Marketing Tags with Widgets](https://dev.to/seangwright/kentico-xperience-mvc-widget-experiments-part-2-page-specific-marketing-tags-with-widgets-1j69)\n- [Kentico Xperience: MVC Widget Experiments Part 3 - Unused Widgets Section](https://dev.to/seangwright/kentico-xperience-mvc-widget-experiments-part-3-unused-widgets-section-323j)\n\n### ASP.NET Core\n\n- [Using Tag Helpers](https://docs.microsoft.com/en-US/aspnet/core/mvc/views/tag-helpers/intro?view=aspnetcore-6.0)\n- [Authoring Tag Helpers](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/authoring?view=aspnetcore-6.0)\n- [ASP.NET Core - Environment Tag Helper (source)](https://github.com/dotnet/aspnetcore/blob/v5.0.1/src/Mvc/Mvc.TagHelpers/src/EnvironmentTagHelper.cs)\n\n### Kentico Xperience\n\n- [Using Xperience 13.0 Built-in Tag Helpers](https://docs.xperience.io/x/bYHaBg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwiredviews%2Fxperience-page-builder-utilities","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwiredviews%2Fxperience-page-builder-utilities","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwiredviews%2Fxperience-page-builder-utilities/lists"}