Relocated ITocGeneratorService and TocHeading to the Application.Contracts project, and TocGeneratorService to the Application project. This improves project structure by separating contracts and implementations from the web layer.
Replaces the use of a fixed max TOC level with a level count parameter in TOC generation methods and logic. This change improves flexibility by allowing the number of heading levels included in the TOC to be specified, rather than a maximum heading level value.
Enhanced TocGeneratorService by refactoring heading parsing, optimizing inline text extraction, and improving handling of empty or invalid markdown. Added helper methods for pipeline creation, heading construction, and inline processing for better readability and maintainability.
Replaces flat TocHeading list with hierarchical TocItem structure for document table of contents. Updates rendering logic, service interface, and implementation to support nested headings and configurable levels.
Added checks for the presence of the 'Closer' string before substring operations in ScribanDocumentSectionRenderer. This prevents exceptions when the closer is not found in the document content.
Updated the TableOfContents partial to accept a List<TocHeading> instead of the full IndexModel, simplifying its interface. Adjusted the Index.cshtml to pass Model.TocHeadings directly. Removed the unused TableOfContents.cshtml.cs code-behind file.
Replaces the internal Heading record in TocGeneratorService with a new public TocHeading record class. Updates all references and method signatures to use TocHeading, improving code clarity and reusability.
Replaces HTML-based TOC generation with a model-based approach by extracting heading data from markdown and rendering the table of contents via a new partial view. Removes the custom Markdig extension and related classes, updates the service interface, and adapts the page model and views to use the new heading list.
Replaces the previous HTML-based table of contents (TOC) extraction using HtmlAgilityPack with a Markdig-based approach. Introduces custom Markdig extensions and renderers to extract headings directly from markdown, updates the TOC service and interface, and removes the HtmlAgilityPack dependency from the project.
Updated project references and module dependencies to use Volo.Abp.Mapperly instead of Volo.Abp.AutoMapper. This change migrates mapping functionality to Mapperly for improved performance and maintainability.
Introduces a Heading record to replace tuple usage for TOC headings, improving code readability and maintainability. Updates related logic in TocGeneratorService to use the new Heading type and adds constants for heading levels.
Replaces client-side TOC generation with a new ITocGeneratorService and TocGeneratorService using HtmlAgilityPack. Updates the project page to render the TOC from the server, removes bootstrap-toc dependencies, and adjusts related JS and CSS for the new TOC structure. Adds HtmlAgilityPack as a dependency.
Refactored tag and favorite user filtering logic in both EfCore and MongoDB blog post repositories to handle empty filter results and cancellation tokens more robustly. Updated BlogPostPublicAppService to pass favoriteUserId to GetCountAsync for accurate paging. Adjusted blog index view to improve favorite filter button visibility and logic.
Renamed TenantInfoModelToTenantCreateDtoMapper to CreateTenantInfoModelToTenantCreateDtoMapper and updated all method signatures to use CreateModalModel.TenantInfoModel instead of EditModalModel.TenantInfoModel. This clarifies the mapper's purpose and aligns it with the correct model context.