Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
887 commits
Select commit Hold shift + click to select a range
edc9f4b
Updated `IsSettableType` to honor polymorphism
JeremyCaney Feb 3, 2021
8b9ae46
Merge branch 'feature/TrackedCollection' into develop
JeremyCaney Feb 3, 2021
f84ae66
Renamed `[Relationship()]` attribute to `[Collection()]`
JeremyCaney Feb 3, 2021
1daf799
Renamed `RelationshipType` to `CollectionType`
JeremyCaney Feb 3, 2021
44dc3eb
Renamed `PropertyConfiguration.RelationshipKey` to `CollectionKey`
JeremyCaney Feb 3, 2021
191262a
Renamed `Relationships` enum to `AssociationTypes`
JeremyCaney Feb 6, 2021
a993214
Renamed `MappedTopicCacheEntry` members to use `Associations`
JeremyCaney Feb 6, 2021
2fd7470
Rename `ITopicMappingService.MapAsync()` parameter to `associations`
JeremyCaney Feb 6, 2021
e347e43
Update TopicMappingService.cs
JeremyCaney Feb 6, 2021
e6cbc4b
Update TopicMappingService.cs
JeremyCaney Feb 6, 2021
f96f7d6
Renamed `RelationshipMap` to `AssociationMap`
JeremyCaney Feb 6, 2021
78600fd
Renamed `[Follow()]`'s parameter, property to `Associations`
JeremyCaney Feb 6, 2021
7c150d8
Renamed `[Follow()]` to `[Include()]`
JeremyCaney Feb 6, 2021
c16c0a8
Renamed `CrawlRelationships` to `IncludeAssociations`
JeremyCaney Feb 6, 2021
acb64e9
Updated relevant references of `follow` to `include`
JeremyCaney Feb 6, 2021
0e32098
Renamed relevant references of `relationships` to `associations`
JeremyCaney Feb 6, 2021
7435889
Renamed `IRelatedTopicBindingModel` to `IAssociatedTopicBindingModel`
JeremyCaney Feb 6, 2021
cf7badf
Reintroduced `IRelatedTopicBindingModel` as deprecated
JeremyCaney Feb 6, 2021
213a46b
Renamed `OnTopic.References` to `OnTopic.Associations`
JeremyCaney Feb 7, 2021
f77cf59
Accounted for `Topic.References` on `Delete()`
JeremyCaney Feb 7, 2021
80c9017
Bypass `ModelType.Reference` as part of `GetUnmatchedAttributes()`
JeremyCaney Feb 7, 2021
4bf2642
Updated documentation with new syntax
JeremyCaney Feb 7, 2021
b01216e
Merge branch 'feature/Associations' into develop
JeremyCaney Feb 7, 2021
85c386f
Prevent `MarkClean()` or `IsClean()` if `Topic.IsNew`
JeremyCaney Feb 8, 2021
ee048f7
Update `IsDirty` unit tests to operate off of "saved" topics
JeremyCaney Feb 8, 2021
61fe810
Implemented key-tracking for `Topic.IsDirty()`
JeremyCaney Feb 8, 2021
e6d15ab
Applied `ITrackDirtyKeys` to `Topic`
JeremyCaney Feb 8, 2021
4f0b50c
Tidied up implementation of `IsDirty()`
JeremyCaney Feb 8, 2021
af53497
Added in `IsNew` handling for `Topic.IsDirty()`, `MarkClean()`
JeremyCaney Feb 8, 2021
ebd6d3c
Mark `Parent` as dirty during update
JeremyCaney Feb 8, 2021
f5ba7a8
Implement `Move()` on `Save()` if `Parent` has changed
JeremyCaney Feb 8, 2021
b0787c6
Prevent `MarkClean()` if `TValue` is a `Topic.IsNew`
JeremyCaney Feb 8, 2021
d551442
Introduce `IEnumerable<Topic>` extension methods
JeremyCaney Feb 8, 2021
34a80cb
Prevent `MarkClean()` if any related items are `Topic.IsNew`
JeremyCaney Feb 8, 2021
2dd8e03
Centralized `MarkClean()` logic for associations to `TopicRepository`
JeremyCaney Feb 8, 2021
14cdb65
Use consistent `Relationships` nomenclature in `PersistRelationships()`
JeremyCaney Feb 8, 2021
1222bd0
Prevent `!markDirty` if target `Topic.IsNew`
JeremyCaney Feb 8, 2021
cbd49c1
Unit test: Prevent clean `TrackedItem<T>` being added to `Topic.IsNew`
JeremyCaney Feb 8, 2021
dc08f2e
Unit test: Prevent `MarkClean()` on `Topic.IsNew`
JeremyCaney Feb 8, 2021
2cd0c5f
Unit test: Prevent `!markDirty` being set on `Topic.IsNew`
JeremyCaney Feb 8, 2021
249d049
Unit test: Prevent `!markDirty` being set with `Topic.IsNew` target
JeremyCaney Feb 8, 2021
6c6a1b5
Unit test: Prevent `!markDirty` being set with `Topic.IsNew` target
JeremyCaney Feb 8, 2021
f7d36f0
Merge branch 'feature/IsDirty-improvements' into develop
JeremyCaney Feb 8, 2021
64ae337
Wrapped the `CreateTopic` stored procedure in a transaction
JeremyCaney Feb 9, 2021
2da9974
Implemented `TABLOCK` for the `CreateTopic` stored procedure
JeremyCaney Feb 9, 2021
282f8a9
Merge branch 'feature/CreateTopic-transaction' into develop
JeremyCaney Feb 9, 2021
74d7cee
Ensured (consistent) syntax highlighting hints
JeremyCaney Feb 9, 2021
7720e58
Updated to account for change in `@DeleteRelationships` handling
JeremyCaney Feb 9, 2021
e08f7e5
Updated disclaimer regarding versioning to only apply to `Topics`
JeremyCaney Feb 9, 2021
39426ab
Consolidate build badges exclusively on main `README.md`
JeremyCaney Feb 9, 2021
0751471
Refactored topic collection list as graph
JeremyCaney Feb 9, 2021
b3189c5
Fixed paths pointing to legacy namespaces
JeremyCaney Feb 9, 2021
85d6daf
Added section on extensibility to main `README`
JeremyCaney Feb 9, 2021
2e4a780
Emphasized relevant keywords to reinforce point
JeremyCaney Feb 9, 2021
e5953ab
Removed references to legacy projects, added references to new projects
JeremyCaney Feb 9, 2021
1cd1263
Reviewed and updated `README` for `OnTopic` namespace
JeremyCaney Feb 9, 2021
4681499
Introduced full set of specialized collections
JeremyCaney Feb 9, 2021
4aa305c
Reviewed, updated `README` for `OnTopic.Mapping.Reverse` namespace
JeremyCaney Feb 9, 2021
d988161
Reviewed, updated `README` for `OnTopic.Mapping` namespace
JeremyCaney Feb 9, 2021
cf24737
Fixed reference to renamed `[Include()]` attribute
JeremyCaney Feb 9, 2021
6a6c6e9
Accounted for new `TopicReferences` table in `GetTopics` summary
JeremyCaney Feb 9, 2021
52da0bc
Reviewed, updated `README` for `OnTopic.Mapping.Hierarchical` namespace
JeremyCaney Feb 9, 2021
dd1394d
Standardized build badges across projects
JeremyCaney Feb 9, 2021
b8ced5a
Reviewed, updated `README` for `OnTopic.Data.Caching` namespace
JeremyCaney Feb 9, 2021
c8f1129
Reviewed, updated `README` for `OnTopic.AspNetCore.Mvc` namespace
JeremyCaney Feb 9, 2021
08ac1e7
Reviewed, updated `README` for `OnTopic.ViewModels` namespace
JeremyCaney Feb 9, 2021
e9c22c8
Reviewed, updated `README` for `OnTopic.Data.Sql` namespace
JeremyCaney Feb 9, 2021
caade4c
Reviewed, updated `README` for `OnTopic.Data.Sql.Database` namespace
JeremyCaney Feb 9, 2021
0dad1b9
Reviewed, updated `README` for `OnTopic.TestDoubles` namespace
JeremyCaney Feb 9, 2021
fa2a880
Merge branch 'maintenance/README-updates' into develop
JeremyCaney Feb 9, 2021
a6db252
Rename `TrackedItem<T>` to `TrackedRecord<T>`
JeremyCaney Feb 10, 2021
453c9e9
Rename `TrackedCollection<>` to `TrackedRecordCollection<>`
JeremyCaney Feb 10, 2021
1cf813a
Updated text references to `TrackedRecord`, `TrackedRecordCollection`
JeremyCaney Feb 10, 2021
6960800
Renamed `TopicReference` to `TopicReferenceRecord`
JeremyCaney Feb 10, 2021
f41c551
Rename `AttributeValue` to `AttributeRecord`
JeremyCaney Feb 10, 2021
400520b
Rename `AttributeValueCollection` to `AttributeCollection`
JeremyCaney Feb 10, 2021
d18d0eb
Renamed `AttributeValueCollectionTest` to `AttributeCollectionTest`
JeremyCaney Feb 10, 2021
4c99dbc
Rename to `AttributeCollectionExtensions`
JeremyCaney Feb 10, 2021
98c73f8
Renamed unit tests involving `AttributeRecord`
JeremyCaney Feb 10, 2021
d4b2ec3
Fixed off-target rename of `AttributeValue` column
JeremyCaney Feb 10, 2021
f51407a
Merge branch 'feature/TrackedRecord' into develop
JeremyCaney Feb 10, 2021
a09cd00
Migrated `PropertyConfiguration` to `internal`
JeremyCaney Feb 10, 2021
198e086
Migrated `MappedTopicCache` to `internal`
JeremyCaney Feb 10, 2021
59a1845
Migrated `MappedTopicCacheEntry` to `internal`
JeremyCaney Feb 10, 2021
179c664
Merge branch 'maintenance/OnTopic.Mapping.Internal-access-modifiers' …
JeremyCaney Feb 10, 2021
9c3cbd1
Update to latest version of `GitVersion`
JeremyCaney Feb 10, 2021
13e1379
Merge branch 'maintenance/update-dependencies' into develop
JeremyCaney Feb 10, 2021
ab945df
Fixed typo in `cref` in XML Doc
JeremyCaney Feb 10, 2021
9e9bd7c
Fixed references to `SetPropertyValue()`
JeremyCaney Feb 10, 2021
d26dc8c
Suppressed `IDE0060` in generated SSDT unit test code
JeremyCaney Feb 10, 2021
a5cbf97
Merge branch 'maintenance/XML-Doc-resolution' into develop
JeremyCaney Feb 10, 2021
ad3e5dd
Rename `GetTopics()` to `GetValues()`
JeremyCaney Feb 10, 2021
2f01591
Rename `GetAllTopics()` to `GetAllValues()`
JeremyCaney Feb 10, 2021
9f65271
Rename `ClearTopics()` to `Clear()`
JeremyCaney Feb 10, 2021
53f7244
Rename `RemoveTopic()` to `Remove()`
JeremyCaney Feb 10, 2021
b99a04e
Rename `SetTopic()` to `SetValue()`
JeremyCaney Feb 10, 2021
6674c7d
Rename `GetTopic()` to `GetValue()`
JeremyCaney Feb 10, 2021
f28fab2
Marked all deprecations as obsolete
JeremyCaney Feb 10, 2021
34a8c52
Merge branch 'feature/GetValue-nomenclature' into develop
JeremyCaney Feb 10, 2021
532c49d
Remove `virtual` from read-only properties
JeremyCaney Feb 17, 2021
ec2d875
Updated `AttributeDescriptor`s to use new `protected init` accessor
JeremyCaney Feb 17, 2021
7c33463
Merge branch 'maintenance/virtual-properties' into develop
JeremyCaney Feb 17, 2021
59936df
Removed unnecessary `[AttributeSetter]` attributes
JeremyCaney Feb 17, 2021
6541560
Ensured `isDirty` is optional on deprecated `SetTopic()` method
JeremyCaney Feb 17, 2021
3cd060e
Implemented `DerivedTopic` as `[Obsolete()]` for warning messages
JeremyCaney Feb 17, 2021
fd92c56
Merge branch 'maintenance/compatibility-updates' into develop
JeremyCaney Feb 17, 2021
0929fb4
Corrected rename of `DerivedTopic`
JeremyCaney Feb 17, 2021
ade1f90
Fixed bug in adding root topics
JeremyCaney Feb 17, 2021
dc1b927
Merge branch 'bugfix/SQL-updates' into develop
JeremyCaney Feb 17, 2021
87d7570
Established metapackage for `OnTopic`
JeremyCaney Feb 17, 2021
028e4ae
Introduced dependencies to core packages
JeremyCaney Feb 17, 2021
ab81af4
Introduced dependency on `OnTopic.Data.Sql`
JeremyCaney Feb 17, 2021
3740b99
Ensured use of `netcoreapp3.1` moniker
JeremyCaney Feb 17, 2021
fd295a7
Introduced `GitVersion` for the `OnTopic.All` metapackage
JeremyCaney Feb 17, 2021
e1144ec
Updated `Host` project to rely on the new `OnTopic.All` metapackage
JeremyCaney Feb 17, 2021
9da53fa
Introduced basic documentation for the metapackage
JeremyCaney Feb 17, 2021
c15bf2e
Merge branch 'feature/OnTopic.All' into develop
JeremyCaney Feb 17, 2021
01ad3c9
Introduced polyfill for `[MemberNotNull]` attribute
JeremyCaney Feb 17, 2021
8d1bcbd
Introduced polyfill for `[MemberNotNullWhen]` attribute
JeremyCaney Feb 17, 2021
62e6d2f
Applied `[MemberNotNull()]` attribute to `ContentType`, `Key` setters
JeremyCaney Feb 17, 2021
39e3147
Set `VersionHistory` to `init` only
JeremyCaney Feb 17, 2021
9f2da06
Merge branch 'maintenance/code-analysis' into develop
JeremyCaney Feb 17, 2021
416da77
Updated tests to use .NET 5
JeremyCaney Feb 18, 2021
fc7d795
Updated `Host` to use .NET 5
JeremyCaney Feb 18, 2021
b9accc0
Consolidated project references within `OnTopic.AspNetCore.Mvc.Tests`
JeremyCaney Feb 18, 2021
c871825
Sort and remove usings
JeremyCaney Feb 18, 2021
87add5f
Merge branch 'maintenance/net5.0-hosts' into develop
JeremyCaney Feb 18, 2021
ce2067b
Configure `release` branches to auto-increment
JeremyCaney Feb 18, 2021
ae00cfe
Merge branch 'maintenance/release-versioning' into release/5.0.0
JeremyCaney Feb 18, 2021
a827e8d
Reverted `ModelType` property to be `virtual`
JeremyCaney Feb 18, 2021
933f766
Merge branch 'bugfix/AttributeDescriptor.ModelType' into develop
JeremyCaney Feb 18, 2021
3665fcc
Revert `release` branches to auto-increment
JeremyCaney Feb 18, 2021
15a731b
Merge branch 'maintenance/release-versioning-revert' into develop
JeremyCaney Feb 18, 2021
3b0ec7e
Remove configuration conditions from `csproj` files
JeremyCaney Feb 19, 2021
bf23fe8
Remove exclusions for `README.md` files
JeremyCaney Feb 19, 2021
b851900
Centralized common properties into `Directory.Build.props`
JeremyCaney Feb 19, 2021
172feed
Merge branch 'maintenance/csproj-cleanup' into develop
JeremyCaney Feb 19, 2021
7033842
Resolve assigning `null` to non-nullable fields
JeremyCaney Feb 19, 2021
cec7b37
Resolve possible null references for parameters
JeremyCaney Feb 19, 2021
bda031b
Suppress warning regarding underscores
JeremyCaney Feb 19, 2021
b01b8a4
Resolved dereferencing of possibly null references
JeremyCaney Feb 19, 2021
c1ec4fd
Validate non-nullable reference types, where appropriate
JeremyCaney Feb 19, 2021
94119eb
Mark assemblies with CLSCompliant
JeremyCaney Feb 19, 2021
30d1d17
Ensure use of `StringComparison` to avoid variance by local
JeremyCaney Feb 19, 2021
3f10197
Address nullability issues in `cshtml` files
JeremyCaney Feb 19, 2021
85ea5e1
Mark assemblies with CLSCompliant (cont.)
JeremyCaney Feb 19, 2021
16c5668
Suppress warning regarding use of properties
JeremyCaney Feb 19, 2021
fb38d9b
Merge branch 'maintenance/code-analysis' into develop
JeremyCaney Feb 19, 2021
bd01ff9
Set neutral/default language for assemblies to English
JeremyCaney Feb 19, 2021
ff7833a
Ensure a symbols package is generated
JeremyCaney Feb 19, 2021
83bc34e
Ensure any untracked resources are embedded
JeremyCaney Feb 19, 2021
0b6c92a
Flag if this is a continuous integration build
JeremyCaney Feb 19, 2021
cc732bd
Add `SourceLink` to each of project that will be distributed via NuGet
JeremyCaney Feb 19, 2021
f7fb979
Merge branch 'feature/SourceLink' into develop
JeremyCaney Feb 19, 2021
0966479
Reintroduced `Relationships` enum as `[Obsolete]`
JeremyCaney Feb 19, 2021
182e134
Reintroduced `RelationshipType` enum as `[Obsolete]`
JeremyCaney Feb 19, 2021
1a645a2
Reintroduced `[Relationship]` attribute as `[Obsolete]`
JeremyCaney Feb 19, 2021
addce60
Reintroduced `[Follow]` attribute as `[Obsolete]`
JeremyCaney Feb 19, 2021
ee6ed27
Reintroduced `NamedTopicCollection` class as `[Obsolete]`
JeremyCaney Feb 19, 2021
f0a3016
Reintroduced `RelatedTopicCollection` class as `[Obsolete]`
JeremyCaney Feb 19, 2021
8d9a89e
Reintroduced `ReadOnlyTopicCollection<T>` class as `[Obsolete]`
JeremyCaney Feb 19, 2021
5f5a33b
Reintroduced `TopicCollection<T>` class as `[Obsolete]`
JeremyCaney Feb 19, 2021
070545a
Reintroduced `AttributeValue` class as `[Obsolete]`
JeremyCaney Feb 19, 2021
efac455
Reintroduced `AttributeValueCollection` class as `[Obsolete]`
JeremyCaney Feb 19, 2021
d6efcaa
Reintroduced `AttributeTypeDescriptor` class as `[Obsolete]`
JeremyCaney Feb 19, 2021
36bee86
Moved `[Obsolete]` types into new `Obsolete` folder
JeremyCaney Feb 19, 2021
5550bb1
Reintroduced `Value` property as `[Obsolete]`
JeremyCaney Feb 19, 2021
0f5602e
Reintroduced `Create()` overload as `[Obsolete]`
JeremyCaney Feb 19, 2021
24071bf
Reintroduced `GetTopic()`, indexer as `[Obsolete]`
JeremyCaney Feb 19, 2021
5c260cc
Reintroduced `DeleteEventArgs` class as `[Obsolete]`
JeremyCaney Feb 20, 2021
7971f76
Reintroduced `MoveEventArgs` class as `[Obsolete]`
JeremyCaney Feb 20, 2021
a50da2a
Reintroduced `RenameEventArgs` class as `[Obsolete]`
JeremyCaney Feb 20, 2021
bad250b
Reintroduced events as `[Obsolete]`
JeremyCaney Feb 20, 2021
78c8728
Reintroduced `Load()` overload as `[Obsolete]`
JeremyCaney Feb 20, 2021
c0b5d7d
Reintroduced `Save()` overload as `[Obsolete]`
JeremyCaney Feb 20, 2021
e9de72f
Reintroduced `FromList` method as `[Obsolete]`
JeremyCaney Feb 20, 2021
348a4d1
Reintroduced `DefaultType` property as `[Obsolete]`
JeremyCaney Feb 20, 2021
13b1114
Merge branch 'maintenance/obsolete-messages' into develop
JeremyCaney Feb 20, 2021
384f730
Throw exception on `[FilterByAttribute("ContentType", …)]`
JeremyCaney Feb 20, 2021
5b5dae0
Introduced unit test for validation of `[FilterByAttribute()]`
JeremyCaney Feb 20, 2021
c68040a
Merge branch 'feature/FilterByAttribute-key-validation' into develop
JeremyCaney Feb 20, 2021
dc8d988
Account for variability in `DerivedTopic` attribute descriptor name
JeremyCaney Feb 22, 2021
0747cb7
Alter new `[dbo].[Topics]` columns to be `NOT NULL`
JeremyCaney Feb 22, 2021
9f7b544
Introduced messaging to help aid in reading the results of the query
JeremyCaney Feb 22, 2021
5950ec1
Merge branch 'bugfix/SQL-migration' into develop
JeremyCaney Feb 22, 2021
4b68e2b
Bypass validation of the `EqualityContract` property
JeremyCaney Feb 22, 2021
f3695e9
Bypass mapping of the `EqualityContract` property
JeremyCaney Feb 22, 2021
bea5a20
Introduced unit test for validating the mapping of records
JeremyCaney Feb 22, 2021
145c2a4
Merge branch 'bugfix/ReverseTopicMappingService-records' into develop
JeremyCaney Feb 22, 2021
4919695
Configure solution to auto-generate XML documentation
JeremyCaney Feb 22, 2021
6404d58
Addressed mismatched parameter documentation
JeremyCaney Feb 22, 2021
6128b69
Removed mismatched closing tag
JeremyCaney Feb 22, 2021
c0830b4
Removed unencoded ampersand
JeremyCaney Feb 22, 2021
684b479
Resolved `cref` references within XML Docs
JeremyCaney Feb 22, 2021
726ba44
Remove explicit generation of documentation in `Debug` configuration
JeremyCaney Feb 22, 2021
219ece4
Merge branch 'improvement/documentation' into develop
JeremyCaney Feb 22, 2021
44b8649
Reduced scope of `INavigationTopicViewModel<T>`
JeremyCaney Feb 22, 2021
4f535a5
Updated `NavigationTopicViewModel` to reflect updates to interface
JeremyCaney Feb 22, 2021
44f66bf
Removed fallback to `NavigationTopicViewModel.Key` in `Menu` view
JeremyCaney Feb 22, 2021
8fd4d80
Replace `CurrentKey` with `CurrentWebPath`
JeremyCaney Feb 22, 2021
7a6e7ef
Fixed bug in `IsSelected()` implementation
JeremyCaney Feb 22, 2021
31475d2
Reintroduced `CurrentKey` as `[Obsolete()]`
JeremyCaney Feb 22, 2021
fd1e569
Enforced `[Obsolete()]` on events
JeremyCaney Feb 22, 2021
51d5321
Abstract navigation components from `INavigationTopicViewModel`
JeremyCaney Feb 22, 2021
045100b
Move location of `WebPath` property for consistency
JeremyCaney Feb 22, 2021
3e68b16
Merge branch 'improvement/INavigationTopicViewModel-pruning' into dev…
JeremyCaney Feb 22, 2021
ebdb6a6
Introduced icon for the NuGet packages
JeremyCaney Feb 22, 2021
23e1d27
Ensure that the git repository is published
JeremyCaney Feb 22, 2021
7074bde
Merge branch 'improvement/package-metadata' into develop
JeremyCaney Feb 22, 2021
9878d2a
Avoid the "gets or sets" verbiage for records
JeremyCaney Feb 22, 2021
b8d9036
Prefer term "model" over "data transfer object" for view models
JeremyCaney Feb 22, 2021
0ec541f
Merge branch 'improvement/ViewModels-XmlDocs' into develop
JeremyCaney Feb 22, 2021
91ea5fc
Collapsed `OnTopic.ViewModels.Items` back into `OnTopic.ViewModels`
JeremyCaney Feb 23, 2021
fa6c13d
Collapsed `OnTopic.ViewModels.Collections` back into `OnTopic.ViewMod…
JeremyCaney Feb 23, 2021
302cc50
Moved exceptions into a new `_exceptions` folder
JeremyCaney Feb 23, 2021
d945366
Moved event arguments into a new `_eventArgs` folder
JeremyCaney Feb 23, 2021
a165f74
Moved exceptions into a new `_exceptions` folder
JeremyCaney Feb 23, 2021
214e1bb
Merge branch 'maintenance/flatten-namespaces' into develop
JeremyCaney Feb 23, 2021
ddabde1
Moved content type view models into a `_contentTypes` folder
JeremyCaney Feb 23, 2021
cc6eb67
Merge branch 'maintenance/flatten-namespaces' into develop (cont.)
JeremyCaney Feb 23, 2021
ec4886c
Fixed assignment of `CurrentWebPath`
JeremyCaney Feb 23, 2021
619ba62
Fixed bug in unit tests regarding `CurrentWebPath`
JeremyCaney Feb 23, 2021
f92ebde
Merge branch 'bugfix/CurrentWebPath' into develop
JeremyCaney Feb 23, 2021
565273f
Introduced new `IKeyedTopicViewModel` interface
JeremyCaney Mar 1, 2021
3b5dda8
Applied `IKeyedTopicViewModel` to `ITopicBindingModel`
JeremyCaney Mar 1, 2021
5ea98c9
Applied `IKeyedTopicViewModel` to `ITopicViewModel`
JeremyCaney Mar 1, 2021
8ad42b9
Applied `IAssociatedTopicBindingModel` to `ITopicViewModel`
JeremyCaney Mar 1, 2021
ffe775e
Applied `ITopicBindingModel` to `ITopicViewModel`
JeremyCaney Mar 1, 2021
3e60dea
Fixed unit tests which evaluate missing interfaces in binding models
JeremyCaney Mar 1, 2021
adf7ff8
Centralized key navigation properties to `INavigableTopicViewModel`
JeremyCaney Mar 1, 2021
c41d989
Applied `INavigableTopicViewModel` to `IPageTopicViewModel`
JeremyCaney Mar 1, 2021
68a4e83
Removed `IsHidden` from the `ITopicViewModel` definition
JeremyCaney Mar 1, 2021
745e562
Mark `IPageTopicViewModel` as obsolete
JeremyCaney Mar 1, 2021
1bf25be
Marked core view model properties as not-nullable, required
JeremyCaney Mar 1, 2021
3b91ed8
Moved `ShortTitle` to the top of the `PageTopicViewModel` class
JeremyCaney Mar 1, 2021
bfa64f1
Marked `VideoUrl` as non-nullable, required
JeremyCaney Mar 1, 2021
9bc0d00
Moved `ContentType` to `IKeyedTopicViewModel`
JeremyCaney Mar 1, 2021
527dee4
Renamed `IKeyedTopicViewModel` to `ICoreTopicViewModel`
JeremyCaney Mar 1, 2021
eef391c
Updated `TopicViewModelCollection` to use new `ICoreTopicViewModel`
JeremyCaney Mar 1, 2021
2f98c39
Merge branch 'improvement/model-interfaces' into develop
JeremyCaney Mar 1, 2021
50e76e7
Renamed `KeyValuesPair<TKey, TValue>` file to reflect generics
JeremyCaney Mar 1, 2021
36a85c6
Renamed `TopicPropertyDispatcher<>` file to reflect generics
JeremyCaney Mar 1, 2021
c9fac17
Renamed `TopicViewModelCollection<TItem>` file to reflect generics
JeremyCaney Mar 1, 2021
4ffb7c8
Updated `README` to reflect recent updates
JeremyCaney Mar 1, 2021
1b81215
Merge branch 'improvement/generic-file-names' into develop
JeremyCaney Mar 1, 2021
a05691e
Moved description to single line
JeremyCaney Mar 2, 2021
76af6a9
Merge branch 'maintenance/NuGet-description' into develop
JeremyCaney Mar 2, 2021
b21d49c
Updated to latest version of .NET Test SDK
JeremyCaney Mar 2, 2021
5c0631d
Updated to latest version of Microsoft Test Framework
JeremyCaney Mar 2, 2021
83183b2
Merge branch 'maintenance/update-dependencies' into develop
JeremyCaney Mar 2, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
33 changes: 33 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<Project>

<PropertyGroup>
<LangVersion>9.0</LangVersion>
<Nullable>enable</Nullable>
<AnalysisLevel>latest</AnalysisLevel>
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
</PropertyGroup>

<PropertyGroup>
<Company>Ignia</Company>
<Product>OnTopic</Product>
<Copyright>©2021 Ignia, LLC</Copyright>
<Authors>Ignia</Authors>
<PackageProjectUrl>https://github.com/Ignia/Topics-Library</PackageProjectUrl>
<UseFullSemVerForNuGet>true</UseFullSemVerForNuGet>
<NeutralLanguage>en</NeutralLanguage>
<IncludeSymbols>true</IncludeSymbols>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<PackageIcon>Icon.png</PackageIcon>
</PropertyGroup>

<ItemGroup>
<None Include="../Icon.png" Pack="true" PackagePath=""/>
</ItemGroup>

<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>

</Project>
Binary file added Icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions OnTopic.All/OnTopic.All.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

<PropertyGroup>
<AssemblyTitle>OnTopic Library Metapackage</AssemblyTitle>
<Description>Includes all core packages associated with the OnTopic Library, excluding the OnTopic Editor. Reference this package as a shorthand for establishing a reference to each of the individual packages.</Description>
<OutputPath>bin\$(Configuration)\</OutputPath>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="GitVersion.MsBuild" Version="5.6.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\OnTopic.AspNetCore.Mvc\OnTopic.AspNetCore.Mvc.csproj" />
<ProjectReference Include="..\OnTopic.Data.Caching\OnTopic.Data.Caching.csproj" />
<ProjectReference Include="..\OnTopic.Data.Sql\OnTopic.Data.Sql.csproj" />
<ProjectReference Include="..\OnTopic.ViewModels\OnTopic.ViewModels.csproj" />
<ProjectReference Include="..\OnTopic\OnTopic.csproj" />
</ItemGroup>

</Project>
15 changes: 15 additions & 0 deletions OnTopic.All/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*==============================================================================================================================
| Author Ignia, LLC
| Client Ignia, LLC
| Project Topics Library
\=============================================================================================================================*/
using System;
using System.Runtime.InteropServices;

/*==============================================================================================================================
| DEFINE ASSEMBLY ATTRIBUTES
>===============================================================================================================================
| Declare and define attributes used in the compiling of the finished assembly.
\-----------------------------------------------------------------------------------------------------------------------------*/
[assembly: ComVisible(false)]
[assembly: CLSCompliant(false)]
31 changes: 31 additions & 0 deletions OnTopic.All/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# OnTopic Metapackage
The `OnTopic.All` metapackage includes a reference to the core OnTopic libraries that most implementations will require. It is recommended that implementers reference this package instead of referencing each of the OnTopic packages individually, unless they have a specific need to customize which packages are referenced.

[![OnTopic.Data.Caching package in Internal feed in Azure Artifacts](https://igniasoftware.feeds.visualstudio.com/_apis/public/Packaging/Feeds/46d5f49c-5e1e-47bb-8b14-43be6c719ba8/Packages/3dfb3a0a-c049-407d-959e-546f714dcd0f/Badge)](https://igniasoftware.visualstudio.com/OnTopic/_packaging?_a=package&feed=46d5f49c-5e1e-47bb-8b14-43be6c719ba8&package=3dfb3a0a-c049-407d-959e-546f714dcd0f&preferRelease=true)
[![Build Status](https://igniasoftware.visualstudio.com/OnTopic/_apis/build/status/OnTopic-CI-V3?branchName=master)](https://igniasoftware.visualstudio.com/OnTopic/_build/latest?definitionId=7&branchName=master)
![NuGet Deployment Status](https://rmsprodscussu1.vsrm.visualstudio.com/A09668467-721c-4517-8d2e-aedbe2a7d67f/_apis/public/Release/badge/bd7f03e0-6fcf-4ec6-939d-4e995668d40f/2/2)

### Contents
- [Scope](#scope)
- [Installation](#installation)

## Scope
The `OnTopic.All` metapackage maintains a reference to the following packages:
- [`OnTopic`](../OnTopic/README.md): The core OnTopic library.
- [`OnTopic.AspNetCore.Mvc`](../OnTopic.AspNetCore.Mvc/README.md): The ASP.NET Core implementation, with support for both ASP.NET Core 3.x and ASP.NET Core 5.x.
- [`OnTopic.Data.Caching`](../OnTopic.Data.Caching/README.md): An `ITopicRepository` decorator for caching the topic graph in memory.
- [`OnTopic.Data.Sql`](../OnTopic.Data.Sql/README.md): An `ITopicRepository` implementation for persisting topic data in a SQL Server database.
- [`OnTopic.ViewModels`](../OnTopic.ViewModels/README.md): A set of reference view models and binding models mapping to the out-of-the-box schema for the standard content types.

## Installation
Installation can be performed by providing a `<PackageReference /`> to the `OnTopic.All` **NuGet** package.
```xml
<Project Sdk="Microsoft.NET.Sdk.Web">
<ItemGroup>
<PackageReference Include="OnTopic.All" Version="5.0.0" />
</ItemGroup>
</Project>
```

> *Note:* This package is currently only available on Ignia's private **NuGet** repository. For access, please contact [Ignia](http://www.ignia.com/).
3 changes: 2 additions & 1 deletion OnTopic.AspNetCore.Mvc.Host/Components/MenuViewComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
\=============================================================================================================================*/
using Microsoft.AspNetCore.Mvc;
using OnTopic.AspNetCore.Mvc.Components;
using OnTopic.AspNetCore.Mvc.Controllers;
using OnTopic.AspNetCore.Mvc.Models;
using OnTopic.Mapping.Hierarchical;
using OnTopic.Repositories;
Expand All @@ -16,7 +17,7 @@ namespace OnTopic.AspNetCore.Mvc.Host.Components {
| CLASS: MENU VIEW COMPONENT
\---------------------------------------------------------------------------------------------------------------------------*/
/// <summary>
/// Defines a <see cref="ViewComponent"/> which provides access to a menu of <typeparamref name="NavigationTopicViewModel"/>
/// Defines a <see cref="ViewComponent"/> which provides access to a menu of <see cref="NavigationTopicViewModel"/>
/// instances.
/// </summary>
/// <remarks>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
\=============================================================================================================================*/
using Microsoft.AspNetCore.Mvc;
using OnTopic.AspNetCore.Mvc.Components;
using OnTopic.AspNetCore.Mvc.Controllers;
using OnTopic.AspNetCore.Mvc.Models;
using OnTopic.Mapping.Hierarchical;
using OnTopic.Repositories;
Expand All @@ -16,15 +17,14 @@ namespace OnTopic.AspNetCore.Mvc.Host.Components {
| CLASS: PAGE-LEVEL NAVIGATION VIEW COMPONENT
\---------------------------------------------------------------------------------------------------------------------------*/
/// <summary>
/// Defines a <see cref="ViewComponent"/> which provides access to a menu of <typeparamref name="NavigationTopicViewModel"/>
/// Defines a <see cref="ViewComponent"/> which provides access to a menu of <see cref="NavigationTopicViewModel"/>
/// instances representing the nearest page-level navigation.
/// </summary>
/// <remarks>
/// <para>
/// As a best practice, global data required by the layout view are requested independent of the current page. This
/// allows each layout element to be provided with its own layout data, in the form of <see
/// cref="NavigationViewModel{T}"/>s, instead of needing to add this data to every view model returned by <see
/// cref="TopicController"/>.
/// allows each layout element to be provided with its own layout data, in the form of <see cref="NavigationViewModel{T}"
/// />s, instead of needing to add this data to every view model returned by <see cref="TopicController"/>.
/// </para>
/// </remarks>
public class PageLevelNavigationViewComponent : PageLevelNavigationViewComponentBase<NavigationTopicViewModel> {
Expand Down
17 changes: 10 additions & 7 deletions OnTopic.AspNetCore.Mvc.Host/OnTopic.AspNetCore.Mvc.Host.csproj
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFrameworks>net5.0</TargetFrameworks>
<UserSecretsId>62eb85bf-f802-4afd-8bec-3d344e1cfc79</UserSecretsId>
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\OnTopic.AspNetCore.Mvc\OnTopic.AspNetCore.Mvc.csproj" />
<ProjectReference Include="..\OnTopic.Data.Caching\OnTopic.Data.Caching.csproj" />
<ProjectReference Include="..\OnTopic.Data.Sql\OnTopic.Data.Sql.csproj" />
<ProjectReference Include="..\OnTopic.ViewModels\OnTopic.ViewModels.csproj" />
<ProjectReference Include="..\OnTopic\OnTopic.csproj" />
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="5.0.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

</Project>
<ItemGroup>
<ProjectReference Include="..\OnTopic.All\OnTopic.All.csproj" />
</ItemGroup>

</Project>
15 changes: 15 additions & 0 deletions OnTopic.AspNetCore.Mvc.Host/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*==============================================================================================================================
| Author Ignia, LLC
| Client Ignia, LLC
| Project Topics Library
\=============================================================================================================================*/
using System;
using System.Runtime.InteropServices;

/*==============================================================================================================================
| DEFINE ASSEMBLY ATTRIBUTES
>===============================================================================================================================
| Declare and define attributes used in the compiling of the finished assembly.
\-----------------------------------------------------------------------------------------------------------------------------*/
[assembly: ComVisible(false)]
[assembly: CLSCompliant(false)]
43 changes: 32 additions & 11 deletions OnTopic.AspNetCore.Mvc.Host/SampleActivator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@
using OnTopic.AspNetCore.Mvc.Host.Components;
using OnTopic.Data.Caching;
using OnTopic.Data.Sql;
using OnTopic.Internal.Diagnostics;
using OnTopic.Lookup;
using OnTopic.Mapping;
using OnTopic.Mapping.Hierarchical;
using OnTopic.Reflection;
using OnTopic.Repositories;
using OnTopic.ViewModels;

Expand All @@ -31,21 +32,22 @@ public class SampleActivator : IControllerActivator, IViewComponentActivator {
/*==========================================================================================================================
| PRIVATE INSTANCES
\-------------------------------------------------------------------------------------------------------------------------*/
private readonly ITypeLookupService _typeLookupService = null;
private readonly ITopicMappingService _topicMappingService = null;
private readonly ITopicRepository _topicRepository = null;
private readonly ITypeLookupService _typeLookupService;
private readonly ITopicMappingService _topicMappingService;
private readonly ITopicRepository _topicRepository;
private DateTime _cacheLastUpdated = DateTime.UtcNow;

/*==========================================================================================================================
| HIERARCHICAL TOPIC MAPPING SERVICE
\-------------------------------------------------------------------------------------------------------------------------*/
private readonly IHierarchicalTopicMappingService<NavigationTopicViewModel> _hierarchicalMappingService = null;
private readonly IHierarchicalTopicMappingService<NavigationTopicViewModel> _hierarchicalMappingService;

/*==========================================================================================================================
| CONSTRUCTOR
\-------------------------------------------------------------------------------------------------------------------------*/
/// <summary>
/// Establishes a new instance of the <see cref="SampleControllerFactory"/>, including any shared dependencies to be used
/// across instances of controllers.
/// Establishes a new instance of the <see cref="SampleActivator"/>, including any shared dependencies to be used across
/// instances of controllers.
/// </summary>
/// <remarks>
/// The constructor is responsible for establishing dependencies with the singleton lifestyle so that they are available
Expand Down Expand Up @@ -86,14 +88,28 @@ public SampleActivator(string connectionString) {
/// <summary>
/// Registers dependencies, and injects them into new instances of controllers in response to each request.
/// </summary>
/// <returns>A concrete instance of an <see cref="IController"/>.</returns>
/// <returns>A concrete instance of an <see cref="Controller"/>.</returns>
public object Create(ControllerContext context) {

/*------------------------------------------------------------------------------------------------------------------------
| Validate parameters
\-----------------------------------------------------------------------------------------------------------------------*/
Contract.Requires(context, nameof(context));

/*------------------------------------------------------------------------------------------------------------------------
| Determine controller type
\-----------------------------------------------------------------------------------------------------------------------*/
var type = context.ActionDescriptor.ControllerTypeInfo.AsType();

/*------------------------------------------------------------------------------------------------------------------------
| Periodically update cache
\-----------------------------------------------------------------------------------------------------------------------*/
if (DateTime.UtcNow > _cacheLastUpdated.AddMinutes(1)) {
var currentUpdate = DateTime.UtcNow;
_topicRepository.Refresh(_topicRepository.Load()!, _cacheLastUpdated);
_cacheLastUpdated = currentUpdate;
}

/*------------------------------------------------------------------------------------------------------------------------
| Configure and return appropriate controller
\-----------------------------------------------------------------------------------------------------------------------*/
Expand All @@ -104,17 +120,22 @@ public object Create(ControllerContext context) {
new SitemapController(_topicRepository),
nameof(RedirectController) =>
new RedirectController(_topicRepository),
_ => throw new Exception($"Unknown controller {type.Name}")
_ => throw new InvalidOperationException($"Unknown controller {type.Name}")
};

}

/// <summary>
/// Registers dependencies, and injects them into new instances of view components in response to each request.
/// </summary>
/// <returns>A concrete instance of an <see cref="IController"/>.</returns>
/// <returns>A concrete instance of an <see cref="ViewComponent"/>.</returns>
public object Create(ViewComponentContext context) {

/*------------------------------------------------------------------------------------------------------------------------
| Validate parameters
\-----------------------------------------------------------------------------------------------------------------------*/
Contract.Requires(context, nameof(context));

/*------------------------------------------------------------------------------------------------------------------------
| Determine view component type
\-----------------------------------------------------------------------------------------------------------------------*/
Expand All @@ -128,7 +149,7 @@ public object Create(ViewComponentContext context) {
new MenuViewComponent(_topicRepository, _hierarchicalMappingService),
nameof(PageLevelNavigationViewComponent) =>
new PageLevelNavigationViewComponent(_topicRepository, _hierarchicalMappingService),
_ => throw new Exception($"Unknown view component {type.Name}")
_ => throw new InvalidOperationException($"Unknown view component {type.Name}")
};

}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@Html.PartialAsync("~/Views/ContentList/ContentList.cshtml")
<partial name="~/Views/ContentList/ContentList.cshtml" />

<!--
Content Type: Content List
View Type: Accordion
View Location: ~/Views/ContentList/Accordion.cshtml
-->
-->
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@
Content Type: Content List
View Type: Accordion
View Location: ~/Views/ContentList/Accordion.cshtml
-->
-->
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@Html.PartialAsync("~/Views/ContentList/ContentList.cshtml")
<partial name="~/Views/ContentList/ContentList.cshtml" />

<!--
Content Type: Content List
View Type: Indexed List
View Location: ~/Views/ContentList/IndexedList.cshtml
-->
-->
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@Html.PartialAsync("~/Views/ContentList/ContentList.cshtml")
<partial name="~/Views/ContentList/ContentList.cshtml" />

<!--
Content Type: Content List
View Type: Linked List
View Location: ~/Views/ContentList/LinkedList.cshtml
-->
-->
2 changes: 1 addition & 1 deletion OnTopic.AspNetCore.Mvc.Host/Views/ContentTypes/Page.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
<!--
Content Type: Page
View Location: ~/ContentTypes/Page.cshtml
-->
-->
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
<!--
Content Type: PageGroup
View Location: ~/ContentTypes/PageGroup.cshtml
-->
-->
27 changes: 27 additions & 0 deletions OnTopic.AspNetCore.Mvc.Host/Views/ContentTypes/Slideshow.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
@model SlideshowTopicViewModel

<partial name="_PageAttributes" />

<h2>Attributes</h2>
<ul>
<li>TransitionEffect: @Model.TransitionEffect</li>
</ul>

<h2>Collections</h2>

<h3>Slides</h3>
@foreach (var contentItem in Model.ContentItems) {
<h4>@contentItem.Key</h4>
<ul>
<li>Title: @contentItem.Title</li>
<li>Category: @contentItem.Category</li>
<li><a href="@contentItem.LearnMoreUrl">Learn More</a></li>
<li><img src="@contentItem.ThumbnailImage" /></li>
<li>Description: @contentItem.Description</li>
</ul>
}

<!--
Content Type: Slideshow
View Location: ~/Views/ContentTypes/Slideshow.cshtml
-->
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
<!--
Content Type: Video
View Location: ~/Views/ContentTypes/Video.cshtml
-->
-->
Loading