Skip to content

Releases: OnTopicCMS/OnTopic-Editor-AspNetCore

v5.2.0

26 Jun 20:16
Compare
Choose a tag to compare

OnTopic Editor 5.2.0 is a very minor update, which doesn't introduce any new public-facing features, but does make a number of performance improvements, such as reducing the amount of mapping that needs to be performed for each topic by relying on the new lightweight PermittedContentType view model (#50) and supporting the new AttributeDictionary constructor for view models (#49). In addition, it also includes a number of internal code improvements, such as adoption of new C# 10 capabilities (#52), including global using directives (#53).

For a full list of improvements and code changes, see Pull Request #57.

v5.1.0

12 Apr 19:59
Compare
Choose a tag to compare

OnTopic Editor 5.1.0 is a minor release which introduces the new MetadataList (#30) and Reflexive (#44) attributes, which primarily aid in the Ouroboros Configuration. Primarily, however, it is focused on bug fixes, and resolves a number of priority issues, such as the inability to rollback recent versions (#18).

Features

  • #30 MetadataListAttribute as a simplified TopicListAttribute for LookupLists in Metadata
  • #44 ReflexiveAttribute to allow embedding the current AttributeDescriptor within itself

Improvements

  • #41 Upgrade to Bootstrap 5.0.0
  • #34 Default export options to commonly used settings
  • #33 Sort DisplayGroups with "Content" first and "Settings" last
  • #32 TextAttribute: Limit MaxLength to 255 if IsIndexedAttribute
  • #35 Introduce a DisableDelete capability for the current topic
  • #45 Allow reordering (but not moving) of topics, even if IsProtected or DisableDelete
  • #26 Display DefaultValue, InheritedValue, and ImplicitValue for all attribute types

Bugs

  • #48 Versions getting saved even if no attributes have been modified
  • #11, #12 Validate Key when renamed, then redirect to new Key
  • #18 VersionHistory precision mixmatch
  • #38 FileList is never able to locate files
  • #16 TopicList only displays up to 100 items
  • #31 TokenizedTopicList inheriting topic references
  • #25 DefaultValue should be set on postback if value is null
  • #29 Topic associations (e.g., BaseTopic, RootTopic) cannot bind if a view model for the ContentType isn't present
  • #15 Not all topics displayed in TokenizedTopicList lookup

For a comprehensive list of bug fixes and improvements, see Pull Request #46.

v5.0.0

03 Mar 01:00
Compare
Choose a tag to compare

OnTopic Editor 5.0.0 is a major release focused primarily on introducing full support for attribute type plugins, as well as new features exposed from OnTopic 5.0.0 such as topic references.

Features

General

  • Attribute Type Plugins: Updated attribute types to be truly dynamically imported at runtime; this allows new attribute types to be defined on a per-implementation basis (04a7470).
  • Date/Time Attribute Type: The DateTimeViewComponent now uses the HTML5 date, time, or datetime-local types, instead of a custom jQuery UI plugin (c73a76c).
  • Version Time Zone: The version history dropdown list now displays version times using the local time zone, instead of UTC (2f0a1c2).

Warnings

Exposed warnings at the top of the editor for the following scenarios:

  • Unresolved Associations: Exposed warning in the unlikely scenario that not all relationships or topic references could be fully loaded, in which case there are limitations to what modifications can be made (6e22974).
  • Disabled Topics: Exposed warning if the topic has been disabled, to help provide visibility to this high-impact scenario (02d892c).
  • Hidden Topics: Exposed warning if the topic is hidden from the navigation (bdfcb7e, b581915).
  • Non-Indexed Topics: Exposed warning if the topic is hidden from search engines (4e17a5e, b581915).
  • Danger: Elevated severity of warnings for critical issues to a red "danger" alert (a1f0fca).

NuGet Packages

  • Metapackage: Established OnTopic.Editor.All metapackage which includes a reference to all of the core packages and implementations (44e7f9e).
  • SourceLink: Configured SourceLink with references to GitHub commits so that packages can be properly debugged by implementers (6e41c37).
  • IntelliSense: The NuGet packages now include the XML documentation, thus allowing implementers to benefit from IntelliSense annotations in Visual Studio (38ff680).
  • Icon: Added icon to NuGet packages to make them easier to recognize, and consistently branded (2503bcc).
  • Size: Removed unnecessary resources such as duplicate JavaScript files (a562cd9) and npm configuration (ba09497) from the NuGet package, dramatically reducing its size.

Bug Fixes

  • Modal Window Links: Links within the modal windows now relay the IsModal query string parameter to ensure that they link to pages that know they are within a modal window. Notably, this applies to links to base topics (47921ae).
  • Content Layout Shift: Fixed an irritating jog in the page-level navigation—i.e., the tabs at the top of each form—which occurred each time the page loaded (66ec7e1).

Breaking Changes

  • DefaultConfiguration: Removed support for the legacy ASP.NET Web Forms style of configuring OnTopic Editor attributes via the DefaultConfiguration property, including removal of the (deprecated) helper functions on AttributeDescriptorTopicViewModel, such as GetConfigurationValue() (ff8f0de).
  • Web Forms Compatibility: Removed deprecated features, mostly related to backward compatibility of the legacy ASP.NET Web Forms implementation (606b9c0).
  • Attributes Package: Reorganized all .NET related attribute type files into a new OnTopic.Editor.AspNetCore.Attributes project/package (04a7470); at minimum, this requires replacing the OnTopic.Editor.Models package with the OnTopic.Editor.AspNetCore.Attributes package.
  • BaseTopic: Updated references to account for the rename from Topic.DerivedTopic to Topic.BaseTopic, including updating references to the legacy TopicId attribute key (360de6c, 776d543).
  • Removed Deprecated Configuration Attributes: Removed deprecated configuration attributes on the AttributeDescriptorViewModels as well as from their associated ViewComponents (606b9c0, 5c4fb28, 63b4ef1).
  • Editor Topic View Model Lookup Service: The EditorViewModelLookupService no longer derives from the TopicViewModelLookupService and, thus, cannot be used to also lookup OnTopic.ViewModels, if they're being utilized (9945a94). This can be resolved by using the CompositeTypeLookupService to combine these into a single service.

Code Improvements

  • OnTopic Library: Updated to OnTopic 5.0.0, which includes a number of breaking changes that needed to be accounted for, such as changes in namespaces (926da84, 5010de1).
  • OnTopic Data Transfer Library: Updated to OnTopic Data Transfer 2.0.0, which includes support for resolving associations orphaned due to the import order (bdf6a6a), as well as support for the new topic references feature (c74e528, f79e168).
  • Naming Convention: Renamed the attribute descriptors from having an Attribute suffix to having an AttributeDescriptor suffix (04a7470) and the view models from having an TopicViewModel suffix to just the ViewModel suffix. E.g., TopicListAttributeTopicViewModel is now TopicListAttributeDescriptorViewModel. This requires updating the name of the corresponding content types in the OnTopic database. The OnTopic migration scripts includes this update.
  • Immutable View Models: Migrated all view models (including the EditorViewModel, AttributeViewModel, AttributeBindingModel, and derivatives) from classes to read-only, immutable C# 9.0 record types (77f304f).
  • ClientResources: Added a new StyleSheets and Scripts collection of ClientResource<T> objects to the AttributeDescriptorViewModel as a way of registering client-side stylesheets and JavaScript files from plugins, while having them de-duplicated and injected in the appropriate location in the header or footer (71c2ab9, ce3477a).
  • Client Namespace: Added a new GetNamespacedUri() method for prefixing the client resource paths with the plugin assembly's namespace, as required for Razor Class Libraries (4c7bf0f).
  • Code Analysis: Implemented the latest version of Microsoft's code analysis library (NetAnalyzers), and implemented the feedback it exposed (71b7783), including nullable reference annotations (185d4bf).
  • Razor Runtime Compilation: Resolved issues preventing Razor Runtime Compilation from working correctly (51925b1). This affects development of the Editor itself.

v4.6.0

01 Dec 00:18
Compare
Choose a tag to compare

This is primarily a maintenance update focused on a number of under-the-hood improvements, such as adoption of C# 9.0, as well as some minor bug fixes related to the user interface, such as ensuring nested topics can be rolled back. Normally, this would be considered a patch (i.e., 4.5.1) since it contains no new features. We're sticking with 4.6.0, however, to align it with the corresponding release of OnTopic 4.6.0.

Bug Fixes

  • Reset content type in ContentTypeListViewComponent when modal window is triggered (b6868cf)
  • Display PermittedContentTypes from parent topic on left rail when creating a new topic (9beeb8a)
  • Hide DisableDelete warning when creating new topics of protected content types (5ddbd26)
  • Allow rollback to previous versions of nested topics within large-window modals (780e7ed)
  • Ensure versions in version history don't wrap even when using long date/times (0072c55)

Improvements

  • Updated code to use C# 9.0 pattern matching and implicitly typed initializers (4962a85)
  • Updated to latest versions of internal packages, including OnTopic 4.6.0 (dee88f0)
  • Updated to latest version of Code Analysis and fixed most issues introduced with C# 9.0 (11331ea)

v4.5.0

01 Oct 00:02
Compare
Choose a tag to compare

The primary focus of this update is to introduce two new attribute types—InstructionAttribute and IncomingRelationshipAttribute. Neither of these persist actual attribute values to the edited topic; instead, they help fill out the instructions and the object graph for the editor by exposing information that might not otherwise be obvious by only looking at the current topic's attributes. This update also includes various user interface improvements, including stick navigation and some basic responsiveness. Finally, this includes a couple of bug fixes—most notably, a bug inherited from the underlying OnTopic Library which prevents attribute values from being deleted via the editor.

New Features

  • Updated the View Page link to open the page in a new tab (853bdd7)
  • Updated the TextAreaViewComponent to support MinimumLength (57edf1e)
  • Updated the TextViewComponent (06b57c9) to support MinimumLength (d2699bc), a regular expression Pattern validation (a7fa26c), and an optional ValidationMessage (92c147e)
  • Introduced the new InstructionViewComponent, which allows instructional text to be embedded in the editor at any point among the attributes (e8e6261)
  • Introduced the new IncomingRelationshipViewComponent (32edc40), which exposes a list of incoming relationships, optionally filted by AttributeKey and AttributeValue (407c040)

Improvements

  • Updated style of HtmlViewComponent to help avoid a flash of unstyled content (FOUC) as WYSIWYG editor script is applied (bb727cd)
  • Updated style of TokenizedTopicListViewComponent so that it looks similar to the TextViewComponent (fa277f7)
  • Updated style and interaction patterns of the RelationshipViewComponent, make it easier to navigate the tree and select nodes (2e0ddb4)
  • Updated navigation and topic information callout to be sticky, while introducing basic responsive features for callouts, buttons, navigation, and title (643d856)

Bug Fixes

  • Ensured that errors in dropdown menus (e5e2f7c) and text areas (0221298) are correctly reported in their corresponding tabs so editors can see where an error has occurred (0c4bb2d)
  • Fixed a bug where a deleted attribute might not get saved since deleted attributes didn't result in the AttributeValueCollection being marked as IsDirty() (7777eec)

Cleanup

  • Deferred JavaScript resources to improve page load time (e0664a8)
  • Import of Twitter Bootstrap directly via SCSS, instead of via compiled CSS; this allows us to only import styles associated with components we're actually using (92822dc)
  • Minor improvements to code (96e9dfa), such as streamlining deleted attribute logic (7777eec), reducing some flashes of unstyled content (FOUC) (bb727cd), and removing legacy code (1052cf8, 587dc0d)
  • Explicitly set the isRecursive parameter of ITopicRepository.Delete() to ensure forward compatibility, as the parameter default will change in the next version of the OnTopic library (ba2acb4)
  • Marked the DisplayOptionsViewComponent (f910e53) and the DefaultAttributeTypeViewComponent (4f53e36) as deprecated in anticipation of OnTopic Editor 5.0.0 (def412e)
  • Marked a number of members on AttributeDescriptorTopicViewModel as deprecated, including the ill-conceived CssClass attribute, in anticipation of OnTopic Editor 5.0.0 (57edf1e)

v4.4.0

21 Aug 21:44
Compare
Choose a tag to compare

While this update primarily focuses on some minor bug fixes in the Editor itself, it also includes a dependency on OnTopic 4.4.0, which introduces updates and bug fixes which are of specific relevance to the OnTopic Editor. Notably, it resolves a number of issues with Oroborus Configuration in which updates to ContentTypeDescriptor and AttributeDescriptor topics wouldn't take immediate effect in the Editor. This was caused by versioning conflicts between two competing caches: CachedTopicRepositor._cache and TopicRepositoryBase._contentTypeDescriptors. By introducing a number of updates to help ensure these are synchronized, these should now always be pointing to the same object references, thus avoiding version conflicts when updating them in the Editor.

Features

  • Allow SelectableTreeView, which is used by the RelationshipsViewComponent, to auto-expand to ensure existing selections are visible (4fee666)

Bug Fixes

  • The SelectableTreeView, which is used by the RelationshipsViewComponent, once again correctly supports multiple instances on a page (9b21224)
  • Fixed a bug in which the underlying ITopicRepository.Move() wasn't getting correct metadata due to the parent being prematurely reset in EditorController.Move() (eaf9b59)

Maintenance

  • Updated npm and NuGet dependencies, including resolution of several security vulnerabilities, and the introduction of OnTopic 4.4.0 (b1c7f3c)

v4.3.1

25 Jul 20:57
Compare
Choose a tag to compare

Minor maintenance release containing some bug fixes and minor feature improvements.

Summary

  • Significant cleanup of the CKEditor plugin used for the HtmlViewComponent (acecc86)
  • Fixes a major bug which prevented topics with an empty TopicListViewComponent from being saved (d12e3d4)
  • Addresses a confusing user interface decision where a removed attribute value would continue to be displayed as placeholder text (752f9da)

CKEditor

  • Removed extraneous toolbars (110a9ac, 619360e), and tidied up the formatting and layout of the default toolbar (6fdf1a3, 37d06d3, 168b6ce)
  • Removed features that shouldn't be used in most cases, such as underline (2e60363), custom fonts (6056f01), and duplicate buttons (33f88a0)
  • Removed all customer-oriented customizations and styles (74712c0); these can now be overwritten on a per client basis
  • Removed out-of-the-box Spell Check As You Type (SCAYT), in favor of browser default spell check (a4790fe, 3bb9de4)
  • Removed commented out items that weren't being actively used (f997f5e, 8ad4bb3)
  • Cleaned up formatting of files and introduced modern commenting and indentation standards (99c9eb9, 9ee289e, 452fd19)
  • Fixed some issues with the default stylesheet (3175936, 2c02393, b3966c5)

Bug Fixes

  • Fixed but where removing an empty TopicListViewComponent from the interface would break ASP.NET Core data binding (af5e765)
  • Updated InheritedAttributes to use values from the DerivedTopic so that when a value is deleted, it doesn't reappear as a placheolder (15ea21f)
  • Updated the ::placeholder pseudoclass so it's clearer what is an explicitly defined value and what is an inherited value (c56c188)

v4.3.0

01 Jun 17:58
Compare
Choose a tag to compare

This update builds off of OnTopic Library 4.3.0 and the OnTopic Data Transfer 1.2.0 library in order to provide support for connecting to and bootstrapping empty repositories.

Notably, this includes the ability to dynamically add or remove content type and attribute descriptors. Not only does this allow some configuration changes made via the OnTopic Editor to be immediately available to the interface, it also allows new or reference configurations to be imported using the OnTopic Data Transfer library integration. Finally, this update takes advantage of many performance and reliability improvements to the underlying libraries, particularly regarding recursive saves (as done during Import()).

Note: This update doesn't yet support dynamically updating attribute values of content type or attribute descriptors when using the CachedTopicRepository. This is because the base GetContentTypeDescriptors() cache references different topic objects than those in the CachedTopicRepository. This oversight will be reevaluated in a future release.

Features

  • The editor will now tolerate binding to topics with missing content type descriptors (06f065b, 34cdeec). This allows it to display a default Root topic even if the Container content type hasn't yet been created. Of course, no editor form will be present in these scenarios.
  • Allow creation of the root topic on Import() (c51a141). Previously, the editor assumed that the root topic already existed.

Bug Fixes

  • Ensured implicit topic references (i.e., attributes ending in 'Id' and pointing to a Topic.Id) can be resolved based on a single Import() by rearranging the Import() and Save() logic (a01e92e).
  • Changed the implicit default root from Web to Root; this not only allows support for an empty database (where Web won't yet exist), but also fixes issues when querying the /JSON service where it would only query the Web branch, thus making it impossible to reference e.g. the Configuration branch with a QueryableTopicListAttribute or TopicReferenceAttribute (1069b34).
  • Ensure the TopicReferenceAttributeViewComponent honors the current key, instead of being hard-coded to use TopicID (eb84431).
  • Expose new ExportOptions.TranslateTopicPointers opt-out to the Export() interface (5630bb7).
  • Fix link to the ContentTypeDescriptor from the editor interface (9b4ebf6).

TopicListAttributeViewComponent

  • Ensure DefaultLabel isn't persisted as the value if not topic is selected (1be3eb3).
  • Resolve runtime exception when using RelativeTopicBase's ContentTypeDescriptor (339fa6d).
  • Gracefully fail if the TopicList's scope cannot be resolved (9ecf880).
  • Ensure RelativeTopicBase works correctly when creating new topics (7f027c6).
  • Introduce missing support for the RelativeTopicPath attribute (b727cf1).
  • Hide the TopicListViewComponent if no values are returned (753d0a4).

Code Changes

  • Updated to use newly created Topic.IsNew property for detecting if topic references are valid (9a79cc8).

Maintenance

  • Updated various dependencies, including client-side dependencies (4b996cc).

v4.2.0

22 Apr 20:56
Compare
Choose a tag to compare

Maintenance release including a number of bug fixes, including those implemented in the corresponding release of the OnTopic Library 4.2.0.

Bug Fixes

  • Allow rollback of versions created since the application was last reset (37eb773)
  • Correctly refresh the page or topic tree when moving a topic to ensure URLs are updated (a33a950)
  • Disable required field validation for topics derived from other topics (5044e46)
  • Set the HTML (browser) title to the name of the current topic (1ba3931)

Code Changes

  • Significant refactoring of tree view scripts to aid in maintainability (1ba3931)

v4.1.0

28 Mar 22:45
Compare
Choose a tag to compare

OnTopic Editor 4.1.0 introduces the ability to export entire branches of the Topic graph as a JSON file, as well as the ability to import that JSON file back into OnTopic.

The import process includes support for a variety of import strategies, such as only adding missing topics, attributes, and relationships; merging based on the last updated date; overwriting all values; or replacing the entire tree—in which case topics, attributes, and relationships that are not found in the JSON file will be removed from OnTopic.