-
-
Notifications
You must be signed in to change notification settings - Fork 108
WIP: Supporting Umbraco v15 #455
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
…s for Umbraco 15 compatibility - Remove commented out Url.GetUmbracoApiService calls in ArticulateBlogImportController - Replace with direct URL paths using the controller's VersionedApiBackOfficeRoute - Fixes GetBlogMlExport and GetDisqusExport URL generation - Ensures compatibility with Umbraco 15 API changes
- Uncommented and updated ArticulateMarkdownPropertyEditor.cs for Umbraco 15 - Updated DataEditor attribute to use single parameter constructor - Changed inheritance from MarkdownPropertyEditor to DataEditor - Updated constructor to use IDataValueEditorFactory only - Kept ArticulateMarkdownEditorValueConverter unchanged as it was compatible - Build now succeeds without errors
- Uncommented and updated ThemePickerPropertyEditor.cs for Umbraco 15 - Updated DataEditor attribute to use single parameter constructor - Simplified constructor to use only IDataValueEditorFactory parameter - Removed obsolete EditorType parameter from constructor and attribute - Build continues to succeed without errors
- Removed ArticulateMarkdownPropertyEditor class as it's not needed - Kept ArticulateMarkdownEditorValueConverter for custom markdown processing - Reduced unnecessary dependencies and simplified the codebase - Build continues to succeed without errors
- Created new Lit-based web component for theme picker - Added modern property editor structure with manifests - Updated C# property editor with proper configuration - Added umbraco-package.json for Umbraco 15 extension system - Replaced old AngularJS implementation with modern web components - Maintained backward compatibility with existing API endpoints The theme picker now uses: - Lit web components for frontend UI - Modern extension manifest system - Umbraco 15 property editor architecture - Fetch API instead of AngularJS HTTP
- Created new Lit-based dashboard component replacing AngularJS dashboard - Added articulate-dashboard.element.js with modern reactive properties - Implemented blog importer as example sub-component with full functionality - Added dashboard manifest for Umbraco 15 extension system - Maintained all original functionality: welcome screen, management cards, detail views - Uses modern web components, CSS Grid, and Fetch API - Dynamic component loading for sub-modules - Responsive design with hover effects and transitions Dashboard features: - Welcome screen for new installations - Management grid with blog importer, exporter, and themes - Detailed views for each management tool - Modern UI with proper styling and interactions - Backward compatible with existing API endpoints
- Added complete blog exporter component with all original features - Added complete themes manager component with theme selection grid - Updated main dashboard to properly load all sub-components - Removed placeholder 'not implemented' messages - All components now fully functional with modern Lit architecture Blog Exporter features: - Content picker for Articulate node selection - Toggle for embedding images as base64 - Fetch API integration with proper error handling - File download handling (both direct and link-based) - Status messages and progress indication Themes Manager features: - Visual theme selection grid with hover effects - Theme name validation and error handling - Dynamic theme loading from API - Success/error status messaging - Modern card-based UI with gradients Technical improvements: - Dynamic component loading with proper imports - Consistent styling across all components - Error handling and validation - Responsive design patterns - Modern CSS with transitions and effects
- Incorporated the original themes.css styling and theme preview images - Added support for Material, Mini, Phantom, and VAPOR theme images - Maintained original .articulate-theme styling pattern for consistency - Added fallback gradient icons for themes without preview images - Preserved the original package selection styling with border highlights - Updated component to use proper 100x100px theme previews - Maintained backward compatibility with existing theme structure Features: - Uses actual theme preview images (theme-material.png, theme-mini.png, etc.) - Fallback to gradient icons with theme initial for custom themes - Original selection styling with blue border highlights - Responsive layout maintaining original visual design - Proper path resolution for theme assets
|
I have fork/branch in progress, will sync and base my PR's off this. Pretty much same state, much of back office UI+API progressed , also builds but work to do, e.g. some Doc Type changes needed for latest media types/pickers. Should I drop Umbraco 14 (.net 8.0) support? I have been focusing on v15 but did have multi-targeting for 14 + test site (and 16). Guess we can always come back to 14 if demand? |
remove .net 8 support amend api's for Guid instead of integer last commit before PR's against official branch feature/umb15 Shazwazza#455
- Register Smidge - Replace DefaultUrlProvider with NewDefaultUrlProvider - Replace ContentFinderByUrl with ContentFinderByUrlNew
Installer fixes - allow installer to run
|
Status update:
|
Add attributes file
**IMPORTANT** Using `"rollForward": "latestFeature" will prevent the build completing with an exception in the `Microsoft.NET.Sdk.StaticWebAssets` task. Reference: [Intermittent Error on Build](dotnet/aspnetcore#57147)
- Angular based BackOffice extensions are replaced by the new Lit and TypeScript based BackOffice extensions in the `Articulate.Api.Management` Client project. - Themes have moved to the `wwwroot\Views\Articulate\_System\` folder pending migration from ASP.NET Web Forms (Master Pages) to Layouts in ASP.NET Core and the ``Articulate.Web` project - The mobile optimised Markdown Editor has moved to the `Articulate.Web` project - this is disabled on the frontend for now pending OpenIddict based authentication with the BackOffice Management API.
- global using's replaced by `_ViewImports.cshtml` per theme - Latest supported 3rd party CSS and JavaScript assets, removed jQuery, latest Font Awesome free for branding (e.g. X) - Accessibility and web vitals improvements - Latest Google Tags/Analytics support - Minor feature and bug fixes e.g. Author RSS links corrected, https links, random tag order
- Replaced by `Articulate.Api.Management` project
- `ArticulateViewLocationExpander` resolves location of Articulate Views and Partials (not assets) for User themes, System themes and other Views (e.g. Markdown Editor); current active theme resolved by `ArticulateThemeResolver` service. - `PathHelper` removed and replaced by View expander, amends to `DefaultThemes` to support asset resolution , extending `ArticulateConstants` with Path locations and assist with (my) typo's - Theme Repository service to support BackOffice copy theme feature and listing available themes. - Views/Partial are now compiled at build time into assembly - Themes are also now embedded as resources in assembly to support BackOffice copy theme feature - NOTE: Developer edit and browser refresh (hot reload) currently not implemented, Razor runtime compilation for improved DX pending/future PR: [Enable runtime compilation for a Razor class library] (https://learn.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-9.0&tabs=visual-studio#enable-runtime-compilation-for-a-razor-class-library)
- `ContentUrls` not used - `UrlHelperExtensions` no longer used, ThemedAsset superseded and other methods moved to PublishedContentExtensions as IMasterModel extensions, IUrlHelper not used (UmbracoHelperExtensions simiraly - Moved to Extensions namespace (better implicit using's support) - Legacy Google Analytics UA extension method updated to uses Google Tags - Migrate obsolete methods, e.g. ILocalizationService -> ILanguageService , Parent/Children -> Parent()/Children() - Image Crop enhancement to check for (legacy) properties with just a string path
Umbraco API fetch clients
- Resolve issue with Articulate.MarkdownEditor and Umbraco.Markdown on same content/composition - Resolve Property Editor aliases to match v5 - Articulate.MarkdownEditor: full(er) clone of Umbraco Web UI Client version; resolve clashes with default - use Umbraco.Markdown schema for forward compatibility when migrating Articulate.MarkdownEditor - use default Umbraco.Markdown prev values for Articulate.MarkdownEditor - regenerate client api
- Amends for removal of Articulate.Extension namespace - Add Model to implicit usings
- Avoid breaking v5 Public Api's - Mark Obsolete methods and implement - Review internals - Review Async - Update package with latest Data Types - Map Articulate Richtext Editor to TipTap in v6.0 (so CMS v15.4.4 onwards) to ensure migration > 16.1.1
bugfix: Move warning to else block
move to Articulate.Api.Management.Swagger folder/namespace
Amend default editor heading to H2 as H1 is post title
- Use Umbraco.Extensions.FriendlyImageCropperTemplateExtensions for crops - Remove unused custom crop extensions - Mark GetArticulateCropUrl as obsolete
InRandomOrder can be public
ignore user custom theme folder in test site
remove sqlite umbracoDbDSN connection string, user should specify connection string on install of test site
Bug fix: Correct path to embedded theme source files
just formatting
- Ensure Articulate data types match previous alias values and use V15+ compatible property editor schemas - Migrate Articulate Richtext data type to TipTap (runs after Core RTE migrations)
- Remove TagActionsBy call in SwaggerOptions, Umbraco already handles, this was causing Swagger API endpoint to merge all schemas when Delivery API enabled
- add ManagementApiRoute to customise API route from `/umbraco/management/{version}/articulate/{template}` to `/umbraco/articulate/{version}/{template}`
- Review ArticulateOperationIdHandler to customise how client API is generated (formatting, clean and dx friendly)
- Downgrade `@hey-api/openapi-ts` to version currently supported by `umbraco-extension' projects - Add last supported legacy `@hey-api/client-fetch` package, unbundled. Latest ` @hey-api/openapi-ts` can be updated in v16.3+ see umbraco/Umbraco-CMS#19893 - Regenerate Client to reflect API/Swagger/generated code changes
- Testing impact on Umbraco Delivery and Management API Swagger generation
Remove unused IRuntimeState parameter
Restore RssFeedGenerator from internal sealed to public class and updated method visibilities from private to protected virtual to allow for override/custom RssFeedGenerator. Also updated IRssFeedGenerator interface to use public method signature for GetFeed.
Fixes issue with having to to save Articulate Image Picker data type
This issue only applies to v13 now, fixed going forward
Umbraco 15/16 compatability
This PR is a work in progress so that folks can see the diffs between the develop branch and getting v15 supported.
Anyone that wants to contribute to this should create a PR to target the feature/umb15 branch.
I've asked AI to do a ton of the conversions 🙈🙉🙊🐵 (RooCode + Claude Sonnet 4) - I have no idea if any of it is correct or works yet.
What I did to get to this state:
Getting it to compile
feature/umb13branch updated to support only Umbraco 13 and it builds and works.feature/umb15, Updated to Umbraco 15 dependencies, fixed all compilation issues - but meant just commenting out entire files in some cases, see 8efd089.AI attempts
I normally use RooCode and Claude Sonnet 4 (prev 3.7 was good too). But in the first attempt, I decided to again try Copilot in Agent mode, which I've never had a good experience with ... and it shows:
I also enabled the Fetch MCP tool.
Copilot /w Claude Sonnet 4
Prompt:
It tried to help but I had to keep telling it that it made mistakes and then had to manually fix up formatting, this is all it was able to do:
RooCode /w Claude Sonnet 4
Now that I reminded myself how bad Copilot is, I switched back to RooCode (highly recommend, make sure you read the docs). I normally enable auto-approve in RooCode for everything and just use 'Code' mode since I'll be editing code and just make sure it creates git commits along the way.
Prompt:
Result: c511bfc
Prompt:
Result: c4ae033
Prompt:
Result: 89f9951
Prompt:
Result: 9333dab
I won't post all the chatter that it responds with, but as an example of the summary that it output for the above work so far at this below. Note, that after each phase of it completing its steps that its come up with based on the prompt, it will produce a full report like below: 🙌
Prompt:
Result: 23ef6c9
You'll see that its also created 2 different files complete with details about how it migrated the property editors and dashboards 🎉
Prompt:
Result: 990aec2
Prompt:
Result: 0bc2e36
Prompt:
Result: 0bc2e36