Copy disabled (too large)
Download .txt
Showing preview only (27,566K chars total). Download the full file to get everything.
Repository: cloudscribe/cloudscribe.SimpleContent
Branch: develop
Commit: 1bfdd121483f
Files: 1723
Total size: 25.8 MB
Directory structure:
gitextract_xvb6op_9/
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── cloudscribe-develop.yml
│ ├── cloudscribe-master.yml
│ └── nuget-push-to-production.yml
├── .gitignore
├── .travis.yml
├── .vscode/
│ ├── launch.json
│ └── tasks.json
├── CONTRIBUTING.md
├── LICENSE
├── NuGet.Config
├── README.md
├── appveyor-cake-backup.yml
├── appveyor.yml
├── build.cake
├── build.ps1
├── build.sh
├── cake/
│ └── paths.cake
├── cloudscribe.SimpleContent.code-workspace
├── cloudscribe.SimpleContent.sln
├── package.json
├── samples/
│ └── README.md
├── src/
│ ├── cloudscribe.ContentUtils/
│ │ ├── ExcerptHelper.cs
│ │ ├── ExcerptResult.cs
│ │ ├── MarkdownHelper.cs
│ │ ├── README.md
│ │ ├── SlugHelper.cs
│ │ ├── Truncation.cs
│ │ └── cloudscribe.ContentUtils.csproj
│ ├── cloudscribe.Core.SimpleContent/
│ │ ├── AuthorNameResolver.cs
│ │ ├── ClaimsPrincipalExtensions.cs
│ │ ├── ContentSettingsUIConfig.cs
│ │ ├── Controllers/
│ │ │ ├── ContentCloningController.cs
│ │ │ ├── ContentSettingsController.cs
│ │ │ ├── CultureMetaweblogController.cs
│ │ │ ├── CultureRssController.cs
│ │ │ ├── CultureSiteMapController.cs
│ │ │ ├── FolderMetaweblogController.cs
│ │ │ └── FolderRssController.cs
│ │ ├── CoreProjectEmailService.cs
│ │ ├── CustomClaimProvider.cs
│ │ ├── EventHandlers/
│ │ │ ├── HandleRoleDeletred.cs
│ │ │ └── HandleRoleUpdated.cs
│ │ ├── MultiTenantBlogRoutes.cs
│ │ ├── MultiTenantPageRoutes.cs
│ │ ├── ProjectSecurityResolver.cs
│ │ ├── README.md
│ │ ├── Resources.cs
│ │ ├── SiteFileSystemMediaProcessor.cs
│ │ ├── SiteNavigationCacheKeyResolver.cs
│ │ ├── SiteProjectSettingsResolver.cs
│ │ ├── SiteRoleSelectorProperties.cs
│ │ ├── SiteSimpleContentThemeHelper.cs
│ │ ├── StartupExtenstions.cs
│ │ ├── VersionProvider.cs
│ │ ├── ViewModels/
│ │ │ ├── ContentCloningViewModel.cs
│ │ │ ├── ContentSettingsViewModel.cs
│ │ │ └── CoreCommentNotificationModel.cs
│ │ └── cloudscribe.Core.SimpleContent.csproj
│ ├── cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5/
│ │ ├── README.md
│ │ ├── VersionProvider.cs
│ │ ├── Views/
│ │ │ ├── Blog/
│ │ │ │ └── BlogMetaPartial.cshtml
│ │ │ ├── ContentCloning/
│ │ │ │ └── Index.cshtml
│ │ │ ├── ContentSettings/
│ │ │ │ ├── CdnUrlPartial.cshtml
│ │ │ │ ├── CommentSystemSettings.cshtml
│ │ │ │ ├── Index.cshtml
│ │ │ │ └── MediaPathPartial.cshtml
│ │ │ ├── Page/
│ │ │ │ └── Tree.cshtml
│ │ │ ├── Shared/
│ │ │ │ ├── CmsSiteLogoPartial.cshtml
│ │ │ │ ├── CmsSiteTitlePartial.cshtml
│ │ │ │ └── CommentNotificationEmail.cshtml
│ │ │ └── _ViewImports.cshtml
│ │ └── cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5.csproj
│ ├── cloudscribe.MetaWeblog/
│ │ ├── Controllers/
│ │ │ └── MetaWeblogController.cs
│ │ ├── IMetaWeblogRequestParser.cs
│ │ ├── IMetaWeblogRequestProcessor.cs
│ │ ├── IMetaWeblogRequestValidator.cs
│ │ ├── IMetaWeblogResultFormatter.cs
│ │ ├── IMetaWeblogSecurity.cs
│ │ ├── IMetaWeblogService.cs
│ │ ├── MetaWeblogRequest.cs
│ │ ├── MetaWeblogRequestParser.cs
│ │ ├── MetaWeblogRequestProcessor.cs
│ │ ├── MetaWeblogRequestValidator.cs
│ │ ├── MetaWeblogResult.cs
│ │ ├── MetaWeblogResultExtensions.cs
│ │ ├── MetaWeblogResultFormatter.cs
│ │ ├── MetaWeblogSecurityResult.cs
│ │ ├── Models/
│ │ │ ├── ApiOptions.cs
│ │ │ ├── AuthorStruct.cs
│ │ │ ├── BlogInfoStruct.cs
│ │ │ ├── CategoryStruct.cs
│ │ │ ├── FaultStruct.cs
│ │ │ ├── MediaInfoStruct.cs
│ │ │ ├── MediaObjectStruct.cs
│ │ │ ├── MetaWeblogException.cs
│ │ │ ├── PageStruct.cs
│ │ │ ├── PostStruct.cs
│ │ │ └── UserInfoStruct.cs
│ │ ├── README.md
│ │ ├── ServiceCollectionExtensions.cs
│ │ ├── Utils.cs
│ │ ├── XmlResult.cs
│ │ └── cloudscribe.MetaWeblog.csproj
│ ├── cloudscribe.SimpleContent.CompiledViews.Bootstrap5/
│ │ ├── README.md
│ │ ├── VersionProvider.cs
│ │ ├── Views/
│ │ │ ├── Blog/
│ │ │ │ ├── AboutPartial.cshtml
│ │ │ │ ├── Archive.cshtml
│ │ │ │ ├── ArchiveListPartial.cshtml
│ │ │ │ ├── BlogHeaderPartial.cshtml
│ │ │ │ ├── BlogMetaPartial.cshtml
│ │ │ │ ├── BlogScriptsPartial.cshtml
│ │ │ │ ├── BlogStylePartial.cshtml
│ │ │ │ ├── CategoryListPartial.cshtml
│ │ │ │ ├── CommentLinkDetail.cshtml
│ │ │ │ ├── CommentLinkList.cshtml
│ │ │ │ ├── CommentWrapperPartial.cshtml
│ │ │ │ ├── DisqusCommentsPartial.cshtml
│ │ │ │ ├── DraftInfoPartial.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ ├── EditContentHtmlPartial.cshtml
│ │ │ │ ├── EditContentMarkdownPartial.cshtml
│ │ │ │ ├── EditCorrelationKeyPartial.cshtml
│ │ │ │ ├── EditDraftPubDatePartial.cshtml
│ │ │ │ ├── EditHistoryInfoPartial.cshtml
│ │ │ │ ├── EditImageUrlPartial.cshtml
│ │ │ │ ├── EditPubDate.cshtml
│ │ │ │ ├── EditScriptsPartial.cshtml
│ │ │ │ ├── EditSlugPartial.cshtml
│ │ │ │ ├── EditStylesPartial.cshtml
│ │ │ │ ├── EditTeaserDisabledPartial.cshtml
│ │ │ │ ├── EditTeaserHtmlPartial.cshtml
│ │ │ │ ├── EditTeaserMarkdownPartial.cshtml
│ │ │ │ ├── EditWithTemplate.cshtml
│ │ │ │ ├── EditWithTemplateCorrelationKeyPartial.cshtml
│ │ │ │ ├── EditWithTemplateDraftPubDatePartial.cshtml
│ │ │ │ ├── EditWithTemplateHistoryInfoPartial.cshtml
│ │ │ │ ├── EditWithTemplateImageUrlPartial.cshtml
│ │ │ │ ├── EditWithTemplatePubDate.cshtml
│ │ │ │ ├── EditWithTemplateScriptsPartial.cshtml
│ │ │ │ ├── EditWithTemplateSlugPartial.cshtml
│ │ │ │ ├── EditWithTemplateStylesPartial.cshtml
│ │ │ │ ├── EditWithTemplateTeaserHtmlPartial.cshtml
│ │ │ │ ├── History.cshtml
│ │ │ │ ├── HistoryInfoPartial.cshtml
│ │ │ │ ├── Index.cshtml
│ │ │ │ ├── NewPost.cshtml
│ │ │ │ ├── NextPreviousPartial.cshtml
│ │ │ │ ├── Post.cshtml
│ │ │ │ ├── PostContentBodyPartial.cshtml
│ │ │ │ ├── PostDetailPartial.cshtml
│ │ │ │ ├── PostListPartial.cshtml
│ │ │ │ ├── PostPartial.cshtml
│ │ │ │ ├── RelatedPostsPartial.cshtml
│ │ │ │ ├── SideBarPartial.cshtml
│ │ │ │ └── ToolsPartial.cshtml
│ │ │ ├── ContentHistory/
│ │ │ │ └── Index.cshtml
│ │ │ ├── Page/
│ │ │ │ ├── AddCssPartial.cshtml
│ │ │ │ ├── AddJsPartial.cshtml
│ │ │ │ ├── ChildMenu.cshtml
│ │ │ │ ├── CommentWrapperPartial.cshtml
│ │ │ │ ├── Development.cshtml
│ │ │ │ ├── DisqusCommentsPartial.cshtml
│ │ │ │ ├── DraftInfoPartial.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ ├── EditCommentsEnabledPartial.cshtml
│ │ │ │ ├── EditCorrelationKeyPartial.cshtml
│ │ │ │ ├── EditDraftPubDatePartial.cshtml
│ │ │ │ ├── EditHistoryInfoPartial.cshtml
│ │ │ │ ├── EditPubDate.cshtml
│ │ │ │ ├── EditScriptsPartial.cshtml
│ │ │ │ ├── EditStylesPartial.cshtml
│ │ │ │ ├── EditWithTemplate.cshtml
│ │ │ │ ├── EditWithTemplateCommentsEnabledPartial.cshtml
│ │ │ │ ├── EditWithTemplateCorrelationKeyPartial.cshtml
│ │ │ │ ├── EditWithTemplateDraftPubDatePartial.cshtml
│ │ │ │ ├── EditWithTemplateHistoryInfoPartial.cshtml
│ │ │ │ ├── EditWithTemplatePubDate.cshtml
│ │ │ │ ├── EditWithTemplateScriptsPartial.cshtml
│ │ │ │ ├── EditWithTemplateStylesPartial.cshtml
│ │ │ │ ├── EditorPartial.cshtml
│ │ │ │ ├── EditorialDetailsPartial.cshtml
│ │ │ │ ├── EditorialShowHidePartial.cshtml
│ │ │ │ ├── EditorialShowHidePartialTemplates.cshtml
│ │ │ │ ├── FeaturedPostsPartial.cshtml
│ │ │ │ ├── History.cshtml
│ │ │ │ ├── HistoryInfoPartial.cshtml
│ │ │ │ ├── Index.cshtml
│ │ │ │ ├── IndexMenu.cshtml
│ │ │ │ ├── MetaPartial.cshtml
│ │ │ │ ├── NewPage.cshtml
│ │ │ │ ├── NoPages.cshtml
│ │ │ │ ├── NotFound.cshtml
│ │ │ │ ├── PageBottomPartial.cshtml
│ │ │ │ ├── PageContentBodyPartial.cshtml
│ │ │ │ ├── PageDetailPartial.cshtml
│ │ │ │ ├── PageScriptsPartial.cshtml
│ │ │ │ ├── PageTopPartial.cshtml
│ │ │ │ ├── RecentPostsPartial.cshtml
│ │ │ │ ├── SiteMapIndex.cshtml
│ │ │ │ ├── StylePartial.cshtml
│ │ │ │ ├── ToolsPartial.cshtml
│ │ │ │ ├── Tree.cshtml
│ │ │ │ ├── TreeMainPartial.cshtml
│ │ │ │ ├── TreeScriptsPartial.cshtml
│ │ │ │ └── TreeStylePartial.cshtml
│ │ │ ├── Shared/
│ │ │ │ ├── AdSpacePartial.cshtml
│ │ │ │ ├── CommentEmail.cshtml
│ │ │ │ ├── CommentFormPartial.cshtml
│ │ │ │ ├── CommentPartial.cshtml
│ │ │ │ ├── CommentScriptsPartial.cshtml
│ │ │ │ ├── CommentStylePartial.cshtml
│ │ │ │ ├── Components/
│ │ │ │ │ ├── FeaturedPosts/
│ │ │ │ │ │ └── FeaturedPosts.cshtml
│ │ │ │ │ ├── RecentPosts/
│ │ │ │ │ │ └── RecentPosts.cshtml
│ │ │ │ │ └── RelatedPosts/
│ │ │ │ │ └── RelatedPosts.cshtml
│ │ │ │ ├── HistoryGridPartial.cshtml
│ │ │ │ ├── NewContentPartial.cshtml
│ │ │ │ ├── _LayoutEmailCommentNotification.cshtml
│ │ │ │ └── _LayoutEmpty.cshtml
│ │ │ └── _ViewImports.cshtml
│ │ └── cloudscribe.SimpleContent.CompiledViews.Bootstrap5.csproj
│ ├── cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/
│ │ ├── Configuration/
│ │ │ ├── Columns/
│ │ │ │ ├── ColumnTemplateOptions.cs
│ │ │ │ ├── ConfigColumnTemplateOptionsProvider.cs
│ │ │ │ └── IColumnTemplateOptionsProvider.cs
│ │ │ ├── Gallery/
│ │ │ │ ├── ConfigGalleryOptionsProvider.cs
│ │ │ │ ├── GalleryOptions.cs
│ │ │ │ └── IGalleryOptionsProvider.cs
│ │ │ ├── Image/
│ │ │ │ ├── ConfigImageWithContentOptionsProvider.cs
│ │ │ │ ├── IImageWithContentOptionsProvider.cs
│ │ │ │ └── ImageWithContentOptions.cs
│ │ │ └── LinkList/
│ │ │ ├── ConfigLinkListOptionsProvider.cs
│ │ │ ├── ILinkListOptionsProvider.cs
│ │ │ └── LinkListOptions.cs
│ │ ├── ContentTemplateResources.cs
│ │ ├── Controllers/
│ │ │ └── SctrController.cs
│ │ ├── README.md
│ │ ├── Services/
│ │ │ └── ContentTemplateProvider.cs
│ │ ├── StartupExtensions.cs
│ │ ├── VersionProvider.cs
│ │ ├── ViewModels/
│ │ │ ├── BingMapViewModel.cs
│ │ │ ├── EverythingModel.cs
│ │ │ ├── ImageWithContentViewModel.cs
│ │ │ ├── ListWithContentModel.cs
│ │ │ ├── RoleBasedContentViewModel.cs
│ │ │ ├── SectionsWithImageViewModel.cs
│ │ │ └── SimpleGalleryViewModel.cs
│ │ ├── Views/
│ │ │ ├── Shared/
│ │ │ │ ├── ContentTemplates/
│ │ │ │ │ ├── BingMapEdit.cshtml
│ │ │ │ │ ├── BingMapRender.cshtml
│ │ │ │ │ ├── EverythingEdit.cshtml
│ │ │ │ │ ├── EverythingRender.cshtml
│ │ │ │ │ ├── GalleryWithContentEdit.cshtml
│ │ │ │ │ ├── GalleryWithContentRender.cshtml
│ │ │ │ │ ├── ImageWithContentEdit.cshtml
│ │ │ │ │ ├── ImageWithContentRender.cshtml
│ │ │ │ │ ├── ListOfLinksEdit.cshtml
│ │ │ │ │ ├── ListOfLinksRender.cshtml
│ │ │ │ │ ├── RoleBasedContentEdit.cshtml
│ │ │ │ │ ├── RoleBasedContentRender.cshtml
│ │ │ │ │ ├── SectionsWithImageEdit.cshtml
│ │ │ │ │ ├── SectionsWithImageRender.cshtml
│ │ │ │ │ ├── TwoSectionsWithImageEdit.cshtml
│ │ │ │ │ └── TwoSectionsWithImageRender.cshtml
│ │ │ │ ├── EverythingBottomColumnsPartial.cshtml
│ │ │ │ ├── EverythingBottomFloatedImagesPartial.cshtml
│ │ │ │ ├── EverythingBottomSectionsLayoutSelector.cshtml
│ │ │ │ ├── EverythingCardsPartial.cshtml
│ │ │ │ ├── EverythingCarouselFullPartial.cshtml
│ │ │ │ ├── EverythingCarouselLeftPartial.cshtml
│ │ │ │ ├── EverythingCarouselRightPartial.cshtml
│ │ │ │ ├── EverythingCompactPartial.cshtml
│ │ │ │ ├── EverythingGalleryLayoutSelector.cshtml
│ │ │ │ ├── EverythingGridPartial.cshtml
│ │ │ │ ├── EverythingRenderPartial.cshtml
│ │ │ │ ├── EverythingTopColumnsPartial.cshtml
│ │ │ │ ├── EverythingTopFloatedImagesPartial.cshtml
│ │ │ │ ├── EverythingTopSectionsLayoutSelector.cshtml
│ │ │ │ ├── GalleryWithContentEditLayoutSelector.cshtml
│ │ │ │ ├── GalleryWithContentRenderCardsPartial.cshtml
│ │ │ │ ├── GalleryWithContentRenderCarouselFullPartial.cshtml
│ │ │ │ ├── GalleryWithContentRenderCarouselLeftPartial.cshtml
│ │ │ │ ├── GalleryWithContentRenderCarouselRightPartial.cshtml
│ │ │ │ ├── GalleryWithContentRenderCompactPartial.cshtml
│ │ │ │ ├── GalleryWithContentRenderGridPartial.cshtml
│ │ │ │ ├── LinksRenderPartial.cshtml
│ │ │ │ ├── RoleBasedContentRenderPartial.cshtml
│ │ │ │ ├── SectionsWithImageEditLayoutSelector.cshtml
│ │ │ │ ├── SectionsWithImageRenderColumnsPartial.cshtml
│ │ │ │ ├── SectionsWithImageRenderFloatedImagesPartial.cshtml
│ │ │ │ ├── TwoSectionsWithImageEditLayoutSelector.cshtml
│ │ │ │ ├── TwoSectionsWithImageRenderColumnsLeftPartial.cshtml
│ │ │ │ └── TwoSectionsWithImageRenderColumnsRightPartial.cshtml
│ │ │ └── _ViewImports.cshtml
│ │ ├── cloudscribe.SimpleContent.ContentTemplates.Bootstrap5.csproj
│ │ ├── css/
│ │ │ ├── simple-gallery.css
│ │ │ └── simple-image.css
│ │ └── js/
│ │ ├── cst-basic-list.js
│ │ ├── cst-link-list.js
│ │ └── simple-gallery.js
│ ├── cloudscribe.SimpleContent.MetaWeblog/
│ │ ├── MetaWeblogModelMapper.cs
│ │ ├── MetaWeblogSecurity.cs
│ │ ├── MetaWeblogService.cs
│ │ ├── README.md
│ │ ├── ServiceCollectionExtensions.cs
│ │ ├── VersionProvider.cs
│ │ └── cloudscribe.SimpleContent.MetaWeblog.csproj
│ ├── cloudscribe.SimpleContent.Models/
│ │ ├── Blog/
│ │ │ ├── BlogEditOptions.cs
│ │ │ ├── DefaultBlogRoutes.cs
│ │ │ ├── IBlogRoutes.cs
│ │ │ ├── IBlogService.cs
│ │ │ ├── IBlogUrlResolver.cs
│ │ │ ├── IPost.cs
│ │ │ ├── IPostCommands.cs
│ │ │ ├── IPostQueries.cs
│ │ │ ├── ITeaserService.cs
│ │ │ ├── NotImplementedBlogService.cs
│ │ │ ├── PagedPostResult.cs
│ │ │ ├── Post.cs
│ │ │ ├── PostResult.cs
│ │ │ ├── TeaserCacheOptions.cs
│ │ │ ├── TeaserMode.cs
│ │ │ ├── TeaserResult.cs
│ │ │ └── TeaserTruncationMode.cs
│ │ ├── CommandResult.cs
│ │ ├── Comment/
│ │ │ ├── Comment.cs
│ │ │ ├── CommentNotificationModel.cs
│ │ │ └── IComment.cs
│ │ ├── ContentFilterResult.cs
│ │ ├── ContentLocalizationOptions.cs
│ │ ├── ContentUtils.cs
│ │ ├── EventHandlers/
│ │ │ ├── IHandlePageCreated.cs
│ │ │ ├── IHandlePageMoved.cs
│ │ │ ├── IHandlePagePreDelete.cs
│ │ │ ├── IHandlePagePreUpdate.cs
│ │ │ ├── IHandlePagePublished.cs
│ │ │ ├── IHandlePageUnPublished.cs
│ │ │ ├── IHandlePageUpdated.cs
│ │ │ ├── IHandlePostCreated.cs
│ │ │ ├── IHandlePostPreDelete.cs
│ │ │ ├── IHandlePostPreUpdate.cs
│ │ │ ├── IHandlePostPublished.cs
│ │ │ ├── IHandlePostUnPublished.cs
│ │ │ └── IHandlePostUpdated.cs
│ │ ├── IAuthorNameResolver.cs
│ │ ├── IContentItem.cs
│ │ ├── IMarkdownProcessor.cs
│ │ ├── IMediaProcessor.cs
│ │ ├── IStorageInfo.cs
│ │ ├── ImageSizeResult.cs
│ │ ├── ModelExtensions.cs
│ │ ├── Page/
│ │ │ ├── DefaultPageRoutes.cs
│ │ │ ├── IPage.cs
│ │ │ ├── IPageCommands.cs
│ │ │ ├── IPageQueries.cs
│ │ │ ├── IPageRoutes.cs
│ │ │ ├── IPageService.cs
│ │ │ ├── IPageUrlResolver.cs
│ │ │ ├── NotImplementedPageService.cs
│ │ │ ├── Page.cs
│ │ │ ├── PageActionResult.cs
│ │ │ ├── PageEditOptions.cs
│ │ │ ├── PageMoveModel.cs
│ │ │ └── PageResource.cs
│ │ ├── Project/
│ │ │ ├── IProjectCommands.cs
│ │ │ ├── IProjectEmailService.cs
│ │ │ ├── IProjectQueries.cs
│ │ │ ├── IProjectSecurityResolver.cs
│ │ │ ├── IProjectService.cs
│ │ │ ├── IProjectSettings.cs
│ │ │ ├── IProjectSettingsResolver.cs
│ │ │ ├── ProjectSecurityResult.cs
│ │ │ └── ProjectSettings.cs
│ │ ├── ProjectConstants.cs
│ │ ├── README.md
│ │ ├── Templating/
│ │ │ ├── ContentTemplate.cs
│ │ │ ├── ContentTemplateConfig.cs
│ │ │ ├── CssFile.cs
│ │ │ ├── IContentTemplateProvider.cs
│ │ │ ├── IContentTemplateService.cs
│ │ │ ├── IModelSerializer.cs
│ │ │ └── ScriptFile.cs
│ │ ├── Versioning/
│ │ │ ├── ContentHistory.cs
│ │ │ ├── IContentHistoryCommands.cs
│ │ │ ├── IContentHistoryQueries.cs
│ │ │ └── SaveMode.cs
│ │ └── cloudscribe.SimpleContent.Models.csproj
│ ├── cloudscribe.SimpleContent.Security.SimpleAuth/
│ │ ├── ProjectSecurityResolver.cs
│ │ ├── README.md
│ │ └── cloudscribe.SimpleContent.Security.SimpleAuth.csproj
│ ├── cloudscribe.SimpleContent.Storage.EFCore.Common/
│ │ ├── ContentHistoryCommands.cs
│ │ ├── ContentHistoryQueries.cs
│ │ ├── ISimpleContentDbContext.cs
│ │ ├── ISimpleContentDbContextFactory.cs
│ │ ├── Models/
│ │ │ ├── PageCategory.cs
│ │ │ ├── PageComment.cs
│ │ │ ├── PageEntity.cs
│ │ │ ├── PageResourceEntity.cs
│ │ │ ├── PostCategory.cs
│ │ │ ├── PostComment.cs
│ │ │ └── PostEntity.cs
│ │ ├── PageCommands.cs
│ │ ├── PageQueries.cs
│ │ ├── PostCommands.cs
│ │ ├── PostQueries.cs
│ │ ├── ProjectCommands.cs
│ │ ├── ProjectQueries.cs
│ │ ├── README.md
│ │ ├── ServiceCollectionExtensions.cs
│ │ ├── SimpleContentDbContextBase.cs
│ │ ├── SimpleContentEFStartup.cs
│ │ └── cloudscribe.SimpleContent.Storage.EFCore.Common.csproj
│ ├── cloudscribe.SimpleContent.Storage.EFCore.MSSQL/
│ │ ├── BlankTriggerAddingConvention.cs
│ │ ├── Migrations/
│ │ │ ├── 20161118134254_Initial.Designer.cs
│ │ │ ├── 20161118134254_Initial.cs
│ │ │ ├── 20170108141354_AddMenuOnlyProp.Designer.cs
│ │ │ ├── 20170108141354_AddMenuOnlyProp.cs
│ │ │ ├── 20170301144919_changes20170301.Designer.cs
│ │ │ ├── 20170301144919_changes20170301.cs
│ │ │ ├── 20170308205858_changes20170308.Designer.cs
│ │ │ ├── 20170308205858_changes20170308.cs
│ │ │ ├── 20170309130025_changes20170309.Designer.cs
│ │ │ ├── 20170309130025_changes20170309.cs
│ │ │ ├── 20170310190036_changes20170310.Designer.cs
│ │ │ ├── 20170310190036_changes20170310.cs
│ │ │ ├── 20170418142644_changes20170417.Designer.cs
│ │ │ ├── 20170418142644_changes20170417.cs
│ │ │ ├── 20170514122601_changes20170514.Designer.cs
│ │ │ ├── 20170514122601_changes20170514.cs
│ │ │ ├── 20170724195300_changes20170724.Designer.cs
│ │ │ ├── 20170724195300_changes20170724.cs
│ │ │ ├── 20170801140952_changes20170731.Designer.cs
│ │ │ ├── 20170801140952_changes20170731.cs
│ │ │ ├── 20170801141349_changes20170801.Designer.cs
│ │ │ ├── 20170801141349_changes20170801.cs
│ │ │ ├── 20171005175655_changes20171005.Designer.cs
│ │ │ ├── 20171005175655_changes20171005.cs
│ │ │ ├── 20171016103054_changes20171016.Designer.cs
│ │ │ ├── 20171016103054_changes20171016.cs
│ │ │ ├── 20171118193027_changes20171118.Designer.cs
│ │ │ ├── 20171118193027_changes20171118.cs
│ │ │ ├── 20180103204131_changes20180103.Designer.cs
│ │ │ ├── 20180103204131_changes20180103.cs
│ │ │ ├── 20180206125759_simplecontentchanges20180206.Designer.cs
│ │ │ ├── 20180206125759_simplecontentchanges20180206.cs
│ │ │ ├── 20180223151637_simplecontent_changes20180223.Designer.cs
│ │ │ ├── 20180223151637_simplecontent_changes20180223.cs
│ │ │ ├── 20180315174300_simplecontent_changes20180315.Designer.cs
│ │ │ ├── 20180315174300_simplecontent_changes20180315.cs
│ │ │ ├── 20180704183112_simplecontent-20180704.Designer.cs
│ │ │ ├── 20180704183112_simplecontent-20180704.cs
│ │ │ ├── 20180705124637_simplecontent-20180705.Designer.cs
│ │ │ ├── 20180705124637_simplecontent-20180705.cs
│ │ │ ├── 20180710113039_simplecontent-20180710.Designer.cs
│ │ │ ├── 20180710113039_simplecontent-20180710.cs
│ │ │ ├── 20180820133027_simplecontent-20180819.Designer.cs
│ │ │ ├── 20180820133027_simplecontent-20180819.cs
│ │ │ ├── 20180908121615_simplecontent-20180908.Designer.cs
│ │ │ ├── 20180908121615_simplecontent-20180908.cs
│ │ │ ├── 20190210160956_simplecontent-20190210.Designer.cs
│ │ │ ├── 20190210160956_simplecontent-20190210.cs
│ │ │ ├── 20190213120620_simplecontent-20190212.Designer.cs
│ │ │ ├── 20190213120620_simplecontent-20190212.cs
│ │ │ ├── 20190213120720_simplecontent-20190213.Designer.cs
│ │ │ ├── 20190213120720_simplecontent-20190213.cs
│ │ │ ├── 20190304161740_simplecontent-20190304.Designer.cs
│ │ │ ├── 20190304161740_simplecontent-20190304.cs
│ │ │ ├── 20190312154938_simplecontent-20190312.Designer.cs
│ │ │ ├── 20190312154938_simplecontent-20190312.cs
│ │ │ ├── 20200723185114_AddPostShowCommentsSwitch.Designer.cs
│ │ │ ├── 20200723185114_AddPostShowCommentsSwitch.cs
│ │ │ ├── 20240918131738_ShowArchivedAndBlogCategories-20240918.Designer.cs
│ │ │ ├── 20240918131738_ShowArchivedAndBlogCategories-20240918.cs
│ │ │ ├── 20241001103518_SetShowArchiveAboutRelatedBlogToTrue020241001.Designer.cs
│ │ │ ├── 20241001103518_SetShowArchiveAboutRelatedBlogToTrue020241001.cs
│ │ │ ├── 20241108094100_simplecontent-20241108.Designer.cs
│ │ │ ├── 20241108094100_simplecontent-20241108.cs
│ │ │ ├── 20250423093650_user-script-20250423.Designer.cs
│ │ │ ├── 20250423093650_user-script-20250423.cs
│ │ │ ├── 20250818152838_remove-pageresource-script.Designer.cs
│ │ │ ├── 20250818152838_remove-pageresource-script.cs
│ │ │ └── SimpleContentDbContextModelSnapshot.cs
│ │ ├── README.md
│ │ ├── ServiceCollectionExtensions.cs
│ │ ├── SimpleContentDbContext.cs
│ │ ├── SimpleContentDbContextDesignTimeFactory.cs
│ │ ├── SimpleContentDbContextFactory.cs
│ │ ├── StorageInfo.cs
│ │ └── cloudscribe.SimpleContent.Storage.EFCore.MSSQL.csproj
│ ├── cloudscribe.SimpleContent.Storage.EFCore.MySQL/
│ │ ├── Migrations/
│ │ │ ├── 20161111152256_Initial.Designer.cs
│ │ │ ├── 20161111152256_Initial.cs
│ │ │ ├── 20170108141502_AddMenuOnlyProp.Designer.cs
│ │ │ ├── 20170108141502_AddMenuOnlyProp.cs
│ │ │ ├── 20170301145042_changes20170301.Designer.cs
│ │ │ ├── 20170301145042_changes20170301.cs
│ │ │ ├── 20170308205943_changes20170308.Designer.cs
│ │ │ ├── 20170308205943_changes20170308.cs
│ │ │ ├── 20170309130101_changes20170309.Designer.cs
│ │ │ ├── 20170309130101_changes20170309.cs
│ │ │ ├── 20170310190111_changes20170310.Designer.cs
│ │ │ ├── 20170310190111_changes20170310.cs
│ │ │ ├── 20170418142722_changes20170417.Designer.cs
│ │ │ ├── 20170418142722_changes20170417.cs
│ │ │ ├── 20170514135058_changes20170514.Designer.cs
│ │ │ ├── 20170514135058_changes20170514.cs
│ │ │ ├── 20170724195817_changes20170724.Designer.cs
│ │ │ ├── 20170724195817_changes20170724.cs
│ │ │ ├── 20170801190433_changes20170731.Designer.cs
│ │ │ ├── 20170801190433_changes20170731.cs
│ │ │ ├── 20170801190833_changes20170801.Designer.cs
│ │ │ ├── 20170801190833_changes20170801.cs
│ │ │ ├── 20170801191031_changes20170801b.Designer.cs
│ │ │ ├── 20170801191031_changes20170801b.cs
│ │ │ ├── 20171005175519_changes20171005.Designer.cs
│ │ │ ├── 20171005175519_changes20171005.cs
│ │ │ ├── 20171016103020_changes20171016.Designer.cs
│ │ │ ├── 20171016103020_changes20171016.cs
│ │ │ ├── 20171118201035_changes20171118.Designer.cs
│ │ │ ├── 20171118201035_changes20171118.cs
│ │ │ ├── 20180122125337_changes20180122.Designer.cs
│ │ │ ├── 20180122125337_changes20180122.cs
│ │ │ ├── 20180206125859_simplecontentchanges20180206.Designer.cs
│ │ │ ├── 20180206125859_simplecontentchanges20180206.cs
│ │ │ ├── 20180315174230_simplecontent_changes20180315.Designer.cs
│ │ │ ├── 20180315174230_simplecontent_changes20180315.cs
│ │ │ ├── 20180704183709_simplecontent-20180704.Designer.cs
│ │ │ ├── 20180704183709_simplecontent-20180704.cs
│ │ │ ├── 20180705124549_simplecontent-20180705.Designer.cs
│ │ │ ├── 20180705124549_simplecontent-20180705.cs
│ │ │ ├── 20180710112927_simplecontent-20180710.Designer.cs
│ │ │ ├── 20180710112927_simplecontent-20180710.cs
│ │ │ ├── 20180820133148_simplecontent-20180819.Designer.cs
│ │ │ ├── 20180820133148_simplecontent-20180819.cs
│ │ │ ├── 20180908121712_simplecontent-20180908.Designer.cs
│ │ │ ├── 20180908121712_simplecontent-20180908.cs
│ │ │ ├── 20190210161111_simplecontent-20190210.Designer.cs
│ │ │ ├── 20190210161111_simplecontent-20190210.cs
│ │ │ ├── 20190213120841_simplecontent-20190212.Designer.cs
│ │ │ ├── 20190213120841_simplecontent-20190212.cs
│ │ │ ├── 20190213120911_simplecontent-20190213.Designer.cs
│ │ │ ├── 20190213120911_simplecontent-20190213.cs
│ │ │ ├── 20190304161922_simplecontent-20190304.Designer.cs
│ │ │ ├── 20190304161922_simplecontent-20190304.cs
│ │ │ ├── 20190312155536_simplecontent-20190312.Designer.cs
│ │ │ ├── 20190312155536_simplecontent-20190312.cs
│ │ │ ├── 20200723185158_AddPostShowCommentsSwitch.Designer.cs
│ │ │ ├── 20200723185158_AddPostShowCommentsSwitch.cs
│ │ │ ├── 20240918132058_ShowArchivedAndBlogCategories-20240918.Designer.cs
│ │ │ ├── 20240918132058_ShowArchivedAndBlogCategories-20240918.cs
│ │ │ ├── 20241001104452_SetShowArchiveAboutRelatedBlogToTrue-20241001.Designer.cs
│ │ │ ├── 20241001104452_SetShowArchiveAboutRelatedBlogToTrue-20241001.cs
│ │ │ ├── 20241108094512_simplecontent-20241108.Designer.cs
│ │ │ ├── 20241108094512_simplecontent-20241108.cs
│ │ │ ├── 20250423093954_user-script-20250423.Designer.cs
│ │ │ ├── 20250423093954_user-script-20250423.cs
│ │ │ ├── 20250818153349_remove-pageresource-script.Designer.cs
│ │ │ ├── 20250818153349_remove-pageresource-script.cs
│ │ │ └── SimpleContentDbContextModelSnapshot.cs
│ │ ├── README.md
│ │ ├── ServiceCollectionExtensions.cs
│ │ ├── SimpleContentDbContext.cs
│ │ ├── SimpleContentDbContextDesignTimeFactory.cs
│ │ ├── SimpleContentDbContextFactory.cs
│ │ ├── StorageInfo.cs
│ │ └── cloudscribe.SimpleContent.Storage.EFCore.MySQL.csproj
│ ├── cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/
│ │ ├── DesignTimeFactory.cs
│ │ ├── Migrations/
│ │ │ ├── 20181009120713_simplecontent-initial.Designer.cs
│ │ │ ├── 20181009120713_simplecontent-initial.cs
│ │ │ ├── 20190210161250_simplecontent-20190210.Designer.cs
│ │ │ ├── 20190210161250_simplecontent-20190210.cs
│ │ │ ├── 20190213121205_simplecontent-20190212.Designer.cs
│ │ │ ├── 20190213121205_simplecontent-20190212.cs
│ │ │ ├── 20190213121232_simplecontent-20190213.Designer.cs
│ │ │ ├── 20190213121232_simplecontent-20190213.cs
│ │ │ ├── 20190304162045_simplecontent-20190304.Designer.cs
│ │ │ ├── 20190304162045_simplecontent-20190304.cs
│ │ │ ├── 20190312155722_simplecontent-20190312.Designer.cs
│ │ │ ├── 20190312155722_simplecontent-20190312.cs
│ │ │ ├── 20200723185336_AddPostShowCommentsSwitch.Designer.cs
│ │ │ ├── 20200723185336_AddPostShowCommentsSwitch.cs
│ │ │ ├── 20220420182545_simplecontent-20220420.Designer.cs
│ │ │ ├── 20220420182545_simplecontent-20220420.cs
│ │ │ ├── 20240918132310_ShowArchiveAndBlogCategories-20240918.Designer.cs
│ │ │ ├── 20240918132310_ShowArchiveAndBlogCategories-20240918.cs
│ │ │ ├── 20241001104647_SetShowArchiveAboutRelatedBlogToTrue-20241001.Designer.cs
│ │ │ ├── 20241001104647_SetShowArchiveAboutRelatedBlogToTrue-20241001.cs
│ │ │ ├── 20241108094644_simplecontent-20241108.Designer.cs
│ │ │ ├── 20241108094644_simplecontent-20241108.cs
│ │ │ ├── 20250423094338_user-script-20250423.Designer.cs
│ │ │ ├── 20250423094338_user-script-20250423.cs
│ │ │ ├── 20250818153117_remove-pageresource-script.Designer.cs
│ │ │ ├── 20250818153117_remove-pageresource-script.cs
│ │ │ └── SimpleContentDbContextModelSnapshot.cs
│ │ ├── README.md
│ │ ├── ServiceCollectionExtensions.cs
│ │ ├── SimpleContentDbContext.cs
│ │ ├── SimpleContentDbContextFactory.cs
│ │ ├── StorageInfo.cs
│ │ └── cloudscribe.SimpleContent.Storage.EFCore.PostgreSql.csproj
│ ├── cloudscribe.SimpleContent.Storage.EFCore.SQLite/
│ │ ├── DesignTimeFactory.cs
│ │ ├── Migrations/
│ │ │ ├── 20171222135806_Initial.Designer.cs
│ │ │ ├── 20171222135806_Initial.cs
│ │ │ ├── 20180122125428_changes20180122.Designer.cs
│ │ │ ├── 20180122125428_changes20180122.cs
│ │ │ ├── 20180206125939_simplecontentchanges20180206.Designer.cs
│ │ │ ├── 20180206125939_simplecontentchanges20180206.cs
│ │ │ ├── 20180315174340_simplecontent_changes20180315.Designer.cs
│ │ │ ├── 20180315174340_simplecontent_changes20180315.cs
│ │ │ ├── 20180704183840_simplecontent-20180704.Designer.cs
│ │ │ ├── 20180704183840_simplecontent-20180704.cs
│ │ │ ├── 20180705124759_simplecontent-20180705.Designer.cs
│ │ │ ├── 20180705124759_simplecontent-20180705.cs
│ │ │ ├── 20180710113211_simplecontent-20180710.Designer.cs
│ │ │ ├── 20180710113211_simplecontent-20180710.cs
│ │ │ ├── 20180820133304_simplecontent-20180819.Designer.cs
│ │ │ ├── 20180820133304_simplecontent-20180819.cs
│ │ │ ├── 20180908121905_simplecontent-20180908.Designer.cs
│ │ │ ├── 20180908121905_simplecontent-20180908.cs
│ │ │ ├── 20190210161404_simplecontent-20190210.Designer.cs
│ │ │ ├── 20190210161404_simplecontent-20190210.cs
│ │ │ ├── 20190213121319_simplecontent-20190212.Designer.cs
│ │ │ ├── 20190213121319_simplecontent-20190212.cs
│ │ │ ├── 20190304162117_simplecontent-20190304.Designer.cs
│ │ │ ├── 20190304162117_simplecontent-20190304.cs
│ │ │ ├── 20190312155759_simplecontent-20190312.Designer.cs
│ │ │ ├── 20190312155759_simplecontent-20190312.cs
│ │ │ ├── 20200723185404_AddPostShowCommentsSwitch.Designer.cs
│ │ │ ├── 20200723185404_AddPostShowCommentsSwitch.cs
│ │ │ ├── 20240920125304_ShowArchiveAndBlogCategories-20240920.Designer.cs
│ │ │ ├── 20240920125304_ShowArchiveAndBlogCategories-20240920.cs
│ │ │ ├── 20241001104814_SetShowArchiveAboutRelatedBlogToTrue-20241001.Designer.cs
│ │ │ ├── 20241001104814_SetShowArchiveAboutRelatedBlogToTrue-20241001.cs
│ │ │ ├── 20241108094744_simplecontent-20241108.Designer.cs
│ │ │ ├── 20241108094744_simplecontent-20241108.cs
│ │ │ ├── 20250815092116_simplecontent-userscript.Designer.cs
│ │ │ ├── 20250815092116_simplecontent-userscript.cs
│ │ │ ├── 20250818153135_remove-pageresource-script.Designer.cs
│ │ │ ├── 20250818153135_remove-pageresource-script.cs
│ │ │ └── SimpleContentDbContextModelSnapshot.cs
│ │ ├── README.md
│ │ ├── SimpleContentDbContext.cs
│ │ ├── SimpleContentDbContextFactory.cs
│ │ ├── StartupExtensions.cs
│ │ ├── StorageInfo.cs
│ │ └── cloudscribe.SimpleContent.Storage.EFCore.SQLite.csproj
│ ├── cloudscribe.SimpleContent.Storage.NoDb/
│ │ ├── ConfigProjectQueries.cs
│ │ ├── ContentHistoryCommands.cs
│ │ ├── ContentHistoryQueries.cs
│ │ ├── KeyGenerators/
│ │ │ ├── DefaultKeyGenerator.cs
│ │ │ ├── GuidKeyGenerator.cs
│ │ │ └── IKeyGenerator.cs
│ │ ├── PageCommands.cs
│ │ ├── PageCompositeSerializer.cs
│ │ ├── PageJsonSerializer.cs
│ │ ├── PageMarkdownSerializer.cs
│ │ ├── PageQueries.cs
│ │ ├── PageStoragePathResolver.cs
│ │ ├── PostCache.cs
│ │ ├── PostCacheOptions.cs
│ │ ├── PostCommands.cs
│ │ ├── PostCompositeSerializer.cs
│ │ ├── PostMarkdownSerializer.cs
│ │ ├── PostQueries.cs
│ │ ├── PostStoragePathResolver.cs
│ │ ├── PostXmlSerializer.cs
│ │ ├── ProjectCommands.cs
│ │ ├── ProjectQueries.cs
│ │ ├── README.md
│ │ ├── ServiceCollectionExtensions.cs
│ │ ├── StorageInfo.cs
│ │ ├── YamlHelper.cs
│ │ ├── YamlPage.cs
│ │ ├── YamlPost.cs
│ │ └── cloudscribe.SimpleContent.Storage.NoDb.csproj
│ ├── cloudscribe.SimpleContent.Syndication/
│ │ ├── README.md
│ │ ├── RssChannelProvider.cs
│ │ ├── ServiceCollectionExtensions.cs
│ │ ├── VersionProvider.cs
│ │ └── cloudscribe.SimpleContent.Syndication.csproj
│ ├── cloudscribe.SimpleContent.Web/
│ │ ├── ClaimsPrincipalExtensions.cs
│ │ ├── Controllers/
│ │ │ ├── BlogController.cs
│ │ │ ├── ContentHistoryController.cs
│ │ │ ├── PageController.cs
│ │ │ └── csscsrController.cs
│ │ ├── Design/
│ │ │ ├── DefaultSimpleContentThemeHelper.cs
│ │ │ ├── ISimpleContentThemeHelper.cs
│ │ │ ├── IconCssClasses.cs
│ │ │ ├── SimpleContentIconConfig.cs
│ │ │ ├── SimpleContentThemeConfig.cs
│ │ │ └── SimpleContentThemeSettings.cs
│ │ ├── README.md
│ │ ├── Routes.cs
│ │ ├── Routes2x.cs
│ │ ├── Services/
│ │ │ ├── Blog/
│ │ │ │ ├── BlogService.cs
│ │ │ │ ├── BlogSiteMapNodeService.cs
│ │ │ │ ├── BlogUrlResolver.cs
│ │ │ │ ├── CreateOrUpdatePostHandler.cs
│ │ │ │ ├── CreateOrUpdatePostRequest.cs
│ │ │ │ ├── InitTemplatedPostHandler.cs
│ │ │ │ ├── InitTemplatedPostRequest.cs
│ │ │ │ ├── NavigationBlogNodeFinder.cs
│ │ │ │ ├── PostEvents.cs
│ │ │ │ ├── TeaserCache.cs
│ │ │ │ ├── TeaserService.cs
│ │ │ │ ├── TeaserServiceDisabled.cs
│ │ │ │ ├── UpdateTemplatedPostHandler.cs
│ │ │ │ └── UpdateTemplatedPostRequest.cs
│ │ │ ├── ContentProcessor.cs
│ │ │ ├── CultureHelper.cs
│ │ │ ├── DefaultAuthorNameResolver.cs
│ │ │ ├── DefaultProjectSettingsResolver.cs
│ │ │ ├── DefaultTimeZoneIdResolver.cs
│ │ │ ├── FileSystemMediaProcessor.cs
│ │ │ ├── HttpRequestExtensions.cs
│ │ │ ├── IContentProcessor.cs
│ │ │ ├── JsonModelSerializer.cs
│ │ │ ├── MarkdownProcessor.cs
│ │ │ ├── Page/
│ │ │ │ ├── CreateOrUpdatePageHandler.cs
│ │ │ │ ├── CreateOrUpdatePageRequest.cs
│ │ │ │ ├── DraftPublishService.cs
│ │ │ │ ├── InitTemplatedPageHandler.cs
│ │ │ │ ├── InitTemplatedPageRequest.cs
│ │ │ │ ├── JsSecuritySanitizer.cs
│ │ │ │ ├── PageEditContext.cs
│ │ │ │ ├── PageEditContextRequest.cs
│ │ │ │ ├── PageEditContextRequestHandler.cs
│ │ │ │ ├── PageEvents.cs
│ │ │ │ ├── PageService.cs
│ │ │ │ ├── PageUrlResolver.cs
│ │ │ │ ├── PageViewContext.cs
│ │ │ │ ├── PageViewContextRequest.cs
│ │ │ │ ├── PageViewContextRequestHandler.cs
│ │ │ │ ├── PagesNavigationNodePermissionResolver.cs
│ │ │ │ ├── PagesNavigationTreeBuilder.cs
│ │ │ │ ├── UpdateTemplatedPageHandler.cs
│ │ │ │ └── UpdateTemplatedPageRequest.cs
│ │ │ ├── ProjectEmailService.cs
│ │ │ ├── ProjectEmailServiceFake.cs
│ │ │ ├── ProjectService.cs
│ │ │ ├── Resources.cs
│ │ │ └── Truncation/
│ │ │ ├── FixedLengthTruncator.cs
│ │ │ ├── FixedNumberOfCharactersTruncator.cs
│ │ │ ├── FixedNumberOfWordsTruncator.cs
│ │ │ ├── ITruncator.cs
│ │ │ ├── TruncateExtensions.cs
│ │ │ └── Truncator.cs
│ │ ├── StartupExtensions.cs
│ │ ├── TagHelpers/
│ │ │ ├── IRoleSelectorProperties.cs
│ │ │ ├── NotImplementedRoleSelectorProperties.cs
│ │ │ ├── RoleSelectorTagHelper.cs
│ │ │ └── SchemaOrgMetaTagHelper.cs
│ │ ├── Templating/
│ │ │ ├── ConfigContentTemplateProvider.cs
│ │ │ ├── ContentTemplateService.cs
│ │ │ ├── DefaultModelFormParser.cs
│ │ │ ├── DefaultTemplateModelValidator.cs
│ │ │ ├── IParseModelFromForm.cs
│ │ │ └── IValidateTemplateModel.cs
│ │ ├── VersionInfo.cs
│ │ ├── ViewComponents/
│ │ │ ├── FeaturedPostsViewComponent.cs
│ │ │ ├── RecentPostsViewComponent.cs
│ │ │ └── RelatedPostsViewComponent.cs
│ │ ├── ViewModels/
│ │ │ ├── AddPageResourceViewModel.cs
│ │ │ ├── BlogViewModel.cs
│ │ │ ├── CommentViewModel.cs
│ │ │ ├── ContentHistoryViewModel.cs
│ │ │ ├── NewContentViewModel.cs
│ │ │ ├── PageDevelopmentViewModel.cs
│ │ │ ├── PageEditViewModel.cs
│ │ │ ├── PageEditWithTemplateViewModel.cs
│ │ │ ├── PageTreeViewModel.cs
│ │ │ ├── PageViewModel.cs
│ │ │ ├── PostEditViewModel.cs
│ │ │ ├── PostEditWithTemplateViewModel.cs
│ │ │ ├── PostViewModel.cs
│ │ │ └── RecentPostsViewModel.cs
│ │ ├── cloudscribe.SimpleContent.Web.csproj
│ │ ├── css/
│ │ │ ├── blog-common.css
│ │ │ └── editing-side-menu.css
│ │ └── js/
│ │ ├── blog-comments.js
│ │ ├── edit-script.js
│ │ ├── pagetree.js
│ │ ├── sc-simple-gallery-init.js
│ │ └── unsaved-changes-warning.js
│ └── sourceDev.WebApp/
│ ├── Config/
│ │ ├── Authorization.cs
│ │ ├── CloudscribeFeatures.cs
│ │ ├── DataProtection.cs
│ │ ├── Localization.cs
│ │ ├── RoutingAndMvc copy.cs.old
│ │ └── RoutingAndMvc.cs
│ ├── Controllers/
│ │ └── HomeController.cs
│ ├── GlobalResources/
│ │ ├── CloudscribeCore.en-US.resx
│ │ ├── CloudscribeCore.fr-FR.resx
│ │ ├── CloudscribeCore.it-IT.resx
│ │ ├── CloudscribeIds4Resources.en-US.resx
│ │ ├── CloudscribeIds4Resources.fr-FR.resx
│ │ ├── MenuResources.fr-FR.resx
│ │ ├── MenuResources.it-IT.resx
│ │ ├── QueryToolResources.cy.resx
│ │ ├── QueryToolResources.de.resx
│ │ ├── QueryToolResources.en.resx
│ │ ├── QueryToolResources.fr.resx
│ │ ├── QueryToolResources.it.resx
│ │ ├── SimpleContent.cy.resx
│ │ ├── SimpleContent.en-US.resx
│ │ ├── SimpleContent.it-IT.resx
│ │ └── SimpleContent.resx
│ ├── Program.cs
│ ├── Properties/
│ │ └── launchSettings.json
│ ├── SharedThemes/
│ │ ├── _ViewImports.cshtml
│ │ ├── _ViewStart.cshtml
│ │ ├── cerulean/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── cosmo/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── cyborg/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── darkly/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── flatly/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── journal/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── litera/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── lumen/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── lux/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── materia/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── minty/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── pulse/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── sandstone/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── simplex/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── slate/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── solar/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── spacelab/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── superhero/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ ├── united/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── fontawesome-all.css
│ │ │ │ └── site.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── jquery.js
│ │ └── yeti/
│ │ ├── Shared/
│ │ │ └── _Layout.cshtml
│ │ └── wwwroot/
│ │ ├── css/
│ │ │ ├── _bootswatch.scss
│ │ │ ├── _variables.scss
│ │ │ ├── bootstrap.css
│ │ │ ├── fontawesome-all.css
│ │ │ └── site.css
│ │ └── js/
│ │ ├── bootstrap.bundle.js
│ │ ├── bootstrap.esm.js
│ │ └── jquery.js
│ ├── Startup.cs
│ ├── Views/
│ │ ├── Home/
│ │ │ ├── About.cshtml
│ │ │ ├── Contact.cshtml
│ │ │ └── Index.cshtml
│ │ ├── Shared/
│ │ │ ├── AlertsPartial.cshtml
│ │ │ ├── _CookieConsentPartial.cshtml
│ │ │ ├── _CookieConsentRevokePartial.cshtml
│ │ │ ├── _Layout.cshtml
│ │ │ └── _ValidationScriptsPartial.cshtml
│ │ ├── _ViewImports.cshtml
│ │ └── _ViewStart.cshtml
│ ├── app-scss/
│ │ ├── _bs5.scss
│ │ ├── _font-awesome.scss
│ │ ├── _icons.scss
│ │ ├── _jquery-smartmenu-bootstrap.scss
│ │ ├── _variables.scss
│ │ └── style.scss
│ ├── appsettings.json
│ ├── gulpfile.js
│ ├── navigation.xml
│ ├── nodb_storage/
│ │ └── projects/
│ │ ├── 5a6edd1f-6bb3-4e86-b434-4b33e309056a/
│ │ │ ├── page/
│ │ │ │ ├── 466fd5c6-72bb-4ff4-844a-ffa57b301eeb.json
│ │ │ │ ├── 9a102c56-ed87-464b-b1f6-2df43229f2be.json
│ │ │ │ └── efff35fa-4198-49af-a30f-638a801cc66f.json
│ │ │ ├── post/
│ │ │ │ ├── 2016/
│ │ │ │ │ └── 02/
│ │ │ │ │ └── c94b5121-358f-4e76-853a-4249a3b56392.xml
│ │ │ │ ├── 2017/
│ │ │ │ │ └── 09/
│ │ │ │ │ └── b87bf10b-dc9f-434b-af79-f0a0ecb4579b.xml
│ │ │ │ └── 2018/
│ │ │ │ └── 06/
│ │ │ │ └── its-been-a-long-time.xml
│ │ │ ├── projectsettings/
│ │ │ │ └── 5a6edd1f-6bb3-4e86-b434-4b33e309056a.json
│ │ │ ├── siterole/
│ │ │ │ ├── 805da7c0-0506-474e-9038-bb0b594a1728.json
│ │ │ │ ├── 8ded2209-f22f-4436-8207-386e0141a197.json
│ │ │ │ ├── 8ffb27e5-e7e0-4b4e-8a5d-8e23dfda689b.json
│ │ │ │ └── abb5e05a-2cf8-4ffd-9244-f02d14a7acbe.json
│ │ │ ├── sitesettings/
│ │ │ │ └── 5a6edd1f-6bb3-4e86-b434-4b33e309056a.json
│ │ │ ├── siteuser/
│ │ │ │ └── 006cf1b5-fa84-4a14-addc-7d0c24e84694.json
│ │ │ └── userrole/
│ │ │ └── 006cf1b5-fa84-4a14-addc-7d0c24e84694~805da7c0-0506-474e-9038-bb0b594a1728.json
│ │ ├── default/
│ │ │ ├── geocountry/
│ │ │ │ ├── 000da5ad-296a-4698-a21b-7d9c23feea14.json
│ │ │ │ ├── 0055471a-7993-42a1-897c-e5daf92e7c0e.json
│ │ │ │ ├── 01261d1a-74d6-4e02-86c5-bed1a192f67d.json
│ │ │ │ ├── 01ca292d-86ca-4fa5-9205-2b0a37e7353b.json
│ │ │ │ ├── 0416e2fc-c902-4452-8de9-29a2b453e685.json
│ │ │ │ ├── 045a6098-a4a5-457a-aef0-6cc57cc4a813.json
│ │ │ │ ├── 04724868-0448-48ef-840b-7d5da12495ec.json
│ │ │ │ ├── 056f6ed6-8f6d-4366-a755-2d6b8fb2b7ad.json
│ │ │ │ ├── 0589489d-a413-47c6-a90a-600520a8c52d.json
│ │ │ │ ├── 05b98ddc-f36b-4daf-9459-0717fde9b38e.json
│ │ │ │ ├── 061e11a1-33a2-42f0-8f8d-27e65fc47076.json
│ │ │ │ ├── 06bb7816-9ad4-47dc-b1cd-6e206afdfcca.json
│ │ │ │ ├── 0758cf79-94eb-4fa3-bd2c-8213034fb66c.json
│ │ │ │ ├── 0789d8a8-59d0-4d2f-8e26-5d917e55550c.json
│ │ │ │ ├── 07e1de2f-b11e-4f3b-a342-964f72d24371.json
│ │ │ │ ├── 085d9357-416b-48d6-8c9e-ec3e9e2582d0.json
│ │ │ │ ├── 0b182ee0-0cc0-4844-9cf0-ba15f47682e8.json
│ │ │ │ ├── 0bd0e1a0-ea93-4883-b0a0-9f3c8668c68c.json
│ │ │ │ ├── 0c356c5a-ca44-4301-8212-1826ccdadc42.json
│ │ │ │ ├── 0d074a4f-df7f-49f3-8375-d35bdc934ae0.json
│ │ │ │ ├── 10d4d58e-d0c2-4a4e-8fdd-b99d68c0bd22.json
│ │ │ │ ├── 10fdc2bb-f3a6-4a9d-a6e9-f4c781e8dbff.json
│ │ │ │ ├── 13faa99e-18f2-4e6f-b275-1e785b3383f3.json
│ │ │ │ ├── 14962add-4536-4854-bea3-a5a904932e1c.json
│ │ │ │ ├── 1583045c-5a80-4850-ac32-f177956fbd6a.json
│ │ │ │ ├── 167838f1-3fdd-4fb6-9268-4beafeecea4b.json
│ │ │ │ ├── 171a3e3e-cc78-4d4a-93ee-ace870dcb4c4.json
│ │ │ │ ├── 18160966-4eeb-4c6b-a526-5022042fe1e4.json
│ │ │ │ ├── 19f2da98-fefd-4b45-a260-8d9392c35a24.json
│ │ │ │ ├── 1a07c0b8-eb6d-4153-8cb1-be6e31feb566.json
│ │ │ │ ├── 1a6a2db1-d162-4fea-b660-b88fc25f558e.json
│ │ │ │ ├── 1b8fbde0-e709-4f7b-838d-b09def73de8f.json
│ │ │ │ ├── 1c7ff578-f079-4b5b-9993-2e0253b8cc14.json
│ │ │ │ ├── 1d0dae21-cd07-4022-b86a-7780c5ea0264.json
│ │ │ │ ├── 1d925a47-3902-462a-ba2e-c58e5cb24f2f.json
│ │ │ │ ├── 1e64910a-bce3-402c-9035-9cb1f820b195.json
│ │ │ │ ├── 1fcc4a89-0e8f-4fa2-b8d0-4ff5ec2277df.json
│ │ │ │ ├── 20a15881-215b-4c4c-9512-80e55abbb5ba.json
│ │ │ │ ├── 216d38d9-5eeb-42b7-8d2d-0757409dc5fb.json
│ │ │ │ ├── 2391213f-fcbf-479a-9ab9-af1d6deb9e11.json
│ │ │ │ ├── 23ba8dce-c784-4712-a6a0-0271f175d4e5.json
│ │ │ │ ├── 24045513-0cd8-4fb9-9cf6-78bf717f6a7e.json
│ │ │ │ ├── 25ed463d-21f5-412c-9bdb-6d76073ea790.json
│ │ │ │ ├── 267865b1-e8da-432d-be45-63933f18a40f.json
│ │ │ │ ├── 278ab63a-9c7e-4cad-9c99-984f8810d151.json
│ │ │ │ ├── 27a6a985-3a89-4309-ac40-d1f0a94646ce.json
│ │ │ │ ├── 28218639-6094-4aa2-ae88-9206630bb930.json
│ │ │ │ ├── 2afe5a06-2692-4b96-a385-f299e469d196.json
│ │ │ │ ├── 2bad76b2-20f3-4568-96bb-d60c39cfec37.json
│ │ │ │ ├── 2d5b53a8-8341-4da4-a296-e516fe5bb953.json
│ │ │ │ ├── 2dd32741-d7e9-49c9-b3d3-b58c4a913e60.json
│ │ │ │ ├── 2ebce3a9-660a-4c1d-ac8f-0e899b34a987.json
│ │ │ │ ├── 31f9b05e-e21d-41d5-8753-7cdd3bfa917b.json
│ │ │ │ ├── 3220b426-8251-4f95-85c8-3f7821ecc932.json
│ │ │ │ ├── 32eb5d85-1283-4586-bb16-b2b978b6537f.json
│ │ │ │ ├── 333ed823-0e19-4bcc-a74e-c6c66fe76834.json
│ │ │ │ ├── 356d4b6e-9ccb-4dc6-9c82-837433178275.json
│ │ │ │ ├── 3664546f-14f2-4561-9b77-67e8be6a9b1f.json
│ │ │ │ ├── 36f89c06-1509-42d2-aea6-7b4ce3bbc4f5.json
│ │ │ │ ├── 386812d8-e983-4d3a-b7f0-1fa0bbe5919f.json
│ │ │ │ ├── 38dc01c3-48d8-4ff8-a78a-2c35d4fbfa7b.json
│ │ │ │ ├── 391ebafd-7689-41e5-a785-df6a3280528d.json
│ │ │ │ ├── 392616f8-1b24-489f-8600-bae22ef478cc.json
│ │ │ │ ├── 3a733002-9223-4bd7-b2a9-62fa359c4cbd.json
│ │ │ │ ├── 3c864692-824c-4593-a739-d1309d4cd75e.json
│ │ │ │ ├── 3d3a06a0-0853-4d01-b273-af7b7cd7002c.json
│ │ │ │ ├── 3e57398a-0006-4e48-8cb4-f9f143dfcf22.json
│ │ │ │ ├── 3e747b23-543f-4ad0-80a9-5e421651f3b4.json
│ │ │ │ ├── 3f677556-1c9c-4315-9cfc-210a54f1f41d.json
│ │ │ │ ├── 3fbd7371-510a-45b4-813a-88373d19a5a4.json
│ │ │ │ ├── 4448e7b7-4e4d-4f19-b64d-e649d0f76cc1.json
│ │ │ │ ├── 44577b6a-6918-4508-ade4-b6c2adb25000.json
│ │ │ │ ├── 468dca85-484a-4529-8753-b26dbc316a71.json
│ │ │ │ ├── 48cd745a-4c47-4282-b60a-cb4b4639c6ee.json
│ │ │ │ ├── 48e5e925-6d98-4039-af6e-36d676059b85.json
│ │ │ │ ├── 4cc52ce2-0a6c-4564-8fe6-2eeb347a9429.json
│ │ │ │ ├── 4ce3df16-4d00-4f4d-a5d6-675020fa117d.json
│ │ │ │ ├── 4dbe5363-aad6-4019-b445-472d6e1e49bd.json
│ │ │ │ ├── 4dcd6ecf-af6c-4c76-95db-a0efac63f3de.json
│ │ │ │ ├── 4e6d9507-9fb0-4290-80af-e98aabaccedb.json
│ │ │ │ ├── 4eb5bcbe-13aa-45f0-afdf-77b379347509.json
│ │ │ │ ├── 4f660961-0aff-4539-9c0b-3bb2662b7a99.json
│ │ │ │ ├── 52316192-6328-4e45-a39c-37fc96cad138.json
│ │ │ │ ├── 54d227b4-1f3e-4f20-b16c-6428b77f5252.json
│ │ │ │ ├── 574e1b06-4332-4a1c-9b30-5daf2cce6b10.json
│ │ │ │ ├── 579fbee3-0be0-4884-b7c5-658c23c4e7d3.json
│ │ │ │ ├── 58c5c312-85d2-47a3-87a7-1549ec0ccd44.json
│ │ │ │ ├── 5aac5aa6-8bc0-4be5-a4de-76a5917dd2b2.json
│ │ │ │ ├── 5c3d7f0e-1900-4d73-acf6-69459d70d616.json
│ │ │ │ ├── 5dc77e2b-df39-475b-99da-c9756cabb5b6.json
│ │ │ │ ├── 5edc9ddf-242c-4533-9c38-cbf41709ef60.json
│ │ │ │ ├── 5f6df4ff-ef4b-43d9-98f5-d66ef9d27c67.json
│ │ │ │ ├── 60ce9ab1-945d-4fef-aba8-a1bb640165be.json
│ │ │ │ ├── 612c5585-4e93-4f4f-9735-ec9ab7f2aab9.json
│ │ │ │ ├── 61ef876b-9508-48e9-afbf-2d4386c38127.json
│ │ │ │ ├── 63404c30-266d-47b6-beda-fd252283e4e5.json
│ │ │ │ ├── 63aecd7a-9b3f-4732-bf8c-1702ad3a49dc.json
│ │ │ │ ├── 65223343-756c-4083-a20f-cf3cf98efbdc.json
│ │ │ │ ├── 6599493d-ead6-41ce-ae9c-2a47ea74c1a8.json
│ │ │ │ ├── 666699cd-7460-44b1-afa9-adc363778ff4.json
│ │ │ │ ├── 66c2bfb0-11c9-4191-8e91-1a0314726cc6.json
│ │ │ │ ├── 66d1d01b-a1a5-4634-9c15-4cd382a44147.json
│ │ │ │ ├── 66d7e3d5-f89c-42c5-82d5-9e6869ab9775.json
│ │ │ │ ├── 66f06c44-26ff-4015-b0ce-d241a39def8b.json
│ │ │ │ ├── 6717be36-81c1-4df3-a6f8-0f5eef45cec9.json
│ │ │ │ ├── 67497e93-c793-4134-915e-e04f5adae5d0.json
│ │ │ │ ├── 68abefdb-27f4-4cb8-840c-afee8510c249.json
│ │ │ │ ├── 6f101294-0433-492b-99f7-d59105a9970b.json
│ │ │ │ ├── 70a106ca-3a82-4e37-aea3-4a0bf8d50afa.json
│ │ │ │ ├── 70e9ef51-b838-461b-a1d8-2b32ee49855b.json
│ │ │ │ ├── 72bbbb80-ea6c-43c9-8ccd-99d26290f560.json
│ │ │ │ ├── 73355d89-317a-43a5-8ebb-fa60dd738c5b.json
│ │ │ │ ├── 7376c282-b5a3-4898-a342-c45f1c18b609.json
│ │ │ │ ├── 73fbc893-331d-4e67-9753-ab988ac005c7.json
│ │ │ │ ├── 74dfb95b-515d-4561-938d-169ac3782280.json
│ │ │ │ ├── 75f88974-01ac-47d7-bcee-6ce1f0c0d0fc.json
│ │ │ │ ├── 7756aa70-f22a-4f42-b8f4-e56ca9746064.json
│ │ │ │ ├── 776102b6-3d75-4570-8215-484367ea2a80.json
│ │ │ │ ├── 77bbfb67-9d1d-41f9-8626-b327aa90a584.json
│ │ │ │ ├── 77dce560-3d53-4483-963e-37d5f72e219e.json
│ │ │ │ ├── 78a78abb-31d9-4e2a-aea5-6744f27a6519.json
│ │ │ │ ├── 7b3b0b11-b3cf-4e69-b4c2-c414bb7bd78d.json
│ │ │ │ ├── 7b534a1e-e06d-4a2c-8ea6-85c128201834.json
│ │ │ │ ├── 7c0ba316-c6d9-48dc-919e-76e0ee0cf0fb.json
│ │ │ │ ├── 7c2c1e29-9e58-45eb-b512-5894496cd4dd.json
│ │ │ │ ├── 7e11e0dc-0a4e-4db9-9673-84600c8035c4.json
│ │ │ │ ├── 7e83ba7d-1c8f-465c-87d3-9bd86256031a.json
│ │ │ │ ├── 7f2e9d46-f5db-48bf-8e07-d6d12e77d857.json
│ │ │ │ ├── 7fe147d0-fd91-4119-83ad-4e7ebccdfd89.json
│ │ │ │ ├── 83c5561e-e4be-40b0-ae56-28a371680af8.json
│ │ │ │ ├── 844686ba-57c3-4c91-8b33-c1e1889a44c0.json
│ │ │ │ ├── 880f29a2-e51c-4016-ab18-ca09275673c3.json
│ │ │ │ ├── 88592f8b-1d15-4aa0-9115-4a28b67e1753.json
│ │ │ │ ├── 8af11a89-1487-4b21-aabf-6af57ead8474.json
│ │ │ │ ├── 8c982139-3609-48d3-b145-b5ceb484c414.json
│ │ │ │ ├── 8c9d27f2-fe77-4653-9696-b046d6536bfa.json
│ │ │ │ ├── 8f5124fa-cb2a-4cc9-87bb-bc155dc9791a.json
│ │ │ │ ├── 8fe152e5-b58c-4d3c-b143-358d5c54ba06.json
│ │ │ │ ├── 90255d75-af44-4b5d-bcfd-77cd27dce782.json
│ │ │ │ ├── 90684e6e-2b34-4f18-bbd1-f610f76179b7.json
│ │ │ │ ├── 9151aaf1-a75b-4a2c-bf2b-c823e2586db2.json
│ │ │ │ ├── 92a52065-32b0-42c6-a0aa-e8b8a341f79c.json
│ │ │ │ ├── 931ee133-2b60-4b82-8889-7c9855ca030a.json
│ │ │ │ ├── 96dbb697-3d7e-49bf-ac9b-0ea5cc014a6f.json
│ │ │ │ ├── 972b8208-c88d-47bb-9e79-1574fab34dfb.json
│ │ │ │ ├── 99c347f1-1427-4d41-bc12-945d38f92a94.json
│ │ │ │ ├── 99f791e7-7343-42e8-8c19-3c41068b5f8d.json
│ │ │ │ ├── 9ab1ee28-b81f-4b89-ae6b-3c6e5322e269.json
│ │ │ │ ├── 9b5a87f8-f024-4b76-b230-95913e474b57.json
│ │ │ │ ├── 9c035e40-a5dc-406b-a83a-559f940eb355.json
│ │ │ │ ├── 9ca410f0-eb75-4105-90a1-09fc8d2873b8.json
│ │ │ │ ├── 9d2c4779-1608-4d2a-b157-f5c4bb334eed.json
│ │ │ │ ├── 9dcf0a16-db7f-4b63-bad7-30f80bcd9901.json
│ │ │ │ ├── 9f9ac0e3-f689-4e98-b1bb-0f5f01f20fad.json
│ │ │ │ ├── a141ab0d-7e2c-48b1-9963-ba8685bcdfe3.json
│ │ │ │ ├── a4f1d01a-ebfc-4bd3-9521-be6d73f79fac.json
│ │ │ │ ├── a566ac8d-4a81-4a11-9cfb-979517440ce2.json
│ │ │ │ ├── a642097b-cc0a-430d-9425-9f8385fc6aa4.json
│ │ │ │ ├── a71d6727-61e7-4282-9fcb-526d1e7bc24f.json
│ │ │ │ ├── aa393972-1604-47d2-a533-81b41199ccf0.json
│ │ │ │ ├── aae223c8-6330-4641-b12b-f231866de4c6.json
│ │ │ │ ├── ae094b3e-a8b8-4e29-9853-3bd464efd247.json
│ │ │ │ ├── aea2f438-77bc-43f5-84fc-c781141a1d47.json
│ │ │ │ ├── aebd8175-fffe-4ee2-b208-c0bbbd049664.json
│ │ │ │ ├── b0fc7899-9c6f-4b80-838f-692a7a0aa83b.json
│ │ │ │ ├── b10c1efc-5341-4ec4-be12-a70dbb1c41cc.json
│ │ │ │ ├── b14e1447-0bca-4dd5-87e1-60c0b5d2988b.json
│ │ │ │ ├── b225d445-6884-4232-97e4-b33499982104.json
│ │ │ │ ├── b32a6fe3-f534-4c42-bd2d-8e2307476ba2.json
│ │ │ │ ├── b3732bd9-c3d6-4861-8dbe-eb2884557f34.json
│ │ │ │ ├── b47e2eec-62a0-440c-9f20-af9c5c75d57b.json
│ │ │ │ ├── b4a3405b-1293-4e98-9b11-777f666b25d4.json
│ │ │ │ ├── b50f640f-0ae9-4d63-acb2-2abd94b6271b.json
│ │ │ │ ├── b5133b5b-1687-447a-b88a-ef21f7599eda.json
│ │ │ │ ├── b5946ea8-b8a8-45b9-827d-86fa13e034cd.json
│ │ │ │ ├── b5ee8da7-5cc3-44f3-bd63-094cb93b4674.json
│ │ │ │ ├── b85aa3d6-d923-438c-aad7-2063f6bfbd3c.json
│ │ │ │ ├── baf7d87c-f09b-42cc-becd-49c2b3426226.json
│ │ │ │ ├── bb176526-f5c6-4871-9e75-cfeef799ad48.json
│ │ │ │ ├── bbaaa327-f8cc-43ae-8b0e-fc054eeda968.json
│ │ │ │ ├── bd2c67c0-26a4-46d5-b58a-f26dcfa8f34b.json
│ │ │ │ ├── bdb52e20-8f5c-4a6c-a8d5-2b4dc060cc13.json
│ │ │ │ ├── bec3af5b-d2d4-4dfb-aca5-cf87059469d4.json
│ │ │ │ ├── bf3b8cd7-679e-4546-81fc-85652653fe8f.json
│ │ │ │ ├── c03527d6-1936-4fdb-ab72-93ae7cb571ed.json
│ │ │ │ ├── c046ca0b-6dd9-459c-bf76-bd024363aaac.json
│ │ │ │ ├── c10d2e3a-af21-4bad-9b18-fbf3fb659eae.json
│ │ │ │ ├── c1ec594f-4b56-436d-aa28-ce3004de2803.json
│ │ │ │ ├── c1f503a3-c6b4-4eee-9fea-1f656f3b0825.json
│ │ │ │ ├── c23969d4-e195-4e53-bf7e-d3d041184325.json
│ │ │ │ ├── c43b2a01-933b-4021-896f-fcd27f3820da.json
│ │ │ │ ├── c47bf5ea-dfe4-4c9f-8bbc-067bd15fa6d2.json
│ │ │ │ ├── c63d51d8-b319-4a48-a6f1-81671b28ef07.json
│ │ │ │ ├── c7c9f73a-f4be-4c59-9278-524d6069d9dc.json
│ │ │ │ ├── c87d4cae-84ee-4336-bc57-69c4ea33a6bc.json
│ │ │ │ ├── cd85035d-3901-4d07-a254-90750cd57c90.json
│ │ │ │ ├── cda35e7b-29b0-4d34-b925-bf753d16af7e.json
│ │ │ │ ├── ce737f29-05a4-4a9a-b5dc-f1876f409334.json
│ │ │ │ ├── d42bd5b7-9f7e-4cb2-a295-e37471cdb1c2.json
│ │ │ │ ├── d61f7a82-85c5-45e1-a23c-60edae497459.json
│ │ │ │ ├── d7a96dd1-66f4-49b4-9085-53a12facac98.json
│ │ │ │ ├── d9510667-ae8b-4066-811c-08c6834efadf.json
│ │ │ │ ├── da19b4e1-dfea-43c9-ad8b-19e7036f0da4.json
│ │ │ │ ├── da8e07c2-7b3d-46af-bcc5-fef0a68b11d1.json
│ │ │ │ ├── dac6366f-295f-4ddc-b08c-5a521c70774d.json
│ │ │ │ ├── dd3d7458-318b-4c6b-891c-766a6d7ac265.json
│ │ │ │ ├── e0274040-ef54-4b6e-b572-af65a948d8c4.json
│ │ │ │ ├── e04ed9c1-face-4ee6-bade-7e522c0d210e.json
│ │ │ │ ├── e1aa65e1-d524-48ba-91ef-39570b9984d7.json
│ │ │ │ ├── e399424a-a86a-4c61-b92b-450106831b4c.json
│ │ │ │ ├── e55c6a3a-a5e9-4575-b24f-6da0fd4115cd.json
│ │ │ │ ├── e6471bf0-4692-4b7a-b104-94b12b30a284.json
│ │ │ │ ├── e691ac69-a14d-4cca-86ed-82978614283e.json
│ │ │ │ ├── e82e9dc1-7d00-47c0-9476-10eaf259967d.json
│ │ │ │ ├── e8f03eaa-ddd2-4ff2-8b66-da69ff074ccd.json
│ │ │ │ ├── eadabf25-0fa0-4e8e-aa1e-26d02eb70653.json
│ │ │ │ ├── eafeb25d-265a-4899-be24-bb0f4bf64480.json
│ │ │ │ ├── eb692475-f7af-402f-bb0d-cd420f670b88.json
│ │ │ │ ├── ec0d252b-7ba6-4ac4-ad41-6158a10e9ccf.json
│ │ │ │ ├── ec4d278f-0d96-478f-b023-0fdc7520c56c.json
│ │ │ │ ├── f015e45e-d93a-4d3a-a010-648ca65b47be.json
│ │ │ │ ├── f2f258d7-b650-45f9-a0e1-58687c08f4e4.json
│ │ │ │ ├── f321b513-8164-4882-bae0-f3657a1a98fb.json
│ │ │ │ ├── f3418c04-e3a8-4826-a41f-dcdbb5e4613e.json
│ │ │ │ ├── f3b7f86f-3165-4430-b263-87e1222b5bb1.json
│ │ │ │ ├── f5548ac2-958f-4b3d-8669-38b58735c517.json
│ │ │ │ ├── f63ce832-2c8d-4c43-a4d8-134fc4311098.json
│ │ │ │ ├── f6e6e602-468a-4dd7-ace4-3da5fefc165a.json
│ │ │ │ ├── f74a81fa-3d6a-415c-88fd-5458ed8c45c2.json
│ │ │ │ ├── f909c4c1-5fa9-4188-b848-ecd37e3dbf64.json
│ │ │ │ ├── f95a5bb1-59a5-4125-b803-a278b13b3d3b.json
│ │ │ │ ├── f9c72583-e1f8-4f13-bfb5-ddf68bcd656a.json
│ │ │ │ ├── fa26ae74-5404-4aaf-bd54-9b78266ccf03.json
│ │ │ │ ├── fbea6604-4e57-46b6-a3f2-e5de8514c7b0.json
│ │ │ │ ├── fbff9784-d58c-4c86-a7f2-2f8ce68d10e7.json
│ │ │ │ ├── fd70fe71-1429-4c6e-b399-90318ed9ddcb.json
│ │ │ │ ├── fdc8539a-82a7-4d29-bd5c-67fb9769a5ac.json
│ │ │ │ └── fe0e585e-fc54-4fa2-80c0-6fbfe5397e8c.json
│ │ │ └── geozone/
│ │ │ ├── 01ee03b8-3ea2-4de4-8656-ec10138f95ea.json
│ │ │ ├── 02be94a5-3c10-4f83-858b-812796e714ae.json
│ │ │ ├── 02c10c0f-3f09-4d0a-a6ef-ad40ae0a007b.json
│ │ │ ├── 043a0d4a-f1f5-430d-906d-ebd3d219485f.json
│ │ │ ├── 04e066be-2254-44c5-ab1f-41afe5267ce3.json
│ │ │ ├── 053fab61-2eff-446b-a29b-e9be91e195c9.json
│ │ │ ├── 05963d51-677f-4f3b-b210-5103a1036506.json
│ │ │ ├── 05974280-a62d-4fc3-be15-f16ab9e0f2d1.json
│ │ │ ├── 070dd166-bdc9-4732-8da0-48bd318d3d9e.json
│ │ │ ├── 076814fc-7422-40d5-80e0-b6978589ccdc.json
│ │ │ ├── 07c1030f-fa7e-4b1c-ba21-c6acd092b676.json
│ │ │ ├── 0971f796-ed73-46d7-9acf-38cd54ef7f54.json
│ │ │ ├── 09d1a93d-64ba-4205-9b93-81ba8eb8feca.json
│ │ │ ├── 0b525a39-59ce-40f3-91ca-8676a5404e23.json
│ │ │ ├── 0b6e3041-4368-4476-a697-a8bafc77a9e0.json
│ │ │ ├── 0db04a9e-352b-46d6-88bc-b5416b31756d.json
│ │ │ ├── 0df27c73-a612-491f-8b74-c4e384317fb8.json
│ │ │ ├── 0f115386-3220-49f1-b0f2-eaf6c78a2edd.json
│ │ │ ├── 10185a2b-6af7-4735-b1e3-8c46aac842fd.json
│ │ │ ├── 1026b90d-61be-4434-ab6d-ebfd92082dfe.json
│ │ │ ├── 10adee5d-3ec5-4c70-a0d0-9c399a785dd2.json
│ │ │ ├── 152f8dc5-5caa-44b7-89a8-6469042dc865.json
│ │ │ ├── 155ddc67-1e74-4791-995d-2eddb0658293.json
│ │ │ ├── 15b3d139-d927-43eb-8705-84df9122999f.json
│ │ │ ├── 15c350c0-058c-474d-a7c2-e3bd359b7895.json
│ │ │ ├── 19b7cd11-15b7-48c0-918d-73fe64eaae26.json
│ │ │ ├── 1aa7127a-8c53-4840-a2da-120f8c6607bd.json
│ │ │ ├── 1ac6bd1b-6b0c-4857-8243-bca4ba6eeb5e.json
│ │ │ ├── 1b4bdc9d-5d38-43c4-97aa-bad370a18fb4.json
│ │ │ ├── 1ba313de-0690-42db-97bb-ecba89aec4c7.json
│ │ │ ├── 1c5d3479-59fc-4c77-8d4e-cfc5c33422e7.json
│ │ │ ├── 1d049867-dc28-4ae1-b8a6-d44aecb4aa0b.json
│ │ │ ├── 1d4eabb2-d6f1-44ad-be62-52ef66e5b04b.json
│ │ │ ├── 1d91f9f6-0d62-479a-91a7-62d04fe1fdef.json
│ │ │ ├── 1d996ba4-1906-44c3-9c51-399fd382d278.json
│ │ │ ├── 1da58a0a-d0f7-48b1-9d48-102f65819773.json
│ │ │ ├── 1ddfca11-3848-4945-848c-ae5cb67e0e8b.json
│ │ │ ├── 1e1ba070-f44b-4dfb-8fc2-55c541f4943f.json
│ │ │ ├── 1f6d4673-67a2-4313-8837-569b6b671685.json
│ │ │ ├── 2022f303-2481-4b44-ba3d-d261b002c9c1.json
│ │ │ ├── 21287450-809e-4662-9742-9380159d3c90.json
│ │ │ ├── 2135d11f-4b63-46a5-b4c0-c62e130ce021.json
│ │ │ ├── 2189b5a8-167f-425d-949c-b3858179003e.json
│ │ │ ├── 2282df69-bcf5-49fe-a6eb-c8c9dec87a52.json
│ │ │ ├── 25459871-1694-4d08-9e7c-6d06f2edc7ae.json
│ │ │ ├── 2546d1ab-d4f5-4087-9b78-ea3badfafa12.json
│ │ │ ├── 27129dc0-1dd2-497f-b724-65d93e0050be.json
│ │ │ ├── 28061e80-5d1c-4d47-9e99-a72525b63f85.json
│ │ │ ├── 294f2e9c-49d1-4094-b558-dd2d4219b0e9.json
│ │ │ ├── 29f5ce90-8999-4a8e-91a5-fcf67b4fd8ab.json
│ │ │ ├── 2a20cf43-8d55-4732-b810-641886f2aed4.json
│ │ │ ├── 2a9b8ffe-91f5-4944-983d-37f52491dde6.json
│ │ │ ├── 2ab44c64-8419-45a1-a78f-83894d679ea9.json
│ │ │ ├── 2b0707ff-ef1a-498f-af98-facb2bd9f9c1.json
│ │ │ ├── 2b350062-eaf4-4f05-ab04-a8ccec353eb5.json
│ │ │ ├── 2d04de9b-525d-4623-a368-b29dd82dbbd0.json
│ │ │ ├── 2df783c9-e527-4105-819e-181af57e7cec.json
│ │ │ ├── 2dfe6223-5a2b-4dbc-b77c-9af80e973a20.json
│ │ │ ├── 2f20005e-7efc-4186-9144-6996b68ee6e3.json
│ │ │ ├── 3008a1b3-1188-4f4d-a2ef-b71b4f54233e.json
│ │ │ ├── 30a0e005-a523-4301-b924-8a4651f54e90.json
│ │ │ ├── 30fa3416-9fb1-43c1-999d-23a115218324.json
│ │ │ ├── 31265516-54af-4551-af1b-a0900faa3028.json
│ │ │ ├── 3249c886-3b1e-426a-8cd7-efc3922a964a.json
│ │ │ ├── 335c6ba3-37e5-4cca-b466-6927658ee92e.json
│ │ │ ├── 33cd3650-d80e-4157-b145-5d8d404628e4.json
│ │ │ ├── 34141474-337e-4e28-9180-23620558ba1d.json
│ │ │ ├── 347629b4-0c74-4e80-84c9-785fb45fb8d7.json
│ │ │ ├── 356bd975-9775-40d4-9678-fc49098f0a02.json
│ │ │ ├── 36b807a9-f496-430d-91bc-e8b1ac738736.json
│ │ │ ├── 36f88c25-7a6a-41d4-abac-ce05cd5ecfa1.json
│ │ │ ├── 37a4b316-853a-40b1-8203-b8c27d07917e.json
│ │ │ ├── 37cf9d44-030d-48be-97f0-5b3dab24f48f.json
│ │ │ ├── 38885962-564a-4686-9099-aa06570e00bd.json
│ │ │ ├── 388a4219-a89a-4bf0-960f-f58936288a0a.json
│ │ │ ├── 3933e77a-10f0-47e2-bb60-02de2ad724df.json
│ │ │ ├── 3c173b83-5149-4fec-b000-64a65832c455.json
│ │ │ ├── 3cb3ef7b-b000-41fa-bfd2-405f29bd646f.json
│ │ │ ├── 3d11ee42-f2d3-4c0d-81b9-44394a3a5409.json
│ │ │ ├── 3dab4424-efa5-409a-b96c-40daf5ee4b6c.json
│ │ │ ├── 3deda5e5-10bb-41cd-87ff-f91688b5b7ed.json
│ │ │ ├── 3e256c55-177f-459c-97cf-a77fb3729494.json
│ │ │ ├── 3ebf7ceb-8e24-40af-801c-feccd6d780ee.json
│ │ │ ├── 3ee49ff8-a56a-451a-a999-067915c8dd75.json
│ │ │ ├── 3f030f3b-0a0a-464e-b86e-9cd9e7a97b8b.json
│ │ │ ├── 3f05459f-5453-4aa1-9565-56b05080181d.json
│ │ │ ├── 3fcf9ee7-66bc-4cf6-aef3-d8c70948ecde.json
│ │ │ ├── 3ff66466-e523-492e-80c1-be19af171364.json
│ │ │ ├── 40f760f8-531f-4fea-9773-a513a7b58af8.json
│ │ │ ├── 4182cebc-5177-48ae-81f7-0c356139494b.json
│ │ │ ├── 41898a0b-a26c-44ce-9568-cfb75f1a2856.json
│ │ │ ├── 42e55b19-e977-4e00-830c-a1655cf8a072.json
│ │ │ ├── 4308f7f6-1f1d-4248-8995-3af588c55976.json
│ │ │ ├── 4344c1dd-e866-4683-9c90-22c9db369eae.json
│ │ │ ├── 43830082-5772-47f2-8216-8a48c872e337.json
│ │ │ ├── 440e892d-693c-493b-ba14-81919c3fb091.json
│ │ │ ├── 4445eb1e-0888-4b11-bf7b-0bb9a701936d.json
│ │ │ ├── 446cb079-fc60-478a-b8cb-d8b7ece3383d.json
│ │ │ ├── 46d3633d-8db5-4cc8-b42e-76dd3d48458d.json
│ │ │ ├── 46f46bef-20b8-4315-8bf1-f816bcb06b8e.json
│ │ │ ├── 473bbc63-7d8c-4587-945c-32f943091ff4.json
│ │ │ ├── 48184d25-0757-405d-934d-74d96f9745df.json
│ │ │ ├── 481f03a2-a3fe-41d9-a938-920720c1f446.json
│ │ │ ├── 48d12a99-bf3c-4fc7-86c5-c266424973eb.json
│ │ │ ├── 49025d80-75ee-4367-a06c-88427507642b.json
│ │ │ ├── 49ec50be-2751-443e-acf8-4c497633267d.json
│ │ │ ├── 49fffe3b-61f4-433d-b9bc-4044398283cf.json
│ │ │ ├── 4ab74396-fb33-4276-a518-ad05f28375d0.json
│ │ │ ├── 4bc9f931-f1ed-489f-99bc-59f42bd77eec.json
│ │ │ ├── 4bd4724c-2e5e-4df4-8b1c-3a679c30398f.json
│ │ │ ├── 4d238397-af29-4dbc-a349-7f650a5d8d67.json
│ │ │ ├── 4da1dac0-6c99-4a28-9d94-6a3df5507727.json
│ │ │ ├── 4e0bc53a-62fe-4dfc-9d1d-8b928e40b22e.json
│ │ │ ├── 4fa42d2c-b375-41d4-98ef-4d1442bccb1a.json
│ │ │ ├── 5006ff54-aa63-4e57-8414-30d51598be60.json
│ │ │ ├── 504d426d-cd02-446d-910c-5e4e36518879.json
│ │ │ ├── 507e831c-8d74-44bf-a251-496b945faed9.json
│ │ │ ├── 510c1204-13c5-4f0e-a746-5d1c5f843dfb.json
│ │ │ ├── 517f1242-fe90-4322-969e-353c5dbfd061.json
│ │ │ ├── 5241e330-b255-4ffa-833c-4964f13a0f7b.json
│ │ │ ├── 5399df4c-92d4-4c59-9bfb-7dc2a575a3d3.json
│ │ │ ├── 540233b4-a7c9-4e61-b54d-186763a2c65d.json
│ │ │ ├── 5469ca74-b57e-41c1-b3e6-5ab725e7f423.json
│ │ │ ├── 56259f37-af84-4215-ac73-259fa74c7c8d.json
│ │ │ ├── 56faba9f-b482-4421-87cc-1ee320da22cd.json
│ │ │ ├── 570fe94c-f226-4701-8c10-13dab9e59625.json
│ │ │ ├── 584cf595-c117-4d7e-9a0b-6dadd748eda8.json
│ │ │ ├── 58c1e282-cffa-4b49-b268-5356ba47aa19.json
│ │ │ ├── 59997515-5699-4571-8c69-b91328b65a3f.json
│ │ │ ├── 5bbd88d1-5023-43df-91f0-0fdd4f3878eb.json
│ │ │ ├── 5bd4a551-46ba-465a-b3f9-e15ed70a083f.json
│ │ │ ├── 60d9d569-7d0d-448f-b567-b4bb6c518140.json
│ │ │ ├── 611023eb-d4f2-4831-812e-c3984a125310.json
│ │ │ ├── 61952dad-6b28-4ba8-8580-5012a48accdc.json
│ │ │ ├── 61d891a3-e620-46d8-aada-6c9c1944340c.json
│ │ │ ├── 62202fa8-db98-40f9-9a26-446aee191cdd.json
│ │ │ ├── 6243f71b-d89b-4fdc-bc01-fcf46aeb1f29.json
│ │ │ ├── 628f9f88-55ef-4eef-bcb6-b866ec05838d.json
│ │ │ ├── 6352d079-20ea-42da-9377-7a09e6b764ae.json
│ │ │ ├── 63c099a8-5537-4c80-8654-a6128ee1b203.json
│ │ │ ├── 640cef26-1b10-4eac-a4ae-2f3491c38376.json
│ │ │ ├── 64d687fc-1908-4323-ab47-991ea4371186.json
│ │ │ ├── 66cc8a10-4dfb-4e8a-b5f0-b935d22a18f9.json
│ │ │ ├── 6743c28c-580d-4705-9b01-aa4380d65ce9.json
│ │ │ ├── 67e1633f-7405-451d-a772-eb4119c13b2c.json
│ │ │ ├── 67f56be1-88c8-474d-beb9-5e75cd3b6062.json
│ │ │ ├── 69a0494d-f8c3-434b-b8d4-c18ca5af5a4e.json
│ │ │ ├── 6ac7bea2-d4ba-4c48-b0d0-f784af781587.json
│ │ │ ├── 6c342c68-690a-4967-97c6-e6408ca1ea59.json
│ │ │ ├── 6cc5cf7e-df8f-4c30-8b75-3c7d7750a4c0.json
│ │ │ ├── 6e0eb9ac-76a2-434d-ae13-18dbe56212bf.json
│ │ │ ├── 6e54cc16-2a7d-4662-9f2b-1f7808318412.json
│ │ │ ├── 6e9d7937-3614-465e-8534-aa9a52f2c69b.json
│ │ │ ├── 71366f2a-e8b5-469f-a995-a0410dc33fd8.json
│ │ │ ├── 71682c43-e9c4-4d96-89e7-b06d47caa053.json
│ │ │ ├── 7190e292-34cf-49f3-8367-a5fafb749cd3.json
│ │ │ ├── 72c87c62-5656-4811-84cd-0c5ce4b7d19f.json
│ │ │ ├── 730f58d1-9129-4f25-a94c-1a0f2f373bcd.json
│ │ │ ├── 74062d11-8784-40bc-a95d-43b785ef8196.json
│ │ │ ├── 74532861-c62d-49d2-a8ed-e99f401ea768.json
│ │ │ ├── 7566d0a5-7394-4947-b4d7-a76a94746a23.json
│ │ │ ├── 7759c9e9-43bc-4570-a9bb-c578564a0951.json
│ │ │ ├── 7783e2f6-ded1-4703-aa2b-9fc844f28018.json
│ │ │ ├── 7786d5ce-a4f9-4cf0-82fd-25a7ebe39fc5.json
│ │ │ ├── 780d9ddb-38a2-47c8-a162-1231bea2e54d.json
│ │ │ ├── 79b41943-7a78-4cec-857d-1fb89d34d301.json
│ │ │ ├── 7a2ade5f-8353-4326-a46d-a42d31370d2c.json
│ │ │ ├── 7ace8e48-a0c5-48ee-b992-ae6eb7142408.json
│ │ │ ├── 7bf366d4-e9fc-4715-b7f9-1af37cc97386.json
│ │ │ ├── 7c68c309-608d-4089-adbc-f5289d67aa57.json
│ │ │ ├── 7ce436e6-349d-4f41-9053-5d7666662bb8.json
│ │ │ ├── 7dc834f4-c490-4986-bfbc-10dfc94e235c.json
│ │ │ ├── 7fcce82b-7828-40c9-a860-a21a787780c2.json
│ │ │ ├── 80717ff0-5218-4119-9128-cef942826edc.json
│ │ │ ├── 843c2659-d2bf-4af0-a0aa-ee8c268bede7.json
│ │ │ ├── 849c05f0-9448-4013-8566-88ff891d1f6e.json
│ │ │ ├── 84bf6b91-f9ff-4203-bad1-b5cf01239b77.json
│ │ │ ├── 8587e33e-25fc-4c19-b504-0c93c027dd93.json
│ │ │ ├── 85f3b62e-d3e7-4dec-b13b-dd494ad7b2cc.json
│ │ │ ├── 86bdbe5d-4085-4916-984c-94c191c48c67.json
│ │ │ ├── 87268168-cf40-442f-a526-06ddaeb1befd.json
│ │ │ ├── 87c1483d-e471-4166-87cb-44f9c4459aa8.json
│ │ │ ├── 87ceb5af-d6c0-4189-88f2-f0b38e2223a6.json
│ │ │ ├── 87e6c0a9-ac01-457a-b759-0c10fc63605d.json
│ │ │ ├── 883b8625-3130-4aac-b239-e57cf79c020b.json
│ │ │ ├── 8a4e0e4c-2727-42cd-86d6-ed27a6a6b74b.json
│ │ │ ├── 8a6db145-7ff4-4dfa-ac88-ea161924ea03.json
│ │ │ ├── 8b1fe477-db16-4dcb-92f0-dcbf2f1de8cb.json
│ │ │ ├── 8b3c48fd-9e7e-4653-a711-6dac6971cb32.json
│ │ │ ├── 8bc664a9-b12c-4f48-af34-a7f68384a76a.json
│ │ │ ├── 8bd9d2b9-67db-4fd6-90c7-52d0426e2007.json
│ │ │ ├── 8ee2f892-4ee6-44f5-938a-b553e885161a.json
│ │ │ ├── 8fab7d36-b885-46cd-9dc8-41e40c8683c4.json
│ │ │ ├── 8ff34a94-016c-4046-9c39-99f1887c4cb9.json
│ │ │ ├── 9013454d-1873-4be6-8fb1-b503ae1ed652.json
│ │ │ ├── 91bf4254-f418-404a-8cb2-5449d498991e.json
│ │ │ ├── 93215e73-4df8-4609-ac37-9da1b9bfe1c9.json
│ │ │ ├── 933cd9ef-c021-48ed-8260-6c013685970f.json
│ │ │ ├── 93cdd758-cc83-4f5a-94c0-9a3d13c7fa44.json
│ │ │ ├── 9451f5b9-3dbc-4c17-83b9-8966350d26ca.json
│ │ │ ├── 956b1071-d4c1-4676-be0c-e8834e47b674.json
│ │ │ ├── 958cf4dd-04be-48e3-93e1-3bea8b80edcf.json
│ │ │ ├── 95f80d75-23bc-4710-a106-bb98204059de.json
│ │ │ ├── 962d2729-cc0c-4052-abc9-c696307f3f26.json
│ │ │ ├── 968a394f-7764-4dfc-adb3-bf881644eddf.json
│ │ │ ├── 978ecaab-c462-4d66-80b6-a65eb83b86a5.json
│ │ │ ├── 981b0264-12a2-43be-b0c6-54e81c960138.json
│ │ │ ├── 98f9db63-a224-462b-8765-240953489cbb.json
│ │ │ ├── 993207ec-34a5-4896-88b0-3c43ccd11ab2.json
│ │ │ ├── 9958d966-7824-4dea-94a4-725fcf96f0d0.json
│ │ │ ├── 997fd24b-e5c6-474a-8c70-dbe6652b9267.json
│ │ │ ├── 9bc8834b-01ce-40a2-8be1-8e20c24d1f11.json
│ │ │ ├── 9c24162b-10de-47c1-b55f-0dcaaa24f86e.json
│ │ │ ├── 9c9951d7-68d2-438a-a702-4289cbc1720e.json
│ │ │ ├── 9d10e877-aaec-4913-bc99-b9815af76bf2.json
│ │ │ ├── 9d62722c-7fcc-432c-8587-c7953e440e18.json
│ │ │ ├── 9fb374c6-b87c-4096-a43c-d3d9ff2fd04c.json
│ │ │ ├── a0984f35-6af2-493d-be85-903d453193c2.json
│ │ │ ├── a1b99e38-1a7f-4b2f-927b-fcbdfccbc198.json
│ │ │ ├── a1eaba97-8f4f-4149-b1e3-25cb19b145b7.json
│ │ │ ├── a2ee590a-0b2e-4688-8c87-83011d5d2d3b.json
│ │ │ ├── a34df017-1334-4f1f-aab8-f650425f937d.json
│ │ │ ├── a39f8a9a-6586-41fb-9d5f-f84bd5161333.json
│ │ │ ├── a3a183ae-8117-46c0-93b7-3940c7e5694f.json
│ │ │ ├── a3cb237b-a940-418f-8368-fa6e35263e22.json
│ │ │ ├── a540b300-1715-4677-aa6a-9ee79e6fef2e.json
│ │ │ ├── a63a1dff-8f61-4159-9bc5-f005f8bcc19f.json
│ │ │ ├── a67bbf90-32f8-45d0-8c9a-1af135ea6225.json
│ │ │ ├── a6ed9918-44c7-4975-b680-95b4abcfb7ac.json
│ │ │ ├── a91bf8c6-0f2b-4ea8-8b98-3f70cd240bc2.json
│ │ │ ├── aa492ac6-e3b1-4408-b503-81480b57f008.json
│ │ │ ├── ab47df32-c57d-412b-b04d-67378c120ae7.json
│ │ │ ├── ac353aac-e2b7-4899-94f9-0bad7418ace9.json
│ │ │ ├── ad9e0130-b735-4be0-9338-99e20bb9410d.json
│ │ │ ├── ae1faeaf-d3f8-484e-b5a8-4548441ae758.json
│ │ │ ├── afa207c7-e69d-46f0-8242-2a67a06c42e3.json
│ │ │ ├── b009fd08-9cb2-4cd4-85cc-ed7c3e413f59.json
│ │ │ ├── b00a500e-73d6-4229-93cc-99a255266c86.json
│ │ │ ├── b0720a71-450b-4912-810e-871c8ef518e2.json
│ │ │ ├── b11a9785-c227-47ed-a14e-402a4b5360c7.json
│ │ │ ├── b299cad1-f84c-4aa7-b63a-2746b25baaaa.json
│ │ │ ├── b2b175a4-09ba-4e25-919c-9de52109bf4d.json
│ │ │ ├── b411f228-7677-4203-8696-df1a65e1651f.json
│ │ │ ├── b519aaaf-7e2c-421f-88b8-bf7853a8de4f.json
│ │ │ ├── b5812090-e7e1-492b-b9bc-04fec3ec9492.json
│ │ │ ├── b588e3f6-0078-454c-809a-480c575e5200.json
│ │ │ ├── b5ebabd8-7a23-4006-8044-5049fcf8a762.json
│ │ │ ├── b5feb85c-2dc0-4776-ba5c-8c2d1b688e89.json
│ │ │ ├── b716403c-6b15-488b-9cd0-f60b1aa1ba41.json
│ │ │ ├── b7500c17-30c7-4d87-bb47-bb35d8b1d3a6.json
│ │ │ ├── b7aed2ab-9e68-45d1-b535-fe6c1ec2d892.json
│ │ │ ├── b8029f8e-0a19-41a5-a2f0-cf8f0e1a69c6.json
│ │ │ ├── b8bf0b26-2f14-49e4-bfda-2d01eafa364b.json
│ │ │ ├── b9032648-36dc-4903-a5e6-30abd7519754.json
│ │ │ ├── b9093677-f26a-4b47-ad98-12caed313044.json
│ │ │ ├── b9720a4e-9ca0-4120-a7cf-f81138b1db63.json
│ │ │ ├── b9f64887-ed6d-4ddc-a142-7eb8898ca47e.json
│ │ │ ├── b9f911eb-f762-4da4-a81f-9bc967cd3c4b.json
│ │ │ ├── ba3c2043-cc3e-4225-b28e-bdb18c1a79ef.json
│ │ │ ├── ba5a801b-11c6-4408-b097-08aac22e739e.json
│ │ │ ├── baa695ab-a67a-409f-9f74-189ab212260c.json
│ │ │ ├── baf9725f-0d57-4c84-b018-d6d55d00a647.json
│ │ │ ├── bb090ce7-e0ca-4d0d-96eb-1b8e044fbca8.json
│ │ │ ├── bb607ecb-df31-427b-88bb-4f53959b3e0c.json
│ │ │ ├── bbd4704a-100a-4533-9ac9-37c228711dae.json
│ │ │ ├── bcea3dbc-debb-483e-85b9-a3e47ff68dbf.json
│ │ │ ├── bec44d04-ec8e-45a8-af09-21468ad9994f.json
│ │ │ ├── c1983f1d-353a-4042-b097-f0e8237f7fcd.json
│ │ │ ├── c26cfb75-5e44-4156-b660-a18a2a487fec.json
│ │ │ ├── c2ba8e9e-d370-4639-b168-c51057e2397e.json
│ │ │ ├── c2c00caa-3c72-4b5e-a07f-6f605926ef8e.json
│ │ │ ├── c3e70597-e8dd-4277-b7fc-e9b4206da073.json
│ │ │ ├── c427a41a-2fd0-4621-a7b1-090ee19f2eba.json
│ │ │ ├── c4fa438d-7130-4ae0-9f5d-fb533afc3139.json
│ │ │ ├── c5b34c76-5bf8-423f-a56f-985cc545ade8.json
│ │ │ ├── c5d128d8-353a-43dc-ba0a-d0c35e33de17.json
│ │ │ ├── c6cf9405-369e-41f4-a5e6-435469596c08.json
│ │ │ ├── c7330896-bd61-4282-b3bf-8713a28d3b50.json
│ │ │ ├── c7547571-7cda-427a-a8f2-259e9c587e84.json
│ │ │ ├── c7a02c1c-3076-43b3-9538-b513bab8a243.json
│ │ │ ├── ca553819-434a-408f-a2a4-92a7df9a2618.json
│ │ │ ├── ca5c0c52-e8ae-4ccd-9a45-565e352c4e2b.json
│ │ │ ├── ca7ce68d-465a-4c6e-ad75-6f9ade467f1e.json
│ │ │ ├── cb47cc62-5d26-4b17-b01f-25e5432f913c.json
│ │ │ ├── cb6d309d-ed20-48d0-8a5d-cd1d7fd1aad6.json
│ │ │ ├── cbc4121c-d62d-410c-b699-60b08b67711f.json
│ │ │ ├── cbd2718f-dd60-4151-a24d-437ff37605c6.json
│ │ │ ├── cc6b7a8e-4275-4e4e-8d62-34b5480f3995.json
│ │ │ ├── ccd7968c-7e80-4381-958b-ab72be0d6c35.json
│ │ │ ├── cd1579c0-c471-4095-867a-3e2af11e1f35.json
│ │ │ ├── cd98173e-507e-4a92-9eef-2de1d8e7a61f.json
│ │ │ ├── cf6e4b72-5f4f-4cc4-add3-eb0964892f7b.json
│ │ │ ├── cf75931a-d86f-43a0-8bd9-3942d5945ff7.json
│ │ │ ├── cfa0c0e5-b478-41bd-9029-49bd04c68871.json
│ │ │ ├── d0c79bd1-3688-4ed3-9b65-0cb24a1e8b43.json
│ │ │ ├── d1562c4d-3163-4e92-a361-05c2b9541772.json
│ │ │ ├── d20875cc-8572-453c-b5e0-53b49742debb.json
│ │ │ ├── d21905c5-6ee9-4072-9618-8447d9c4390e.json
│ │ │ ├── d21e2732-779d-406a-b1b9-cf44ff280dfe.json
│ │ │ ├── d226235d-0eb0-49c5-9e7a-55cc91c57100.json
│ │ │ ├── d256f9b7-8a33-4d04-9e19-95c12c967719.json
│ │ │ ├── d284266a-559d-42f3-a881-0136ea080c12.json
│ │ │ ├── d2880e75-e454-41a1-a73d-b2cff71197e2.json
│ │ │ ├── d2c0e797-781a-4d5d-a87c-5c16de2063cb.json
│ │ │ ├── d2e5ba25-d3d3-4113-b599-7456755da29e.json
│ │ │ ├── d318e32e-41b6-4ca6-905d-23714709f38f.json
│ │ │ ├── d46dc54c-28f5-4efe-a2bf-f5a814096736.json
│ │ │ ├── d4f8133e-5580-4a66-94dd-096d295723a0.json
│ │ │ ├── d52cedac-fcc2-4b9c-8f9e-09dcda91974c.json
│ │ │ ├── d55b4820-1ccd-44ad-8fbe-60b750abc2dd.json
│ │ │ ├── d698a1b6-68d7-480e-8137-421c684f251d.json
│ │ │ ├── d6ebad0e-4c95-4ec8-8d0e-2543acc6ad11.json
│ │ │ ├── d799b8c1-cac7-4933-aa6d-29acf7fd9d91.json
│ │ │ ├── d85b7129-d009-4747-9748-b116739ba660.json
│ │ │ ├── d892ea50-fccf-477a-bbdf-418e32dc5b98.json
│ │ │ ├── d8de090a-d496-42ea-a1e0-f457dab41f14.json
│ │ │ ├── d907d2a6-4caa-4687-898a-58bd5f978d03.json
│ │ │ ├── d96d5675-f3e2-42fe-b581-bd2367dc5012.json
│ │ │ ├── da7fc721-b375-4b51-afe1-1cb11328c7a8.json
│ │ │ ├── dad6586a-c504-4117-b116-4c80a0d1bf52.json
│ │ │ ├── dada271d-2656-4c17-b570-72bb748eb7dc.json
│ │ │ ├── db9ccccf-9e20-4224-88a7-067e5238960d.json
│ │ │ ├── dcc28b9c-8d2f-4569-ad0a-ad5717da3bb7.json
│ │ │ ├── dcc2ab57-48e6-4c14-bf14-e8d72c389863.json
│ │ │ ├── ddb0ca67-8635-4f40-a01d-06ccb266ef56.json
│ │ │ ├── dec30815-883a-45a2-9318-bfb111b383d6.json
│ │ │ ├── df964122-964e-4067-8386-45bcb548e39d.json
│ │ │ ├── e026bf9d-66a9-49bf-ba77-860b8c60871d.json
│ │ │ ├── e2a9ae21-97d6-4e4c-ac55-7fe75a298f6c.json
│ │ │ ├── e314e827-9b3a-4282-954f-b3f46ba92f07.json
│ │ │ ├── e3835a5d-1eca-4b9c-8c76-f52f4fc17553.json
│ │ │ ├── e4da2345-e459-4b6a-982a-337a8ae84e1b.json
│ │ │ ├── e5f56833-0ea5-40d8-acc0-0d0f48197a78.json
│ │ │ ├── e6322365-8cbc-4d69-9515-341c4b038781.json
│ │ │ ├── e663aef7-a697-4164-8ce4-141ac5cef6a9.json
│ │ │ ├── e6c0d492-93fc-4798-b6fa-0180f08204f6.json
│ │ │ ├── e7b4f7cb-cb36-4795-bfeb-dbd14bf2d520.json
│ │ │ ├── e83159f2-abe3-4f94-80de-a149bcf83428.json
│ │ │ ├── e8426499-9214-41c8-9717-44f2a4d6d14e.json
│ │ │ ├── e885e0ce-a268-4db0-aff2-a0205353e7e4.json
│ │ │ ├── ea553c01-9023-41ef-9068-849a054775f6.json
│ │ │ ├── ea73c8eb-cac2-4b28-bb9a-d923f32c17ef.json
│ │ │ ├── eb8efd2d-b9fa-4f99-9c49-9def24ccc5b5.json
│ │ │ ├── ebc9105f-1f6e-44be-b4f2-6d23908278d6.json
│ │ │ ├── ec2a6fed-19c2-4364-99cb-a59e8e0929fe.json
│ │ │ ├── edd15e05-a785-47d0-9936-8489858f1d89.json
│ │ │ ├── edfb040f-bb1e-47d7-8a16-14ac9d2f2f2f.json
│ │ │ ├── ef661a83-6355-44d2-aea4-89f7a7c7bd21.json
│ │ │ ├── f086728a-8077-4ced-8889-6d9a6e0ab147.json
│ │ │ ├── f1bbc9fc-4b0a-4065-843e-f428f1c20346.json
│ │ │ ├── f1c315b6-8573-4641-85b1-e9bf76502968.json
│ │ │ ├── f23bab33-cad9-4d9c-9ced-a66b3ff4969f.json
│ │ │ ├── f2e5ffce-bf2a-4f21-9696-fd948c07d6ae.json
│ │ │ ├── f44ac5b9-b998-46ef-b335-9fb42f97fe27.json
│ │ │ ├── f5315bf8-0dc2-49e7-abeb-0d7348492e6b.json
│ │ │ ├── f6a35c2c-ab10-4531-afea-2cdbdf40f5c1.json
│ │ │ ├── f6b97ed0-d090-4c68-a590-8fe743ee6d43.json
│ │ │ ├── f80a1747-3d1a-4758-b74a-ba2b54844b8b.json
│ │ │ ├── f894c6bf-2f76-4b42-85f4-b89581cee97f.json
│ │ │ ├── f92a3196-5c67-4fec-8877-78b28803b8d6.json
│ │ │ ├── f93295d1-7501-487d-93ad-6bd019e82cc2.json
│ │ │ ├── fb63f22d-2a32-484e-a3e8-41bbae13891b.json
│ │ │ ├── fbe69225-8cad-4e54-b4e5-03d6e404bc3f.json
│ │ │ ├── fca86c53-d823-41f7-a28d-2146f23e93ef.json
│ │ │ ├── fcd4595b-4b67-4b73-84c6-29706a57af38.json
│ │ │ ├── fd19f293-d0ca-43d2-8274-810eddf75d21.json
│ │ │ ├── fd809ed1-732f-4886-9bbc-f96984329b60.json
│ │ │ ├── fe29ffdb-5e1c-44bd-bb9a-2e2e43c1b206.json
│ │ │ ├── fea24d8c-ca6b-4643-8f8b-d5133ac40b18.json
│ │ │ ├── fea759da-4280-46a8-af3f-ec2cc03b436a.json
│ │ │ └── fec3a4f7-e3b5-44d3-bbde-62628489b459.json
│ │ ├── f83067b4-919d-4910-acd1-4b3b1c210ecf/
│ │ │ ├── page/
│ │ │ │ ├── 078eb367-e0d1-41ae-921a-e9d76e6a3e3f.json
│ │ │ │ ├── 0d890ed8-cfd5-4dcd-9fb5-885582fbb473.json
│ │ │ │ ├── 0fe39377-57a9-4d42-a9f1-22fc0c5ba18c.json
│ │ │ │ ├── 2a223bf8-9d41-4357-bf2c-673893b25d9f.json
│ │ │ │ ├── 2c945759-1c3b-43ac-bf4b-241082ee6166.json
│ │ │ │ ├── 65f4f88c-e9ea-4351-954a-f828b3f8229b.json
│ │ │ │ ├── 796036f8-ee91-4c3c-8c5a-bb339a704ae0.json
│ │ │ │ ├── 869cf304-6409-4b4d-880a-a6aa00c37075.json
│ │ │ │ ├── a490fed8-a889-4c1a-be5a-df0ca09e99c6.json
│ │ │ │ ├── ac4051c3-064a-4e7b-a2a3-c34f4c6ca7a6.json
│ │ │ │ ├── another-child.json
│ │ │ │ ├── first-draft.json
│ │ │ │ ├── level-4.json
│ │ │ │ ├── level-5.json
│ │ │ │ ├── level-6.json
│ │ │ │ ├── links.json
│ │ │ │ ├── list-of-links.json
│ │ │ │ ├── my-templated-page.json
│ │ │ │ ├── new-page-test.json
│ │ │ │ ├── ol-import.json
│ │ │ │ ├── our-staff.json
│ │ │ │ ├── react-demo.json
│ │ │ │ ├── template-page.json
│ │ │ │ ├── test-2.json
│ │ │ │ └── test-gallery.json
│ │ │ ├── post/
│ │ │ │ ├── 2016/
│ │ │ │ │ ├── 02/
│ │ │ │ │ │ └── 19c2a553-1e89-4aec-83ac-aede1931009a.xml
│ │ │ │ │ └── 03/
│ │ │ │ │ └── 19a9ee38-3f62-4096-8250-c0eeb7b51e07.xml
│ │ │ │ ├── 2017/
│ │ │ │ │ └── 11/
│ │ │ │ │ └── mark-diggety-down.md
│ │ │ │ ├── 2018/
│ │ │ │ │ ├── 07/
│ │ │ │ │ │ ├── fresh-draft.xml
│ │ │ │ │ │ └── second-draft.xml
│ │ │ │ │ └── 10/
│ │ │ │ │ ├── 380c6e5c-f455-4c16-9b4b-c2e6bcdbc8ad.xml
│ │ │ │ │ └── 95878177-d5a7-47ce-b8f9-a898bd252e0d.xml
│ │ │ │ ├── 2019/
│ │ │ │ │ ├── 02/
│ │ │ │ │ │ └── futurama-.xml
│ │ │ │ │ └── 08/
│ │ │ │ │ ├── beer-its-great.xml
│ │ │ │ │ └── template-post.xml
│ │ │ │ ├── 2020/
│ │ │ │ │ ├── 01/
│ │ │ │ │ │ ├── 3a700a91-0477-4edf-be76-06b5c43e5acf.xml
│ │ │ │ │ │ └── 5b01238e-9aa7-4f06-a2b5-6a769ecfbb8f.xml
│ │ │ │ │ └── 07/
│ │ │ │ │ └── mike-test.xml
│ │ │ │ └── 2023/
│ │ │ │ └── 10/
│ │ │ │ └── new-post.xml
│ │ │ ├── projectsettings/
│ │ │ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf.json
│ │ │ ├── siterole/
│ │ │ │ ├── 14a776fd-769e-4f56-a509-f343022dfd70.json
│ │ │ │ ├── 42883d65-a3cc-4cb8-9f70-b55189c6c663.json
│ │ │ │ ├── 4e98344d-8ef0-4de3-986e-7b5011c29c04.json
│ │ │ │ ├── 991131e8-561c-4aa9-a8d7-154526e2f2ab.json
│ │ │ │ └── e4967cee-7778-4c79-a1da-91b403045d7a.json
│ │ │ ├── sitesettings/
│ │ │ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf.json
│ │ │ ├── siteuser/
│ │ │ │ ├── 17595de8-d27a-4304-bded-76b61a16ad19.json
│ │ │ │ └── 32e43f7a-be53-47d1-8442-457865587eba.json
│ │ │ ├── userclaim/
│ │ │ │ └── 6221cb09-1c03-47c2-9cc0-92b03a1409a4.json
│ │ │ └── userrole/
│ │ │ ├── 17595de8-d27a-4304-bded-76b61a16ad19~4e98344d-8ef0-4de3-986e-7b5011c29c04.json
│ │ │ ├── 17595de8-d27a-4304-bded-76b61a16ad19~991131e8-561c-4aa9-a8d7-154526e2f2ab.json
│ │ │ └── 32e43f7a-be53-47d1-8442-457865587eba~4e98344d-8ef0-4de3-986e-7b5011c29c04.json
│ │ ├── f83067b4-919d-4910-acd1-4b3b1c210ecf~en-GB/
│ │ │ └── projectsettings/
│ │ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf~en-GB.json
│ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf~fr-FR/
│ │ ├── page/
│ │ │ └── home.json
│ │ ├── post/
│ │ │ └── 2019/
│ │ │ └── 03/
│ │ │ └── post-un.xml
│ │ └── projectsettings/
│ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf~fr-FR.json
│ ├── package.json
│ ├── readme.html
│ ├── sitefiles/
│ │ └── s1/
│ │ ├── themes/
│ │ │ ├── _ViewImports.cshtml
│ │ │ ├── _ViewStart.cshtml
│ │ │ └── custom1/
│ │ │ ├── Shared/
│ │ │ │ └── _Layout.cshtml
│ │ │ └── wwwroot/
│ │ │ ├── css/
│ │ │ │ └── style.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ └── bootstrap.esm.js
│ │ └── wwwroot/
│ │ └── manifest.json
│ ├── sourceDev.WebApp.csproj
│ └── wwwroot/
│ ├── css/
│ │ ├── bootstrap.css
│ │ ├── fontawesome-all.css
│ │ ├── ie11.css
│ │ └── site.css
│ ├── js/
│ │ ├── bootstrap.bundle.js
│ │ ├── bootstrap.esm.js
│ │ └── jquery.js
│ └── wlwmanifest.xml
├── test/
│ ├── cloudscribe.MetaWeblog.Tests/
│ │ ├── MetaWeblogRequestParserTests.cs
│ │ ├── cloudscribe.MetaWeblog.Tests.csproj
│ │ └── testfiles/
│ │ ├── delete-post-request.xml
│ │ ├── get-categories-request-1.xml
│ │ ├── get-recent-posts-request-1.xml
│ │ ├── get-user-blogs-request-1.xml
│ │ ├── new-media-request-1.xml
│ │ ├── new-post-request-1.xml
│ │ ├── wp-editPage-request1.xml
│ │ ├── wp-getPage-request1.xml
│ │ ├── wp-getPageList-request.xml
│ │ └── wp-newPage-request1.xml
│ └── cloudscribe.SimpleContent.Web.Tests/
│ ├── Services/
│ │ └── TeaserServiceTests.cs
│ ├── Web/
│ │ └── csscsrControllerShould.cs
│ └── cloudscribe.SimpleContent.Web.Tests.csproj
├── tools/
│ └── packages.config
├── update_version.ps1
└── xglobal.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
**/wwwroot/css/* linguist-vendored
**/wwwroot/js/* linguist-vendored
**/jquery.js linguist-vendored
**/bootstrap4.bundle.js linguist-vendore
**/jquery.min.js linguist-vendoredd
**/bootstrap4.bundle.min.js linguist-vendored
**/bootstrap4.css linguist-vendored
**/bootstrap4.min.css linguist-vendored
================================================
FILE: .github/workflows/cloudscribe-develop.yml
================================================
# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: cloudscribe-simplecontent-develop-nuget-build
on:
push:
branches: [ "develop" ]
workflow_dispatch:
# pull_request:
# branches: [ "develop" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Setup NuGet
run: dotnet nuget add source ${{ secrets.NUGET_SOURCE_URL }} -u ${{secrets.NUGET_USERNAME }} -p ${{ secrets.NUGET_PASSWORD }} --store-password-in-clear-text
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build -c Release
- name: Create NuGet package
run: dotnet pack -c Release
- name: Publish NuGet package
run: dotnet nuget push **/*.nupkg --source ${{ secrets.NUGET_SOURCE_URL }}
- name: Remote Repository Dispatch
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.GHB_PAT }}
repository: GreatHouseBarn/cloudscribe-testing
event-type: cs.SimpleContent
================================================
FILE: .github/workflows/cloudscribe-master.yml
================================================
# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: cloudscribe-simplecontent-master-nuget-build
on:
push:
branches: [ "master" ]
# pull_request:
# branches: [ "develop" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Setup NuGet
run: dotnet nuget add source ${{ secrets.NUGET_SOURCE_URL }} -u ${{secrets.NUGET_USERNAME }} -p ${{ secrets.NUGET_PASSWORD }} --store-password-in-clear-text
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build -c Release
================================================
FILE: .github/workflows/nuget-push-to-production.yml
================================================
name: NuGet Push to Production - ESDM Nexus and nuget.org
on:
workflow_dispatch:
jobs:
push-nuget:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Exit if the branch is not master
run: |
if [[ "${{ github.ref }}" != "refs/heads/master" ]]; then
echo "Branch is not master, exiting."
exit 1
fi
- name: Setup NuGet
run: dotnet nuget add source ${{ secrets.NUGET_SOURCE_URL }} -u ${{ secrets.NUGET_USERNAME }} -p ${{ secrets.NUGET_PASSWORD }} --store-password-in-clear-text --name esdm-nuget-testing
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build -c Release
- name: Create NuGet package
run: dotnet pack -c Release
- name: Auth to other Nexus repo
run: dotnet nuget add source ${{ secrets.ESDM_NUGET_HOSTED_URL }} -u ${{ secrets.NUGET_USERNAME }} -p ${{ secrets.NUGET_PASSWORD }} --store-password-in-clear-text --name esdm-nuget-hosted
- name: Find and Push NuGet packages to Nexus
run: |
PACKAGES=$(find . -name "*.nupkg" | grep -E "cloudscribe|sts\.")
if [ -z "$PACKAGES" ]; then
echo "No matching package found. Exiting."
exit 1
fi
echo "Found packages: $PACKAGES"
for PACKAGE in $PACKAGES; do
echo "Pushing $PACKAGE to Nexus"
dotnet nuget push "$PACKAGE" --source esdm-nuget-hosted --skip-duplicate || echo "WARNING - skipping duplicate package: $PACKAGE"
done
- name: Find and Push NuGet packages to nuget.org
env:
NUGET_ORG_API_KEY: ${{ secrets.NUGET_ORG_API_KEY }}
run: |
PACKAGES=$(find . -name "*.nupkg" | grep -E "cloudscribe|sts\.Common")
if [ -z "$PACKAGES" ]; then
echo "No matching package found. Exiting."
exit 1
fi
echo "Found packages: $PACKAGES"
for PACKAGE in $PACKAGES; do
echo "Pushing $PACKAGE to nuget.org"
dotnet nuget push "$PACKAGE" --api-key "$NUGET_ORG_API_KEY" --source "https://api.nuget.org/v3/index.json" --skip-duplicate || { echo "WARNING - failed to upload package: $PACKAGE"; exit 1; }
done
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
.vs/*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
x64/
build/
bld/
[Bb]in/
[Oo]bj/
_bin*
*SQLite.Interop.dll
/nuget/*/lib/net45/*.dll
/nuget/nupkgs/
/nuget/*/content/
node_modules
bower_components
artifacts/*
project.lock.json
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
#NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
*.ncrunch*
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# NuGet Packages Directory
packages/
## TODO: If the tool you use requires repositories.config uncomment the next line
#!packages/repositories.config
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
# This line needs to be after the ignore of the build folder (and the packages folder if the line above has been uncommented)
!packages/build/
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
src/cloudscribe-core/.vs/config/applicationhost.config
**/wwwroot/lib*
# src/example.WebApp/wwwroot/js/*
# src/example.WebApp/wwwroot/css/site.min.css
src/example.WebApp/appsettings.local.overrides.json
src/example.WebApp/cloudscribe_config/firebirddb/*
src/example.WebApp/cloudscribe_config/sqlitedb/*
src/example.WebApp/Themes/joeaudette/**
src/example.WebApp/nodb_storage/**
src/example.WebApp/wwwroot/s1/**
src/example.WebApp/wwwroot/s2/**
src/example.WebApp/wwwroot/s3/**
src/cloudscribe.Core.Repositories.EF/appsettings.local.overrides.json
src/cloudscribe.Logging.EF/appsettings.local.overrides.json
**/dp_keys/**
samples/simpleauthnodb/.vs/**
src/cloudscribe.SimpleContent.Storage.EF/appsettings.local.overrides.json
src/cloudscribe.SimpleContent.Storage.EFCore/appsettings.local.overrides.json
**/.vs/**
**/nodb_storage/projects/default/logitem/**
src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/appsettings.local.overrides.json
src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/appsettings.local.overrides.json
src/cloudscribe.SimpleContent.Storage.EFCore.pgsql/appsettings.local.overrides.json
src/example.WebApp/navigation.f83067b4-919d-4910-acd1-4b3b1c210ecf.xml
**/appsettings.dev.json
**/appsettings.Development.json
src/example.WebApp/xnavigation.f83067b4-919d-4910-acd1-4b3b1c210ecf.xml
# **/sitefiles/s1/wwwroot/**
**/sitefiles/s2/wwwroot/**
**/sitefiles/s3/wwwroot/**
src/sourceDev.WebApp/appsettings.Development.json
src/sourceDev.WebApp/nodb_storage/projects/**/userlocation/**
src/sourceDev.WebApp/nodb_storage/projects/**/contenthistory/**
src/sourceDev.WebApp/cloudscribe-dev.db
src/sourceDev.WebApp/cloudscribe4-dev.db
**/wwwroot/dist/**
**/app-react/**/*.js
**/app-react/**/*.map
**/app-react/*.js
**/app-react/*.map
# Cake
tools/**
!tools/packages.config
src/sourceDev.WebApp/sitefiles/s1/wwwroot/media/images/img_3646.jpg
src/sourceDev.WebApp/sitefiles/s1/wwwroot/media/images/img_3646-ws.jpg
src/sourceDev.WebApp/sitefiles/s1/wwwroot/media/testimages/**
src/sourceDev.WebApp/cloudscribe1-dev.db
siteuploadfiles/
================================================
FILE: .travis.yml
================================================
language: csharp
solution: cloudscribe.SimpleContent.sln
sudo: false
dist: xenial
mono: none
dotnet: 3.0.100
env:
global:
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
- DOTNET_CLI_TELEMETRY_OPTOUT: 1
os:
- linux
script:
- dotnet restore
- dotnet build -c Release
# - dotnet test -c Release ./test/cloudscribe.SimpleContent.Web.Tests/cloudscribe.SimpleContent.Web.Tests.csproj
branches:
only:
- master
================================================
FILE: .vscode/launch.json
================================================
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "web-dev",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceRoot}/src/sourceDev.WebApp/bin/Debug/net6.0/sourceDev.WebApp.dll",
"args": [],
"cwd": "${workspaceRoot}/src/sourceDev.WebApp",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart",
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}"
},
"osx": {
"command": "open"
},
"linux": {
"command": "xdg-open"
}
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "https://localhost:44348"
}
},
{
"name": "web-prod",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceRoot}/src/sourceDev.WebApp/bin/Debug/net6.0/sourceDev.WebApp.dll",
"args": [],
"cwd": "${workspaceRoot}/src/sourceDev.WebApp",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart",
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}"
},
"osx": {
"command": "open"
},
"linux": {
"command": "xdg-open"
}
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Production",
"ASPNETCORE_URLS": "https://localhost:44348"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}
================================================
FILE: .vscode/tasks.json
================================================
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"taskName": "build",
"command": "dotnet build",
"type": "shell",
"group": "build",
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile"
}
]
}
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to cloudscribe
This project is part of the cloudscribe set of projects which are all being managed under the same policies.
See the CONTRIBUTING.md file in the main cloudscribe repository:
https://github.com/cloudscribe/cloudscribe/blob/master/CONTRIBUTING.md
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: NuGet.Config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
================================================
FILE: README.md
================================================
# cloudscribe SimpleContent
A simple, yet flexible content and blog engine for ASP.NET Core that can work with or without a database. This project has borrowed significantly from [Mads Kristensen's MiniBlog](https://github.com/madskristensen/MiniBlog) both for ideas and code but re-implemented and extended in the newer ASP.NET Core framework. Get the big picture at [cloudscribe.com](https://www.cloudscribe.com/docs/introduction)
[Documentation](https://www.cloudscribe.com/docs/cloudscribe-simplecontent) - in progress so check back often. Also note that cloudscribe SimpleContent is being used to make the documentation on [cloudscribe.com](https://www.cloudscribe.com)
If you have questions, please visit our community forums https://www.cloudscribe.com/forum
### Build Status
<!--
| Windows | Linux |
| ------------- | ------------- |
| [](https://ci.appveyor.com/project/joeaudette/cloudscribe-simplecontent/branch/master) | [](https://travis-ci.org/cloudscribe/cloudscribe.SimpleContent) |
[](https://twitter.com/cloudscribeweb) [](https://twitter.com/cloudscribeweb)
-->
<!-- Making badges prettier: -->
[](https://github.com/cloudscribe/cloudscribe.SimpleContent/actions/workflows/cloudscribe-develop.yml)
[](https://github.com/cloudscribe/cloudscribe.SimpleContent/actions/workflows/cloudscribe-master.yml)
## Getting Started
See the [Introduction](https://www.cloudscribe.com/docs/introduction) to get the big picture and learn how to start new projects using our project template for Visual Studio or the .NET Core CLI
### Current Features
* Supports markdown and/or html editing, the [documentation on using markdown](https://www.cloudscribe.com/docs/using-markdown)
* Create and edit pages and blog posts right from the web browser or using [Open Live Writer](https://www.cloudscribe.com/docs/using-open-live-writer)
* Built in image browser, uploader, cropper, with configurable automatic resizing, and even drag/drop images right into the editor
* Built in Page Manager - for easy drag/drop arrangement of the page hierarchy
* For technical articles includes built in syntax highlighter using the [CodeSnippet plugin in CKEditor](https://www.cloudscribe.com/docs/customizing-the-editor)
* Pages can be protected by roles for private or premium content
* Schedule posts and pages to be published on a future date
* Supports blog urls with or without date segments
* Optional internal comment system for the blog. Built in support for Disqus and not difficult to integrate some other comment system
* RSS feed built in at /api/rss
* [Google Site Map](https://www.cloudscribe.com/docs/easy-google-sitemaps) built in at /api/sitemap
* Responsive [theming support](https://www.cloudscribe.com/docs/themes-and-web-design) based on Bootstrap
* Uses HTML 5 microdata to add semantic meaning and improve SEO
* Cross platform, runs on ASP.NET Core which works on Windows, Mac, and Linux
* Comments support - can easily be replaced by 3rd-party commenting systems such as Disqus
* No database required - can use [markdown](https://www.cloudscribe.com/docs/using-markdown) or json for pages and can use markdown or xml for blog posts via [NoDb](https://github.com/joeaudette/NoDb). The XML format is the same as MiniBlog and BlogEngine.NET and you should be able to [migrate from other platforms](https://www.cloudscribe.com/docs/migrating-content-from-other-platforms)
* You can optionally use a database - it currently supports SQLite, MS SQL, PostgresSql, and MySql using Entity Framework Core
* Can use either [cloudscribe Core](https://www.cloudscribe.com/docs/cloudscribe-core) or [cloudscribe SimpleAuth](https://github.com/joeaudette/cloudscribe.Web.SimpleAuth) for user accounts. (I recommend use cloudscribe Core even for small sites)
* Can also be [integrated with other authentication systems](https://www.cloudscribe.com/docs/integrating-with-other-authentication-systems)
* Supports [multiple tenants](https://www.cloudscribe.com/docs/multi-tenant-support) via integration using cloudscribe Core
* [Supports Localization](https://www.cloudscribe.com/docs/localization)
### Planned Features
* Support for using MongoDb - hoping for a community member to do that
* A Utility for importing the NoDb content into Entity Framework Core or MongoDb for easy migration
### Screenshots






## Start simple with no database and migrate to a database later if you need one
Not all web site projects need a database, there can be many benefits to not using one including performance, scalability, portability, lower cost, and ease of making backup copies of the entire site. It should even be possible to make a site that runs from a thumb drive.
In fact, for blogs, there has been kind of a trend towards using [Static Site Generators](https://www.staticgen.com/). This project is not a static site generator, but by storing content as json files it can get some of the same benefits and be used in a similar way to using a static site generator. For example you could host a localhost or intranet version of your site for producing and reviewing content, then when ready to publish you could commit the changes to a git repository and then do deployment from git to Azure for example, which would give you a highly scaleable site without the need or cost of a database and with a complete history of changes in git. Personal blogs and sites and small brochure sites are good candidates for not using a database.
Some sites do need a database though and we plan to support using both Entity Framework Core and MongoDb. If you need users to be able to register on your site or if you have more than a few editors, or for larger projects, you will typically want a database.
My plan is to usually build sites without a database (except for large projects), but implement a migration utility to be able to migrate any site from files to a database later if the needs of the project require it.
================================================
FILE: appveyor-cake-backup.yml
================================================
image: Visual Studio 2019
environment:
nodejs_version: "13.0.1"
install:
# Get the latest stable version of Node.js or io.js
- ps: Install-Product node $env:nodejs_version
- ps: $env:BuildNumber= $env:APPVEYOR_BUILD_NUMBER
# install modules
- npm install
init:
- git config --global core.autocrlf true
build_script:
- cmd: PowerShell -Version 2.0 .\build.ps1
test: off
================================================
FILE: appveyor.yml
================================================
image: Visual Studio 2022
environment:
nodejs_version: "13.0.1"
# Install scripts. (runs after repo cloning)
install:
# Get the latest stable version of Node.js or io.js
- ps: Install-Product node $env:nodejs_version
- ps: $env:BuildNumber= $env:APPVEYOR_BUILD_NUMBER
# install modules
- npm install
init:
- git config --global core.autocrlf true
build_script:
- dotnet restore
- dotnet build -c Release
test: off
================================================
FILE: build.cake
================================================
#tool nuget:?package=xunit.runner.console&version=2.3.0
#tool nuget:?package=xunit.runner.visualstudio&version=2.3.0
#load cake/paths.cake
var target = Argument("Target", "Default");
var configuration = Argument("Configuration", "Release");
Task("Restore")
.Does(() =>
{
NuGetRestore(Paths.SolutionFile);
});
Task("Build")
.IsDependentOn("Restore")
.Does(() =>
{
MSBuild(
Paths.SolutionFile,
settings => settings.SetConfiguration(configuration)
.WithTarget("Build"));
});
Task("Test")
.IsDependentOn("Build")
.Does(() =>
{
var projects = GetFiles("./test/**/*.csproj");
foreach(var project in projects)
{
DotNetCoreTool(
projectPath: project.FullPath,
command: "xunit",
arguments: $"-configuration {configuration} -diagnostics -stoponfail"
);
}
});
Task("Default")
.IsDependentOn("Build");
RunTarget(target);
================================================
FILE: build.ps1
================================================
##########################################################################
# This is the Cake bootstrapper script for PowerShell.
# This file was downloaded from https://github.com/cake-build/resources
# Feel free to change this file to fit your needs.
##########################################################################
<#
.SYNOPSIS
This is a Powershell script to bootstrap a Cake build.
.DESCRIPTION
This Powershell script will download NuGet if missing, restore NuGet tools (including Cake)
and execute your Cake build script with the parameters you provide.
.PARAMETER Script
The build script to execute.
.PARAMETER Target
The build script target to run.
.PARAMETER Configuration
The build configuration to use.
.PARAMETER Verbosity
Specifies the amount of information to be displayed.
.PARAMETER ShowDescription
Shows description about tasks.
.PARAMETER DryRun
Performs a dry run.
.PARAMETER Experimental
Uses the nightly builds of the Roslyn script engine.
.PARAMETER Mono
Uses the Mono Compiler rather than the Roslyn script engine.
.PARAMETER SkipToolPackageRestore
Skips restoring of packages.
.PARAMETER ScriptArgs
Remaining arguments are added here.
.LINK
https://cakebuild.net
#>
[CmdletBinding()]
Param(
[string]$Script = "build.cake",
[string]$Target,
[string]$Configuration,
[ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")]
[string]$Verbosity,
[switch]$ShowDescription,
[Alias("WhatIf", "Noop")]
[switch]$DryRun,
[switch]$Experimental,
[switch]$Mono,
[switch]$SkipToolPackageRestore,
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$ScriptArgs
)
[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null
function MD5HashFile([string] $filePath)
{
if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf))
{
return $null
}
[System.IO.Stream] $file = $null;
[System.Security.Cryptography.MD5] $md5 = $null;
try
{
$md5 = [System.Security.Cryptography.MD5]::Create()
$file = [System.IO.File]::OpenRead($filePath)
return [System.BitConverter]::ToString($md5.ComputeHash($file))
}
finally
{
if ($file -ne $null)
{
$file.Dispose()
}
}
}
function GetProxyEnabledWebClient
{
$wc = New-Object System.Net.WebClient
$proxy = [System.Net.WebRequest]::GetSystemWebProxy()
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
$wc.Proxy = $proxy
return $wc
}
Write-Host "Preparing to run build script..."
if(!$PSScriptRoot){
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
}
$TOOLS_DIR = Join-Path $PSScriptRoot "tools"
$ADDINS_DIR = Join-Path $TOOLS_DIR "Addins"
$MODULES_DIR = Join-Path $TOOLS_DIR "Modules"
$NUGET_EXE = Join-Path $TOOLS_DIR "nuget.exe"
$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe"
$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config"
$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum"
$ADDINS_PACKAGES_CONFIG = Join-Path $ADDINS_DIR "packages.config"
$MODULES_PACKAGES_CONFIG = Join-Path $MODULES_DIR "packages.config"
# Make sure tools folder exists
if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) {
Write-Verbose -Message "Creating tools directory..."
New-Item -Path $TOOLS_DIR -Type directory | out-null
}
# Make sure that packages.config exist.
if (!(Test-Path $PACKAGES_CONFIG)) {
Write-Verbose -Message "Downloading packages.config..."
try {
$wc = GetProxyEnabledWebClient
$wc.DownloadFile("https://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG) } catch {
Throw "Could not download packages.config."
}
}
# Try find NuGet.exe in path if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Trying to find nuget.exe in PATH..."
$existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_ -PathType Container) }
$NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1
if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) {
Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)."
$NUGET_EXE = $NUGET_EXE_IN_PATH.FullName
}
}
# Try download NuGet.exe if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Downloading NuGet.exe..."
try {
$wc = GetProxyEnabledWebClient
$wc.DownloadFile($NUGET_URL, $NUGET_EXE)
} catch {
Throw "Could not download NuGet.exe."
}
}
# Save nuget.exe path to environment to be available to child processed
$ENV:NUGET_EXE = $NUGET_EXE
# Restore tools from NuGet?
if(-Not $SkipToolPackageRestore.IsPresent) {
Push-Location
Set-Location $TOOLS_DIR
# Check for changes in packages.config and remove installed tools if true.
[string] $md5Hash = MD5HashFile($PACKAGES_CONFIG)
if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or
($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) {
Write-Verbose -Message "Missing or changed package.config hash..."
Remove-Item * -Recurse -Exclude packages.config,nuget.exe
}
Write-Verbose -Message "Restoring tools from NuGet..."
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`""
if ($LASTEXITCODE -ne 0) {
Throw "An error occurred while restoring NuGet tools."
}
else
{
$md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII"
}
Write-Verbose -Message ($NuGetOutput | out-string)
Pop-Location
}
# Restore addins from NuGet
if (Test-Path $ADDINS_PACKAGES_CONFIG) {
Push-Location
Set-Location $ADDINS_DIR
Write-Verbose -Message "Restoring addins from NuGet..."
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$ADDINS_DIR`""
if ($LASTEXITCODE -ne 0) {
Throw "An error occurred while restoring NuGet addins."
}
Write-Verbose -Message ($NuGetOutput | out-string)
Pop-Location
}
# Restore modules from NuGet
if (Test-Path $MODULES_PACKAGES_CONFIG) {
Push-Location
Set-Location $MODULES_DIR
Write-Verbose -Message "Restoring modules from NuGet..."
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$MODULES_DIR`""
if ($LASTEXITCODE -ne 0) {
Throw "An error occurred while restoring NuGet modules."
}
Write-Verbose -Message ($NuGetOutput | out-string)
Pop-Location
}
# Make sure that Cake has been installed.
if (!(Test-Path $CAKE_EXE)) {
Throw "Could not find Cake.exe at $CAKE_EXE"
}
# Build Cake arguments
$cakeArguments = @("$Script");
if ($Target) { $cakeArguments += "-target=$Target" }
if ($Configuration) { $cakeArguments += "-configuration=$Configuration" }
if ($Verbosity) { $cakeArguments += "-verbosity=$Verbosity" }
if ($ShowDescription) { $cakeArguments += "-showdescription" }
if ($DryRun) { $cakeArguments += "-dryrun" }
if ($Experimental) { $cakeArguments += "-experimental" }
if ($Mono) { $cakeArguments += "-mono" }
$cakeArguments += $ScriptArgs
# Start Cake
Write-Host "Running build script..."
&$CAKE_EXE $cakeArguments
exit $LASTEXITCODE
================================================
FILE: build.sh
================================================
#!/usr/bin/env bash
##########################################################################
# This is the Cake bootstrapper script for Linux and OS X.
# This file was downloaded from https://github.com/cake-build/resources
# Feel free to change this file to fit your needs.
##########################################################################
# Define directories.
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
TOOLS_DIR=$SCRIPT_DIR/tools
NUGET_EXE=$TOOLS_DIR/nuget.exe
CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe
PACKAGES_CONFIG=$TOOLS_DIR/packages.config
PACKAGES_CONFIG_MD5=$TOOLS_DIR/packages.config.md5sum
# Define md5sum or md5 depending on Linux/OSX
MD5_EXE=
if [[ "$(uname -s)" == "Darwin" ]]; then
MD5_EXE="md5 -r"
else
MD5_EXE="md5sum"
fi
# Define default arguments.
SCRIPT="build.cake"
TARGET="Default"
CONFIGURATION="Release"
VERBOSITY="verbose"
DRYRUN=
SHOW_VERSION=false
SCRIPT_ARGUMENTS=()
# Parse arguments.
for i in "$@"; do
case $1 in
-s|--script) SCRIPT="$2"; shift ;;
-t|--target) TARGET="$2"; shift ;;
-c|--configuration) CONFIGURATION="$2"; shift ;;
-v|--verbosity) VERBOSITY="$2"; shift ;;
-d|--dryrun) DRYRUN="-dryrun" ;;
--version) SHOW_VERSION=true ;;
--) shift; SCRIPT_ARGUMENTS+=("$@"); break ;;
*) SCRIPT_ARGUMENTS+=("$1") ;;
esac
shift
done
# Make sure the tools folder exist.
if [ ! -d "$TOOLS_DIR" ]; then
mkdir "$TOOLS_DIR"
fi
# Make sure that packages.config exist.
if [ ! -f "$TOOLS_DIR/packages.config" ]; then
echo "Downloading packages.config..."
curl -Lsfo "$TOOLS_DIR/packages.config" https://cakebuild.net/download/bootstrapper/packages
if [ $? -ne 0 ]; then
echo "An error occurred while downloading packages.config."
exit 1
fi
fi
# Download NuGet if it does not exist.
if [ ! -f "$NUGET_EXE" ]; then
echo "Downloading NuGet..."
curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
if [ $? -ne 0 ]; then
echo "An error occurred while downloading nuget.exe."
exit 1
fi
fi
# Restore tools from NuGet.
pushd "$TOOLS_DIR" >/dev/null
if [ ! -f $PACKAGES_CONFIG_MD5 ] || [ "$( cat $PACKAGES_CONFIG_MD5 | sed 's/\r$//' )" != "$( $MD5_EXE $PACKAGES_CONFIG | awk '{ print $1 }' )" ]; then
find . -type d ! -name . | xargs rm -rf
fi
mono "$NUGET_EXE" install -ExcludeVersion
if [ $? -ne 0 ]; then
echo "Could not restore NuGet packages."
exit 1
fi
$MD5_EXE $PACKAGES_CONFIG | awk '{ print $1 }' >| $PACKAGES_CONFIG_MD5
popd >/dev/null
# Make sure that Cake has been installed.
if [ ! -f "$CAKE_EXE" ]; then
echo "Could not find Cake.exe at '$CAKE_EXE'."
exit 1
fi
# Start Cake
if $SHOW_VERSION; then
exec mono "$CAKE_EXE" -version
else
exec mono "$CAKE_EXE" $SCRIPT -verbosity=$VERBOSITY -configuration=$CONFIGURATION -target=$TARGET $DRYRUN "${SCRIPT_ARGUMENTS[@]}"
fi
================================================
FILE: cake/paths.cake
================================================
public static class Paths
{
public static FilePath SolutionFile => "cloudscribe.SimpleContent.sln";
}
public static FilePath Combine(DirectoryPath directory, FilePath file)
{
return directory.CombineWithFilePath(file);
}
public DirectoryPath VS2017InstallDirectory(ICakeContext context)
{
var programFilesX86 = context.Environment.GetSpecialPath(SpecialPath.ProgramFilesX86);
string[] editions = { "Enterprise", "Professional", "Community" };
return editions
.Select(edition => Directory($"{programFilesX86}/Microsoft Visual Studio/2017/{edition}"))
.FirstOrDefault(path => context.DirectoryExists(path));
}
================================================
FILE: cloudscribe.SimpleContent.code-workspace
================================================
{
"folders": [
{
"path": "."
}
],
"settings": {}
}
================================================
FILE: cloudscribe.SimpleContent.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.12.35527.113
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{5243DE57-7C89-4208-8876-405E13605D16}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Models", "src\cloudscribe.SimpleContent.Models\cloudscribe.SimpleContent.Models.csproj", "{8D2014C8-8699-45A1-A47D-46B392678722}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Storage.NoDb", "src\cloudscribe.SimpleContent.Storage.NoDb\cloudscribe.SimpleContent.Storage.NoDb.csproj", "{325BCC90-44DF-40B7-ADAC-F2C0FCBE9525}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.MetaWeblog", "src\cloudscribe.SimpleContent.MetaWeblog\cloudscribe.SimpleContent.MetaWeblog.csproj", "{80EAB768-C2FC-4D61-A185-5A51314B8505}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Syndication", "src\cloudscribe.SimpleContent.Syndication\cloudscribe.SimpleContent.Syndication.csproj", "{CA2F82DA-6218-4520-AD21-6B7BC27414DD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Web", "src\cloudscribe.SimpleContent.Web\cloudscribe.SimpleContent.Web.csproj", "{93EB904A-E929-4B6E-B135-8A34DB2E8CD8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.Core.SimpleContent", "src\cloudscribe.Core.SimpleContent\cloudscribe.Core.SimpleContent.csproj", "{8027C4ED-4C67-4D8D-BC13-C14EE3C75097}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Storage.EFCore.Common", "src\cloudscribe.SimpleContent.Storage.EFCore.Common\cloudscribe.SimpleContent.Storage.EFCore.Common.csproj", "{AC7D7A37-B684-4F02-A725-1625E96DE2B8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Storage.EFCore.MSSQL", "src\cloudscribe.SimpleContent.Storage.EFCore.MSSQL\cloudscribe.SimpleContent.Storage.EFCore.MSSQL.csproj", "{B23CA546-4B27-472F-B962-7E2C981CE89C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Storage.EFCore.MySQL", "src\cloudscribe.SimpleContent.Storage.EFCore.MySQL\cloudscribe.SimpleContent.Storage.EFCore.MySQL.csproj", "{4713D574-918D-4129-A11C-2287AE4B119F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Storage.EFCore.SQLite", "src\cloudscribe.SimpleContent.Storage.EFCore.SQLite\cloudscribe.SimpleContent.Storage.EFCore.SQLite.csproj", "{CBB0F82E-371E-4F0C-8474-C1B7D30754A9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{E9B2D007-5701-4DEB-AC64-A435D71AA05F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Web.Tests", "test\cloudscribe.SimpleContent.Web.Tests\cloudscribe.SimpleContent.Web.Tests.csproj", "{16735222-D50E-4535-A9BD-85EE05AA5308}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.SimpleContent.Storage.EFCore.PostgreSql", "src\cloudscribe.SimpleContent.Storage.EFCore.PostgreSql\cloudscribe.SimpleContent.Storage.EFCore.PostgreSql.csproj", "{76A12B64-BF45-464F-8B23-1AEBF9427E9B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.ContentUtils", "src\cloudscribe.ContentUtils\cloudscribe.ContentUtils.csproj", "{4D932067-B9E4-4130-A23E-B56EEA89E9AC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.MetaWeblog", "src\cloudscribe.MetaWeblog\cloudscribe.MetaWeblog.csproj", "{9AA5C22E-496F-4E3B-8497-8B27F80BEF03}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "cloudscribe.MetaWeblog.Tests", "test\cloudscribe.MetaWeblog.Tests\cloudscribe.MetaWeblog.Tests.csproj", "{A375EB69-B5CE-481C-9D98-CC93A33972B8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5", "src\cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5\cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5.csproj", "{42E7F4FE-8929-4367-9F58-85BE67043D9E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cloudscribe.SimpleContent.CompiledViews.Bootstrap5", "src\cloudscribe.SimpleContent.CompiledViews.Bootstrap5\cloudscribe.SimpleContent.CompiledViews.Bootstrap5.csproj", "{9B622839-BC4E-4424-B153-63799EB47600}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cloudscribe.SimpleContent.ContentTemplates.Bootstrap5", "src\cloudscribe.SimpleContent.ContentTemplates.Bootstrap5\cloudscribe.SimpleContent.ContentTemplates.Bootstrap5.csproj", "{FFE90C6E-D297-4863-B7DA-41F145270ACA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sourceDev.WebApp", "src\sourceDev.WebApp\sourceDev.WebApp.csproj", "{F34428AB-AA2E-4FA6-8C9B-23B7C5206EB4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8D2014C8-8699-45A1-A47D-46B392678722}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D2014C8-8699-45A1-A47D-46B392678722}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D2014C8-8699-45A1-A47D-46B392678722}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D2014C8-8699-45A1-A47D-46B392678722}.Release|Any CPU.Build.0 = Release|Any CPU
{325BCC90-44DF-40B7-ADAC-F2C0FCBE9525}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{325BCC90-44DF-40B7-ADAC-F2C0FCBE9525}.Debug|Any CPU.Build.0 = Debug|Any CPU
{325BCC90-44DF-40B7-ADAC-F2C0FCBE9525}.Release|Any CPU.ActiveCfg = Release|Any CPU
{325BCC90-44DF-40B7-ADAC-F2C0FCBE9525}.Release|Any CPU.Build.0 = Release|Any CPU
{80EAB768-C2FC-4D61-A185-5A51314B8505}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80EAB768-C2FC-4D61-A185-5A51314B8505}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80EAB768-C2FC-4D61-A185-5A51314B8505}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80EAB768-C2FC-4D61-A185-5A51314B8505}.Release|Any CPU.Build.0 = Release|Any CPU
{CA2F82DA-6218-4520-AD21-6B7BC27414DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA2F82DA-6218-4520-AD21-6B7BC27414DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA2F82DA-6218-4520-AD21-6B7BC27414DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA2F82DA-6218-4520-AD21-6B7BC27414DD}.Release|Any CPU.Build.0 = Release|Any CPU
{93EB904A-E929-4B6E-B135-8A34DB2E8CD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{93EB904A-E929-4B6E-B135-8A34DB2E8CD8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{93EB904A-E929-4B6E-B135-8A34DB2E8CD8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93EB904A-E929-4B6E-B135-8A34DB2E8CD8}.Release|Any CPU.Build.0 = Release|Any CPU
{8027C4ED-4C67-4D8D-BC13-C14EE3C75097}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8027C4ED-4C67-4D8D-BC13-C14EE3C75097}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8027C4ED-4C67-4D8D-BC13-C14EE3C75097}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8027C4ED-4C67-4D8D-BC13-C14EE3C75097}.Release|Any CPU.Build.0 = Release|Any CPU
{AC7D7A37-B684-4F02-A725-1625E96DE2B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC7D7A37-B684-4F02-A725-1625E96DE2B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC7D7A37-B684-4F02-A725-1625E96DE2B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC7D7A37-B684-4F02-A725-1625E96DE2B8}.Release|Any CPU.Build.0 = Release|Any CPU
{B23CA546-4B27-472F-B962-7E2C981CE89C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B23CA546-4B27-472F-B962-7E2C981CE89C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B23CA546-4B27-472F-B962-7E2C981CE89C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B23CA546-4B27-472F-B962-7E2C981CE89C}.Release|Any CPU.Build.0 = Release|Any CPU
{4713D574-918D-4129-A11C-2287AE4B119F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4713D574-918D-4129-A11C-2287AE4B119F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4713D574-918D-4129-A11C-2287AE4B119F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4713D574-918D-4129-A11C-2287AE4B119F}.Release|Any CPU.Build.0 = Release|Any CPU
{CBB0F82E-371E-4F0C-8474-C1B7D30754A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CBB0F82E-371E-4F0C-8474-C1B7D30754A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CBB0F82E-371E-4F0C-8474-C1B7D30754A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CBB0F82E-371E-4F0C-8474-C1B7D30754A9}.Release|Any CPU.Build.0 = Release|Any CPU
{16735222-D50E-4535-A9BD-85EE05AA5308}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{16735222-D50E-4535-A9BD-85EE05AA5308}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16735222-D50E-4535-A9BD-85EE05AA5308}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16735222-D50E-4535-A9BD-85EE05AA5308}.Release|Any CPU.Build.0 = Release|Any CPU
{76A12B64-BF45-464F-8B23-1AEBF9427E9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{76A12B64-BF45-464F-8B23-1AEBF9427E9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{76A12B64-BF45-464F-8B23-1AEBF9427E9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{76A12B64-BF45-464F-8B23-1AEBF9427E9B}.Release|Any CPU.Build.0 = Release|Any CPU
{4D932067-B9E4-4130-A23E-B56EEA89E9AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D932067-B9E4-4130-A23E-B56EEA89E9AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4D932067-B9E4-4130-A23E-B56EEA89E9AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4D932067-B9E4-4130-A23E-B56EEA89E9AC}.Release|Any CPU.Build.0 = Release|Any CPU
{9AA5C22E-496F-4E3B-8497-8B27F80BEF03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9AA5C22E-496F-4E3B-8497-8B27F80BEF03}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9AA5C22E-496F-4E3B-8497-8B27F80BEF03}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9AA5C22E-496F-4E3B-8497-8B27F80BEF03}.Release|Any CPU.Build.0 = Release|Any CPU
{A375EB69-B5CE-481C-9D98-CC93A33972B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A375EB69-B5CE-481C-9D98-CC93A33972B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A375EB69-B5CE-481C-9D98-CC93A33972B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A375EB69-B5CE-481C-9D98-CC93A33972B8}.Release|Any CPU.Build.0 = Release|Any CPU
{42E7F4FE-8929-4367-9F58-85BE67043D9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{42E7F4FE-8929-4367-9F58-85BE67043D9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{42E7F4FE-8929-4367-9F58-85BE67043D9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{42E7F4FE-8929-4367-9F58-85BE67043D9E}.Release|Any CPU.Build.0 = Release|Any CPU
{9B622839-BC4E-4424-B153-63799EB47600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9B622839-BC4E-4424-B153-63799EB47600}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9B622839-BC4E-4424-B153-63799EB47600}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9B622839-BC4E-4424-B153-63799EB47600}.Release|Any CPU.Build.0 = Release|Any CPU
{FFE90C6E-D297-4863-B7DA-41F145270ACA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFE90C6E-D297-4863-B7DA-41F145270ACA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFE90C6E-D297-4863-B7DA-41F145270ACA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFE90C6E-D297-4863-B7DA-41F145270ACA}.Release|Any CPU.Build.0 = Release|Any CPU
{F34428AB-AA2E-4FA6-8C9B-23B7C5206EB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F34428AB-AA2E-4FA6-8C9B-23B7C5206EB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F34428AB-AA2E-4FA6-8C9B-23B7C5206EB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F34428AB-AA2E-4FA6-8C9B-23B7C5206EB4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{8D2014C8-8699-45A1-A47D-46B392678722} = {5243DE57-7C89-4208-8876-405E13605D16}
{325BCC90-44DF-40B7-ADAC-F2C0FCBE9525} = {5243DE57-7C89-4208-8876-405E13605D16}
{80EAB768-C2FC-4D61-A185-5A51314B8505} = {5243DE57-7C89-4208-8876-405E13605D16}
{CA2F82DA-6218-4520-AD21-6B7BC27414DD} = {5243DE57-7C89-4208-8876-405E13605D16}
{93EB904A-E929-4B6E-B135-8A34DB2E8CD8} = {5243DE57-7C89-4208-8876-405E13605D16}
{8027C4ED-4C67-4D8D-BC13-C14EE3C75097} = {5243DE57-7C89-4208-8876-405E13605D16}
{AC7D7A37-B684-4F02-A725-1625E96DE2B8} = {5243DE57-7C89-4208-8876-405E13605D16}
{B23CA546-4B27-472F-B962-7E2C981CE89C} = {5243DE57-7C89-4208-8876-405E13605D16}
{4713D574-918D-4129-A11C-2287AE4B119F} = {5243DE57-7C89-4208-8876-405E13605D16}
{CBB0F82E-371E-4F0C-8474-C1B7D30754A9} = {5243DE57-7C89-4208-8876-405E13605D16}
{16735222-D50E-4535-A9BD-85EE05AA5308} = {E9B2D007-5701-4DEB-AC64-A435D71AA05F}
{76A12B64-BF45-464F-8B23-1AEBF9427E9B} = {5243DE57-7C89-4208-8876-405E13605D16}
{4D932067-B9E4-4130-A23E-B56EEA89E9AC} = {5243DE57-7C89-4208-8876-405E13605D16}
{9AA5C22E-496F-4E3B-8497-8B27F80BEF03} = {5243DE57-7C89-4208-8876-405E13605D16}
{A375EB69-B5CE-481C-9D98-CC93A33972B8} = {E9B2D007-5701-4DEB-AC64-A435D71AA05F}
{42E7F4FE-8929-4367-9F58-85BE67043D9E} = {5243DE57-7C89-4208-8876-405E13605D16}
{9B622839-BC4E-4424-B153-63799EB47600} = {5243DE57-7C89-4208-8876-405E13605D16}
{FFE90C6E-D297-4863-B7DA-41F145270ACA} = {5243DE57-7C89-4208-8876-405E13605D16}
{F34428AB-AA2E-4FA6-8C9B-23B7C5206EB4} = {5243DE57-7C89-4208-8876-405E13605D16}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {ADB1ABEA-D5DB-4F22-BEA1-26E93BFF1BDD}
EndGlobalSection
EndGlobal
================================================
FILE: package.json
================================================
{
"name": "approot",
"version": "1.0.0",
"private": true,
"devDependencies": {
},
"scripts": {
"postinstall": "cd src/sourceDev.WebApp && npm install"
}
}
================================================
FILE: samples/README.md
================================================
# cloudscribe SimpleContent Samples
All of the samples have been moved to https://github.com/joeaudette/cloudscribe.StarterKits
## Questions or Feedback?
If you have questions or feedback or just want to be social, say hello in our gitter chat room. I try to monitor that room on a regular basis while I'm working, but if I'm not around you can leave message.
If you find any bugs please post an issue!
[](https://gitter.im/joeaudette/cloudscribe?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
================================================
FILE: src/cloudscribe.ContentUtils/ExcerptHelper.cs
================================================
using cloudscribe.HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace cloudscribe.ContentUtils
{
public class ExcerptHelper
{
public ExcerptHelper(
//ILogger<ExcerptHelper> logger = null
)
{
}
private const int defaultLengthWords = 20;
private const int defaultLengthCharacters = 200;
private const int defaultLengthAbsolute = 30;
private const string terminator = "";
/// <summary>
/// this is an expensive method as often many retries ar eneeded to produce a valid html fragment.
/// therefore this should not be used for dynamic excerpt generation.
/// Excerpt should be generated and saved when content is edited.
/// </summary>
/// <param name="truncationMode"></param>
/// <param name="truncationLength"></param>
/// <param name="html"></param>
/// <param name="languageCode"></param>
/// <returns></returns>
public ExcerptResult GenerateExcerpt(
ExcerptTruncationMode truncationMode,
int truncationLength,
string html,
//string cacheKey,
//string slug,
string languageCode //,
//bool logWarnings = true
)
{
var result = new ExcerptResult();
if (string.IsNullOrWhiteSpace(html))
{
result.HtmlContent = html;
result.DidTruncate = false;
return result;
}
// Try to get language metadata
var cultureInfo = CultureInfo.InvariantCulture;
if (!string.IsNullOrEmpty(languageCode))
{
try
{
cultureInfo = new CultureInfo(languageCode);
}
catch (CultureNotFoundException) { }
}
var contentLength = GetContentLength(html, truncationMode);
if (contentLength <= truncationLength)
{
result.HtmlContent = html;
result.DidTruncate = false;
return result;
}
//if (_cache != null)
//{
// var cachedTeaser = _cache.GetTeaser(cacheKey);
// if (!string.IsNullOrEmpty(cachedTeaser))
// {
// result.Content = cachedTeaser;
// result.DidTruncate = true;
// return result;
// }
//}
var isRightToLeftLanguage = cultureInfo.TextInfo.IsRightToLeft;
// Get global teaser settings.
var truncationLengthToUse = truncationLength <= 0 ? GetDefaultTeaserLength(truncationMode) : truncationLength;
// Truncate the raw content first. In general, Humanizer is smart enough to ignore tags, especially if using word truncation.
var text = TruncatePost(truncationMode, html, truncationLengthToUse, isRightToLeftLanguage);
// Don't leave dangling <p> tags.
HtmlNode.ElementsFlags["p"] = HtmlElementFlag.Closed;
//var modeDesc = GetModeDescription(truncationMode);
//if we get bad output try increasing the allowed length unti it is valid
while (!IsValidMarkup(text) && truncationLengthToUse <= contentLength)
{
truncationLengthToUse += 1;
//if (_log != null && logWarnings)
//{
// _log.LogWarning($"teaser truncation for post {slug}, produced invalid html, so trying again and increasing the truncation length to {truncationLengthToUse} {modeDesc}. You should re-publish this post to create a persistent teaser.");
//}
text = TruncatePost(truncationMode, html, truncationLengthToUse, isRightToLeftLanguage);
}
if (!IsValidMarkup(text))
{
//if (_log != null)
//{
// _log.LogError($"failed to create valid teaser for post {slug}, so returning full content");
//}
result.HtmlContent = html;
result.DidTruncate = false;
return result;
}
//if (_cache != null)
//{
// _cache.AddToCache(text, cacheKey);
//}
var doc = new HtmlDocument();
doc.LoadHtml(text);
result.HtmlContent = doc.DocumentNode.InnerHtml;
result.DidTruncate = true;
return result;
}
private bool IsValidMarkup(string html)
{
var errors = GetMarkupErrors(html);
return errors.Count() == 0;
}
private IEnumerable<HtmlParseError> GetMarkupErrors(string html)
{
var document = new HtmlAgilityPack.HtmlDocument();
document.OptionFixNestedTags = true;
document.LoadHtml(html);
return document.ParseErrors;
}
//private string GetModeDescription(ExcerptTruncationMode mode)
//{
// switch (mode)
// {
// case ExcerptTruncationMode.Length:
// return "string length";
// case ExcerptTruncationMode.Character:
// return "letters or digits";
// case ExcerptTruncationMode.Word:
// default:
// return "words";
// }
//}
private int GetContentLength(string html, ExcerptTruncationMode mode)
{
if (string.IsNullOrEmpty(html)) return 0;
switch (mode)
{
case ExcerptTruncationMode.Length:
return html.Length;
case ExcerptTruncationMode.Character:
return html.ToCharArray().Count(char.IsLetterOrDigit);
case ExcerptTruncationMode.Word:
default:
return html.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).Count();
}
}
// Internal for unit testing purposes only.
private int GetDefaultTeaserLength(ExcerptTruncationMode mode)
{
switch (mode)
{
case ExcerptTruncationMode.Length:
return defaultLengthAbsolute;
case ExcerptTruncationMode.Character:
return defaultLengthCharacters;
case ExcerptTruncationMode.Word:
default:
return defaultLengthWords;
}
}
// Internal for unit testing purposes only.
private string TruncatePost(ExcerptTruncationMode mode, string content, int length, bool isRightToLeftLanguage = false)
{
var truncateFrom = isRightToLeftLanguage ? TruncateFrom.Left : TruncateFrom.Right;
switch (mode)
{
case ExcerptTruncationMode.Length:
return content.Truncate(length, terminator, Truncator.FixedLength, truncateFrom);
case ExcerptTruncationMode.Character:
return content.Truncate(length, terminator, Truncator.FixedNumberOfCharacters, truncateFrom);
case ExcerptTruncationMode.Word:
default:
return content.Truncate(length, terminator, Truncator.FixedNumberOfWords, truncateFrom);
}
}
}
}
================================================
FILE: src/cloudscribe.ContentUtils/ExcerptResult.cs
================================================
namespace cloudscribe.ContentUtils
{
public class ExcerptResult
{
public string HtmlContent { get; set; }
public bool DidTruncate { get; set; }
}
}
================================================
FILE: src/cloudscribe.ContentUtils/MarkdownHelper.cs
================================================
using Markdig;
using Markdig.Syntax;
using Markdig.Syntax.Inlines;
using System;
using System.Linq;
namespace cloudscribe.ContentUtils
{
public class MarkdownHelper
{
private MarkdownPipeline _mdPipeline = null;
public string ConvertMarkdownToHtml(string markdown)
{
if (_mdPipeline == null)
{
_mdPipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
}
return Markdown.ToHtml(markdown, _mdPipeline);
}
public string ExtractFirstImageUrl(string markdown)
{
if (_mdPipeline == null)
{
_mdPipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
}
if (!String.IsNullOrWhiteSpace(markdown))
{
var doc = Markdown.Parse(markdown, _mdPipeline);
var img = doc.Descendants<ParagraphBlock>()
.SelectMany(x => x.Inline.Descendants<LinkInline>())
.FirstOrDefault(l => l.IsImage);
if (img != null)
{
return img.Url;
}
}
return string.Empty;
}
}
}
================================================
FILE: src/cloudscribe.ContentUtils/README.md
================================================
# cloudscribe.ContentUtils
[](https://www.nuget.org/packages/cloudscribe.ContentUtils)
[](https://opensource.org/licenses/Apache-2.0)
Utilities for content management and manipulation in cloudscribe projects.
## Installation
```shell
Install-Package cloudscribe.ContentUtils
```
## Usage
Add as a dependency to your .NET 8.0 project and use the provided utilities for content handling.
## Contributing
Contributions are welcome! Please see the [contributing guidelines](https://github.com/cloudscribe/cloudscribe.SimpleContent/blob/main/CONTRIBUTING.md).
## License
This project is licensed under the Apache 2.0 License - see the [LICENSE](https://github.com/cloudscribe/cloudscribe.SimpleContent/blob/main/LICENSE) file for details.
================================================
FILE: src/cloudscribe.ContentUtils/SlugHelper.cs
================================================
using System.Collections.Generic;
using System.Globalization;
using System.Text;
namespace cloudscribe.ContentUtils
{
public static class SlugHelper
{
public static string CreateSlug(string title)
{
if (string.IsNullOrWhiteSpace(title)) { return title; }
title = title.ToLowerInvariant().Replace(" ", " ")
.Replace(" ", "-")
.Replace("--", "-")
.Replace("--", "-")
.Replace("\n", string.Empty)
.Replace("\r", string.Empty)
.Replace("\t", string.Empty)
;
title = RemoveDiacritics(title);
title = RemoveReservedUrlCharacters(title);
return title.ToLowerInvariant().Trim();
}
private static string RemoveDiacritics(string text)
{
if (string.IsNullOrWhiteSpace(text)) { return text; }
var normalizedString = text.Normalize(NormalizationForm.FormD);
var stringBuilder = new StringBuilder();
foreach (var c in normalizedString)
{
var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
if (unicodeCategory != UnicodeCategory.NonSpacingMark)
{
stringBuilder.Append(c);
}
}
return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
}
private static string RemoveReservedUrlCharacters(string text)
{
if (string.IsNullOrWhiteSpace(text)) { return text; }
var reservedCharacters = new List<string>() { "!", "#", "$", "&", "'", "(", ")", "*", ",", "/", ":", ";", "=", "?", "@", "[", "]", "\"", "%", ".", "<", ">", "\\", "^", "_", "'", "{", "}", "|", "~", "`", "+" };
foreach (var chr in reservedCharacters)
{
text = text.Replace(chr, "");
}
return text;
}
}
}
================================================
FILE: src/cloudscribe.ContentUtils/Truncation.cs
================================================
using System;
using System.Linq;
namespace cloudscribe.ContentUtils
{
public static class Truncation
{
/// <summary>
/// Truncate the string
/// </summary>
/// <param name="input">The string to be truncated</param>
/// <param name="length">The length to truncate to</param>
/// <returns>The truncated string</returns>
public static string Truncate(this string input, int length)
{
return input.Truncate(length, "…", Truncator.FixedLength);
}
/// <summary>
/// Truncate the string
/// </summary>
/// <param name="input">The string to be truncated</param>
/// <param name="length">The length to truncate to</param>
/// <param name="truncator">The truncate to use</param>
/// <param name="from">The enum value used to determine from where to truncate the string</param>
/// <returns>The truncated string</returns>
public static string Truncate(this string input, int length, ITruncator truncator, TruncateFrom from = TruncateFrom.Right)
{
return input.Truncate(length, "…", truncator, from);
}
/// <summary>
/// Truncate the string
/// </summary>
/// <param name="input">The string to be truncated</param>
/// <param name="length">The length to truncate to</param>
/// <param name="truncationString">The string used to truncate with</param>
/// <param name="from">The enum value used to determine from where to truncate the string</param>
/// <returns>The truncated string</returns>
public static string Truncate(this string input, int length, string truncationString, TruncateFrom from = TruncateFrom.Right)
{
return input.Truncate(length, truncationString, Truncator.FixedLength, from);
}
/// <summary>
/// Truncate the string
/// </summary>
/// <param name="input">The string to be truncated</param>
/// <param name="length">The length to truncate to</param>
/// <param name="truncationString">The string used to truncate with</param>
/// <param name="truncator">The truncator to use</param>
/// <param name="from">The enum value used to determine from where to truncate the string</param>
/// <returns>The truncated string</returns>
public static string Truncate(this string input, int length, string truncationString, ITruncator truncator, TruncateFrom from = TruncateFrom.Right)
{
if (truncator == null)
throw new ArgumentNullException(nameof(truncator));
if (input == null)
return null;
return truncator.Truncate(input, length, truncationString, from);
}
}
/// <summary>
/// Truncation location for humanizer
/// </summary>
public enum TruncateFrom
{
/// <summary>
/// Truncate letters from the left (start) of the string
/// </summary>
Left,
/// <summary>
/// Truncate letters from the right (end) of the string
/// </summary>
Right
}
public enum ExcerptTruncationMode : byte
{
/// <summary>
/// (Default) Truncate the post based on number of words.
/// </summary>
Word = 0,
/// <summary>
/// Truncate the post to a fixed length.
/// </summary>
Length,
/// <summary>
/// Truncate the post based on number of characters.
/// </summary>
Character
}
public interface ITruncator
{
/// <summary>
/// Truncate a string
/// </summary>
/// <param name="value">The string to truncate</param>
/// <param name="length">The length to truncate to</param>
/// <param name="truncationString">The string used to truncate with</param>
/// <param name="truncateFrom">The enum value used to determine from where to truncate the string</param>
/// <returns>The truncated string</returns>
string Truncate(string value, int length, string truncationString, TruncateFrom truncateFrom = TruncateFrom.Right);
}
public static class Truncator
{
/// <summary>
/// Fixed length truncator
/// </summary>
public static ITruncator FixedLength
{
get
{
return new FixedLengthTruncator();
}
}
/// <summary>
/// Fixed number of characters truncator
/// </summary>
public static ITruncator FixedNumberOfCharacters
{
get
{
return new FixedNumberOfCharactersTruncator();
}
}
/// <summary>
/// Fixed number of words truncator
/// </summary>
public static ITruncator FixedNumberOfWords
{
get
{
return new FixedNumberOfWordsTruncator();
}
}
}
class FixedLengthTruncator : ITruncator
{
public string Truncate(string value, int length, string truncationString, TruncateFrom truncateFrom = TruncateFrom.Right)
{
if (value == null)
return null;
if (value.Length == 0)
return value;
if (truncationString == null || truncationString.Length > length)
return truncateFrom == TruncateFrom.Right
? value.Substring(0, length)
: value.Substring(value.Length - length);
if (truncateFrom == TruncateFrom.Left)
return value.Length > length
? truncationString + value.Substring(value.Length - length + truncationString.Length)
: value;
return value.Length > length
? value.Substring(0, length - truncationString.Length) + truncationString
: value;
}
}
class FixedNumberOfCharactersTruncator : ITruncator
{
public string Truncate(string value, int length, string truncationString, TruncateFrom truncateFrom = TruncateFrom.Right)
{
if (value == null)
return null;
if (value.Length == 0)
return value;
if (truncationString == null)
truncationString = string.Empty;
if (truncationString.Length > length)
return truncateFrom == TruncateFrom.Right ? value.Substring(0, length) : value.Substring(value.Length - length);
var alphaNumericalCharactersProcessed = 0;
if (value.ToCharArray().Count(char.IsLetterOrDigit) <= length)
return value;
if (truncateFrom == TruncateFrom.Left)
{
for (var i = value.Length - 1; i > 0; i--)
{
if (char.IsLetterOrDigit(value[i]))
alphaNumericalCharactersProcessed++;
if (alphaNumericalCharactersProcessed + truncationString.Length == length)
return truncationString + value.Substring(i);
}
}
for (var i = 0; i < value.Length - truncationString.Length; i++)
{
if (char.IsLetterOrDigit(value[i]))
alphaNumericalCharactersProcessed++;
if (alphaNumericalCharactersProcessed + truncationString.Length == length)
return value.Substring(0, i + 1) + truncationString;
}
return value;
}
}
class FixedNumberOfWordsTruncator : ITruncator
{
public string Truncate(string value, int length, string truncationString, TruncateFrom truncateFrom = TruncateFrom.Right)
{
if (value == null)
return null;
if (value.Length == 0)
return value;
var numberOfWords = value.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).Count();
if (numberOfWords <= length)
return value;
return truncateFrom == TruncateFrom.Left
? TruncateFromLeft(value, length, truncationString)
: TruncateFromRight(value, length, truncationString);
}
private static string TruncateFromRight(string value, int length, string truncationString)
{
var lastCharactersWasWhiteSpace = true;
var numberOfWordsProcessed = 0;
for (var i = 0; i < value.Length; i++)
{
if (char.IsWhiteSpace(value[i]))
{
if (!lastCharactersWasWhiteSpace)
numberOfWordsProcessed++;
lastCharactersWasWhiteSpace = true;
if (numberOfWordsProcessed == length)
return value.Substring(0, i) + truncationString;
}
else
lastCharactersWasWhiteSpace = false;
}
return value + truncationString;
}
private static string TruncateFromLeft(string value, int length, string truncationString)
{
var lastCharactersWasWhiteSpace = true;
var numberOfWordsProcessed = 0;
for (var i = value.Length - 1; i > 0; i--)
{
if (char.IsWhiteSpace(value[i]))
{
if (!lastCharactersWasWhiteSpace)
numberOfWordsProcessed++;
lastCharactersWasWhiteSpace = true;
if (numberOfWordsProcessed == length)
return truncationString + value.Substring(i + 1).TrimEnd();
}
else
lastCharactersWasWhiteSpace = false;
}
return truncationString + value;
}
}
}
================================================
FILE: src/cloudscribe.ContentUtils/cloudscribe.ContentUtils.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>Content utilities for html and markdown</Description>
<Version>10.1.0</Version>
<TargetFramework>net10.0</TargetFramework>
<Authors>Joe Audette</Authors>
<PackageTags>cloudscribe;blog,content</PackageTags>
<PackageIcon>icon.png</PackageIcon>
<PackageProjectUrl>https://github.com/cloudscribe/cloudscribe.SimpleContent</PackageProjectUrl>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
<RepositoryUrl>https://github.com/cloudscribe/cloudscribe.SimpleContent.git</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageReadmeFile>README.md</PackageReadmeFile>
</PropertyGroup>
<ItemGroup>
<None Include="icon.png" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="cloudscribe.HtmlAgilityPack" Version="1.0.1" />
<PackageReference Include="Markdig" Version="0.37.0" />
</ItemGroup>
<ItemGroup>
<None Include="README.md" Pack="true" PackagePath="/" />
</ItemGroup>
</Project>
================================================
FILE: src/cloudscribe.Core.SimpleContent/AuthorNameResolver.cs
================================================
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Models;
using cloudscribe.SimpleContent.Web;
using System.Security.Claims;
using System.Threading;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Integration
{
public class AuthorNameResolver : IAuthorNameResolver
{
public AuthorNameResolver(IUserContextResolver userContextResolver)
{
userResolver = userContextResolver;
}
private IUserContextResolver userResolver;
public async Task<string> GetAuthorName(ClaimsPrincipal user, CancellationToken cancellationToken = default(CancellationToken))
{
var dbUser = await userResolver.GetCurrentUser(cancellationToken);
string result;
if(dbUser == null)
{
result = user.GetUserDisplayName();
if (string.IsNullOrEmpty(result))
{
result = user.Identity.Name;
}
return result;
}
if(!string.IsNullOrWhiteSpace(dbUser.FirstName))
{
if(!string.IsNullOrWhiteSpace(dbUser.LastName))
{
return dbUser.FirstName + " " + dbUser.LastName;
}
}
return dbUser.DisplayName;
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/ClaimsPrincipalExtensions.cs
================================================
//// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
//// Author: Joe Audette
//// Created: 2016-02-09
//// Last Modified: 2016-08-12
////
//using System;
//using System.Security.Claims;
//using Microsoft.AspNetCore.Authorization;
//namespace cloudscribe.Core.SimpleContent.Integration
//{
// public static class ClaimsPrincipalExtensions
// {
// public static string GetEmail(this ClaimsPrincipal principal)
// {
// if (principal == null)
// {
// throw new ArgumentNullException(nameof(principal));
// }
// var claim = principal.FindFirst("Email");
// return claim != null ? claim.Value : null;
// }
// public static string GetUserDisplayName(this ClaimsPrincipal principal)
// {
// if (principal == null)
// {
// throw new ArgumentNullException(nameof(principal));
// }
// var claim = principal.FindFirst("DisplayName");
// return claim != null ? claim.Value : null;
// }
// public static string GetProjectId(this ClaimsPrincipal principal)
// {
// if (principal == null)
// {
// throw new ArgumentNullException(nameof(principal));
// }
// var claim = principal.FindFirst("ContentEditor");
// return claim != null ? claim.Value : null;
// }
// public static bool CanEditProject(this ClaimsPrincipal principal, string projectId)
// {
// if (principal == null)
// {
// throw new ArgumentNullException(nameof(principal));
// }
// var claim = principal.FindFirst("ContentEditor");
// if (claim == null) { return false; }
// if (claim.Value == projectId) { return true; }
// return false;
// }
// public static bool CanEditPages(
// this ClaimsPrincipal principal,
// string projectId,
// IAuthorizationService authorizationService = null
// )
// {
// if (principal == null)
// {
// throw new ArgumentNullException(nameof(principal));
// }
// if (principal.CanEditProject(projectId)) return true;
// var claim = principal.FindFirst("PageEditor");
// if (claim == null) { return false; }
// if (claim.Value == projectId) { return true; }
// return false;
// }
// public static bool CanEditBlog(this ClaimsPrincipal principal, string projectId)
// {
// if (principal == null)
// {
// throw new ArgumentNullException(nameof(principal));
// }
// if (principal.CanEditProject(projectId)) return true;
// var claim = principal.FindFirst("BlogEditor");
// if (claim == null) { return false; }
// if (claim.Value == projectId) { return true; }
// return false;
// }
// }
//}
================================================
FILE: src/cloudscribe.Core.SimpleContent/ContentSettingsUIConfig.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;
namespace cloudscribe.Core.SimpleContent
{
public class ContentSettingsUIConfig
{
public bool ShowBlogMenuOptions { get; set; } = true;
public bool ShowBlogSettings { get; set; } = true;
public bool ShowPageSettings { get; set; } = true;
public bool ShowDefaultContentType { get; set; } = false;
public bool ShowCommentSettings { get; set; } = true;
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/Controllers/ContentCloningController.cs
================================================
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2016-08-07
// Last Modified: 2019-03-04
//
using cloudscribe.Core.Models;
using cloudscribe.Core.SimpleContent.Integration.ViewModels;
using cloudscribe.Core.Web.Components;
using cloudscribe.SimpleContent.Models;
using cloudscribe.SimpleContent.Web.Services;
using cloudscribe.Web.Common.Extensions;
using cloudscribe.Web.Navigation;
using cloudscribe.Web.Navigation.Caching;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Localization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Integration.Mvc.Controllers
{
public class ContentCloningController : Controller
{
private readonly IProjectService _projectService;
private readonly SiteManager _siteManager;
private readonly ISiteQueries _siteQueries;
private readonly IProjectCommands _projectCommands;
private readonly IPageQueries _pageQueries;
private readonly IPageCommands _pageCommands;
private readonly IPostQueries _postQueries;
private readonly IPostCommands _postCommands;
private readonly IConfiguration _configuration;
private readonly ITreeCache _treeCache;
private readonly IStringLocalizer sr;
public ContentCloningController(
IProjectService projectService,
SiteManager siteManager,
ISiteQueries siteQueries,
IProjectCommands projectCommands,
IPageQueries pageQueries,
IPageCommands pageCommands,
IPostQueries postQueries,
IPostCommands postCommands,
IConfiguration configuration,
ITreeCache treeCache,
IStringLocalizer<cloudscribe.SimpleContent.Web.SimpleContent> localizer
)
{
_projectService = projectService;
_siteManager = siteManager;
_siteQueries = siteQueries;
_projectCommands = projectCommands;
_pageQueries = pageQueries;
_pageCommands = pageCommands;
_postQueries = postQueries;
_postCommands = postCommands;
_configuration = configuration;
_treeCache = treeCache;
sr = localizer;
}
[Authorize(Policy = "AdminPolicy")]
// GET: /ContentCloning/index[?siteId=]
[HttpGet]
public async Task<IActionResult> Index(string siteId = null)
{
ViewData["Title"] = sr["Content Cloning"];
var model = new ContentCloningViewModel() { SiteId = siteId };
model = await PopulateAndValidateModel(model); //add the list of sites to the model and do validation
return View(model);
}
[Authorize(Policy = "AdminPolicy")]
[HttpPost]
public async Task<IActionResult> Index(ContentCloningViewModel model)
{
ViewData["Title"] = sr["Content Cloning"];
if (!ModelState.IsValid)
{
return View(model);
}
model = await PopulateAndValidateModel(model); //add the list of sites to the model and do validation
if (!model.CloneAllowed)
{
return View(model);
}
if(string.IsNullOrWhiteSpace(model.Command) || model.Command != "clone")
{
return View(model);
}
// at this point we're ready to clone the ProjectSettings, Pages and Posts
//Project aka Site Content Settings
if(model.CloneContentSettings)
{
try
{
string projectId = await _projectCommands.CloneToNewProject(
model.CloneFromSiteId,
model.CloneToSiteId,
model.CloneToSiteName
);
this.AlertSuccess(sr["Content Settings cloning was successful!"], true);
}
catch(Exception ex)
{
this.AlertDanger(sr["Failed to clone the Content Settings!"], true);
this.AlertDanger(ex.Message, true);
return View(model);
}
}
//Clone the Pages. This has to be done in two passes because we need to know the new page ids
//in order to properly update the parent child relationships
int pageCopyCount = 0;
int pageUpdateCount = 0;
if(model.ClonePages)
{
bool copySuccessful = false;
try
{
List<IPage> pages = await _pageQueries.GetAllPages(model.CloneFromSiteId);
foreach(var page in pages)
{
string pageId = await _pageCommands.CloneToNewProject(
model.CloneFromSiteId,
model.CloneToSiteId,
page.Id
);
if(!string.IsNullOrWhiteSpace(pageId)) pageCopyCount++;
}
copySuccessful = true;
}
catch (Exception ex)
{
this.AlertDanger(string.Format(sr["An error occurred while cloning content pages. Only {0}/{1} were copied."], pageCopyCount, model.CloneFromPageCount), true);
this.AlertDanger(ex.Message, true);
}
if(copySuccessful)
{
try
{
List<IPage> newPages = await _pageQueries.GetAllPages(model.CloneToSiteId);
List<IPage> oldPages = await _pageQueries.GetAllPages(model.CloneFromSiteId);
foreach (var newPage in newPages)
{
if(newPage.ParentId != null && newPage.ParentId != "0")
{
// find the old parent of the page that has been copied
var oldParent = oldPages.FirstOrDefault(x => x.Id == newPage.ParentId);
if (oldParent != null)
{
// find the matching new page that will now be the new parent
var newParent = newPages.FirstOrDefault(x => x.Slug == oldParent.Slug);
if (newParent != null)
{
newPage.ParentId = newParent.Id;
newPage.ParentSlug = newParent.Slug;
}
else //orphaned page - can't find the old parent's slug among the newly cloned pages
{
newPage.ParentId = "0";
newPage.ParentSlug = "";
}
}
else //orphaned page - can't find the old parent Id of the page that has been copied
{
newPage.ParentId = "0";
newPage.ParentSlug = "";
}
await _pageCommands.Update(model.CloneToSiteId, newPage);
}
pageUpdateCount++;
}
}
catch (Exception ex)
{
this.AlertDanger(string.Format(sr["An error occurred while updating content pages tree. Only {0}/{1} were updated."], pageUpdateCount, model.CloneFromPageCount), true);
this.AlertDanger(ex.Message, true);
}
}
if(pageCopyCount == model.CloneFromPageCount && pageUpdateCount == model.CloneFromPageCount)
{
this.AlertSuccess(sr["Content pages cloning was successful!"], true);
}
}
//Clone the Posts
int postCount = 0;
if (model.CloneBlogPosts)
{
try
{
List<IPost> posts = await _postQueries.GetPosts(model.CloneFromSiteId, true);
foreach (var post in posts)
{
string postId = await _postCommands.CloneToNewProject(
model.CloneFromSiteId,
model.CloneToSiteId,
post.Id
);
if (!string.IsNullOrWhiteSpace(postId)) postCount++;
}
}
catch (Exception ex)
{
this.AlertDanger(string.Format(sr["An error occurred while cloning blog posts. Only {0}/{1} were copied."],postCount, model.CloneFromPostCount), true);
this.AlertDanger(ex.Message, true);
}
if(postCount == model.CloneFromPostCount)
{
this.AlertSuccess(sr["Blog post cloning was successful!"], true);
}
}
if(model.RewriteContentUrls)
{
this.AlertInformation(sr["Rewriting content urls is not yet implemented."], true);
}
await _treeCache.ClearTreeCache();
return View(model);
}
private async Task<ContentCloningViewModel> PopulateAndValidateModel(ContentCloningViewModel model)
{
bool isServerAdminSite = _siteManager.CurrentSite.IsServerAdminSite;
string currentSiteId = _siteManager.CurrentSite.Id.ToString();
if(isServerAdminSite)
{
//if we are on a specific site settings page then we can preselect the site to clone to
if(!string.IsNullOrWhiteSpace(model.SiteId))
{
model.CloneToSiteId = model.SiteId;
model.AllowCloneToSiteSelection = false;
}
}
else
{ //can't allow destination site selection if we are not on the server admin site
model.SiteId = currentSiteId;
model.CloneToSiteId = currentSiteId;
model.AllowCloneToSiteSelection = false;
}
bool useFolderNames = _configuration.GetSection("MultiTenantOptions").GetValue<string>("Mode") == "FolderName";
List<ISiteInfo> sites = await _siteQueries.GetList();
//build the sites list for To and From, excluding any site selected in the other list
foreach(var site in sites)
{
string url = string.Empty;
if(useFolderNames) url = "/" + site.SiteFolderName;
else url = site.PreferredHostName;
bool addTo = true;
bool addFrom = true;
if(!string.IsNullOrWhiteSpace(model.CloneToSiteId) &&
model.CloneToSiteId == site.Id.ToString())
{
addFrom= false;
model.CloneToSiteName = site.SiteName;
model.CloneToPageCount = await _pageQueries.GetCount(model.CloneToSiteId, true);
model.CloneToPostCount = await _postQueries.GetCount(model.CloneToSiteId, null, true);
}
if (!string.IsNullOrWhiteSpace(model.CloneFromSiteId) &&
model.CloneFromSiteId == site.Id.ToString())
{
addTo = false;
model.CloneFromSiteName = site.SiteName;
model.CloneFromPageCount = await _pageQueries.GetCount(model.CloneFromSiteId, true);
model.CloneFromPostCount = await _postQueries.GetCount(model.CloneFromSiteId, null, true);
}
if (addTo)
{
model.CloneToSites.Add(new ContentCloningViewModel.SiteDetails
{
SiteId = site.Id.ToString(),
SiteIdentifier = site.SiteName + " (" + url + ") [ " + site.Id + " ]"
});
}
if(addFrom)
{
model.CloneFromSites.Add(new ContentCloningViewModel.SiteDetails
{
SiteId = site.Id.ToString(),
SiteIdentifier = site.SiteName + " (" + url + ") [ " + site.Id + " ]"
});
}
}
model.CloneAllowed = true;
if(string.IsNullOrWhiteSpace(model.CloneToSiteId))
{
model.CloneAllowed = false;
this.AlertDanger(sr["Please select a destination site!"], true);
}
else
{
if (model.ClonePages && model.CloneToPageCount > 0)
{
model.CloneAllowed = false;
if(model.AllowCloneToSiteSelection)
{
this.AlertWarning(
string.Format(sr["The destination site you have chosen already contains {0} content pages!"], model.CloneToPageCount),
true);
}
else
{
this.AlertWarning(
string.Format(sr["This site already contains {0} content pages!"], model.CloneToPageCount),
true);
}
}
if (model.CloneBlogPosts && model.CloneToPostCount > 0)
{
model.CloneAllowed = false;
if (model.AllowCloneToSiteSelection)
{
this.AlertWarning(
string.Format(sr["The destination site you have chosen already contains {0} blog posts!"], model.CloneToPostCount),
true);
}
else
{
this.AlertWarning(
string.Format(sr["This site already contains {0} blog posts!"], model.CloneToPostCount),
true);
}
}
}
if(model.CloneAllowed)
{
if(string.IsNullOrWhiteSpace(model.CloneFromSiteId))
{
model.CloneAllowed = false;
this.AlertDanger(sr["Please select a source site!"], true);
}
else
{
if (model.CloneFromPageCount == 0 && model.CloneFromPostCount == 0)
{
model.CloneAllowed = false;
this.AlertWarning(
sr["The source site you have chosen does not contain any content pages or blog posts!"],
true);
}
else
{
this.AlertInformation(
string.Format(sr["The source site you have chosen contains {0} content pages and {1} blog posts."], model.CloneFromPageCount, model.CloneFromPostCount),
true);
}
}
}
else
{
if(!string.IsNullOrWhiteSpace(model.CloneToSiteId))
this.AlertDanger(sr["Content Cloning is not possible for this site."], true);
}
return model;
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/Controllers/ContentSettingsController.cs
================================================
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2016-08-07
// Last Modified: 2019-03-04
//
using cloudscribe.Core.Models;
using cloudscribe.Core.SimpleContent.Integration.ViewModels;
using cloudscribe.SimpleContent.Models;
using cloudscribe.SimpleContent.Web.Services;
using cloudscribe.Web.Common.Extensions;
using cloudscribe.Web.Navigation;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Localization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Integration.Mvc.Controllers
{
public class ContentSettingsController : Controller
{
public ContentSettingsController(
IProjectService projectService,
IAuthorizationService authorizationService,
IUserQueries userQueries,
ITeaserService teaserService,
NavigationTreeBuilderService navigationTreeBuilderService,
IStringLocalizer<cloudscribe.SimpleContent.Web.SimpleContent> localizer
)
{
this.projectService = projectService;
this.authorizationService = authorizationService;
this.userQueries = userQueries;
sr = localizer;
if(teaserService is TeaserServiceDisabled)
{
_teasersDisabled = true;
}
_navigationTreeBuilderService = navigationTreeBuilderService;
}
private IProjectService projectService;
private IAuthorizationService authorizationService;
private IUserQueries userQueries;
private bool _teasersDisabled = false;
private IStringLocalizer sr;
private readonly NavigationTreeBuilderService _navigationTreeBuilderService;
[Authorize(Policy = "AdminPolicy")]
// GET: /ContentSettings
[HttpGet]
public async Task<IActionResult> Index()
{
ViewData["Title"] = sr["Content Settings"];
var projectSettings = await projectService.GetCurrentProjectSettings();
var model = new ContentSettingsViewModel();
model.ChannelCategoriesCsv = projectSettings.ChannelCategoriesCsv;
//model.ChannelRating = projectSettings.ChannelRating;
//model.ChannelTimeToLive = projectSettings.ChannelTimeToLive;
model.CommentNotificationEmail = projectSettings.CommentNotificationEmail;
model.DaysToComment = projectSettings.DaysToComment;
model.Description = projectSettings.Description;
model.IncludePubDateInPostUrls = projectSettings.IncludePubDateInPostUrls;
model.LanguageCode = projectSettings.LanguageCode;
model.ManagingEditorEmail = projectSettings.ManagingEditorEmail;
model.ModerateComments = projectSettings.ModerateComments;
model.PostsPerPage = projectSettings.PostsPerPage;
model.PubDateFormat = projectSettings.PubDateFormat;
//model.RemoteFeedProcessorUseAgentFragment = projectSettings.RemoteFeedProcessorUseAgentFragment;
model.RemoteFeedUrl = projectSettings.RemoteFeedUrl;
model.ShowTitle = projectSettings.ShowTitle;
model.Title = projectSettings.Title; //aka Blog Page Title
//model.UseMetaDescriptionInFeed = projectSettings.UseMetaDescriptionInFeed;
model.WebmasterEmail = projectSettings.WebmasterEmail;
model.Publisher = projectSettings.Publisher;
model.PublisherLogoUrl = projectSettings.PublisherLogoUrl;
model.PublisherLogoHeight = projectSettings.PublisherLogoHeight;
model.PublisherLogoWidth = projectSettings.PublisherLogoWidth;
model.PublisherEntityType = projectSettings.PublisherEntityType;
model.DisqusShortName = projectSettings.DisqusShortName;
model.PostsPerPage = projectSettings.PostsPerPage;
model.BlogMenuLinksToNewestPost = projectSettings.BlogMenuLinksToNewestPost;
model.DefaultPageSlug = projectSettings.DefaultPageSlug;
model.ShowRecentPostsOnDefaultPage = projectSettings.ShowRecentPostsOnDefaultPage;
model.ShowFeaturedPostsOnDefaultPage = projectSettings.ShowFeaturedPostsOnDefaultPage;
model.AddBlogToPagesTree = projectSettings.AddBlogToPagesTree;
model.BlogPagePosition = projectSettings.BlogPagePosition;
model.BlogPageText = projectSettings.BlogPageText;
model.BlogPageNavComponentVisibility = projectSettings.BlogPageNavComponentVisibility;
model.LocalMediaVirtualPath = projectSettings.LocalMediaVirtualPath;
model.CdnUrl = projectSettings.CdnUrl;
model.FacebookAppId = projectSettings.FacebookAppId;
model.SiteName = projectSettings.SiteName;
model.TwitterCreator = projectSettings.TwitterCreator;
model.TwitterPublisher = projectSettings.TwitterPublisher;
model.DefaultContentType = projectSettings.DefaultContentType;
model.TeasersDisabled = _teasersDisabled;
model.TeaserMode = projectSettings.TeaserMode;
model.TeaserTruncationMode = projectSettings.TeaserTruncationMode;
model.TeaserTruncationLength = projectSettings.TeaserTruncationLength;
model.DefaultFeedItems = projectSettings.DefaultFeedItems;
model.MaxFeedItems = projectSettings.MaxFeedItems;
model.AboutContent = projectSettings.AboutContent;
model.AboutHeading = projectSettings.AboutHeading;
model.ShowAboutBox = projectSettings.ShowAboutBox;
model.ShowRelatedPosts = projectSettings.ShowRelatedPosts;
model.ShowArchivedPosts = projectSettings.ShowArchivedPosts;
model.ShowBlogCategories = projectSettings.ShowBlogCategories;
model.ShowCreatedBy = projectSettings.ShowCreatedBy;
model.ShowCreatedDate = projectSettings.ShowCreatedDate;
model.ShowLastModifiedBy = projectSettings.ShowLastModifiedBy;
model.ShowLastModifiedDate = projectSettings.ShowLastModifiedDate;
bool canManageUsers = false;
try
{
var result = await authorizationService.AuthorizeAsync(User, "UserManagementPolicy");
canManageUsers = result.Succeeded;
}
catch (InvalidOperationException) { } // thrown if policy doesn't exist
if(canManageUsers)
{
var projectId = projectSettings.Id;
if(projectId.Length > 36)
{
projectId = projectId.Substring(0, 36);
}
var editors = new List<ISiteUser>();
var contentEditors = await userQueries.GetUsersForClaim(
new Guid(projectId),
ProjectConstants.ContentEditorClaimType,
projectSettings.Id
);
if(contentEditors != null)
{
editors.AddRange(contentEditors);
}
var blogEditors = await userQueries.GetUsersForClaim(
new Guid(projectId),
ProjectConstants.BlogEditorClaimType,
projectSettings.Id
);
if(blogEditors != null)
{
editors.AddRange(blogEditors);
}
var pageEditors = await userQueries.GetUsersForClaim(
new Guid(projectId),
ProjectConstants.PageEditorClaimType,
projectSettings.Id
);
if (pageEditors != null)
{
editors.AddRange(pageEditors);
}
foreach(var e in editors)
{
if(!model.Editors.Any(x => x.Id == e.Id))
{
model.Editors.Add(e);
}
}
//model.Editors.AddRange(editors.Distinct());
}
return View(model);
}
[Authorize(Policy = "AdminPolicy")]
[HttpPost]
public async Task<IActionResult> Index(ContentSettingsViewModel model)
{
ViewData["Title"] = sr["Content Settings"];
if (!ModelState.IsValid)
{
model.TeasersDisabled = _teasersDisabled;
return View(model);
}
var projectSettings = await projectService.GetCurrentProjectSettings();
projectSettings.ChannelCategoriesCsv = model.ChannelCategoriesCsv;
//projectSettings.ChannelRating = model.ChannelRating;
//projectSettings.ChannelTimeToLive = model.ChannelTimeToLive;
projectSettings.CommentNotificationEmail = model.CommentNotificationEmail;
projectSettings.DaysToComment = model.DaysToComment;
projectSettings.Description = model.Description;
projectSettings.IncludePubDateInPostUrls = model.IncludePubDateInPostUrls;
projectSettings.LanguageCode = model.LanguageCode;
projectSettings.ManagingEditorEmail = model.ManagingEditorEmail;
projectSettings.ModerateComments = model.ModerateComments;
projectSettings.PostsPerPage = model.PostsPerPage;
projectSettings.PubDateFormat = model.PubDateFormat;
//projectSettings.RemoteFeedProcessorUseAgentFragment = model.RemoteFeedProcessorUseAgentFragment;
projectSettings.RemoteFeedUrl = model.RemoteFeedUrl;
projectSettings.ShowTitle = model.ShowTitle;
projectSettings.Title = model.Title;
//projectSettings.UseMetaDescriptionInFeed = model.UseMetaDescriptionInFeed;
projectSettings.WebmasterEmail = model.WebmasterEmail;
projectSettings.Publisher = model.Publisher;
projectSettings.PublisherLogoUrl = model.PublisherLogoUrl;
projectSettings.PublisherLogoWidth = model.PublisherLogoWidth;
projectSettings.PublisherLogoHeight = model.PublisherLogoHeight;
projectSettings.PublisherEntityType = model.PublisherEntityType;
projectSettings.DisqusShortName = model.DisqusShortName;
projectSettings.ShowRecentPostsOnDefaultPage = model.ShowRecentPostsOnDefaultPage;
projectSettings.ShowFeaturedPostsOnDefaultPage = model.ShowFeaturedPostsOnDefaultPage;
bool needToClearMenuCache = false;
if (model.BlogMenuLinksToNewestPost != projectSettings.BlogMenuLinksToNewestPost) needToClearMenuCache = true;
if (model.DefaultPageSlug != projectSettings.DefaultPageSlug) needToClearMenuCache = true;
if (model.AddBlogToPagesTree != projectSettings.AddBlogToPagesTree) needToClearMenuCache = true;
if (model.BlogPagePosition != projectSettings.BlogPagePosition) needToClearMenuCache = true;
if (model.BlogPageText != projectSettings.BlogPageText) needToClearMenuCache = true;
if (model.BlogPageNavComponentVisibility != projectSettings.BlogPageNavComponentVisibility) needToClearMenuCache = true;
projectSettings.BlogMenuLinksToNewestPost = model.BlogMenuLinksToNewestPost;
projectSettings.DefaultPageSlug = model.DefaultPageSlug;
projectSettings.BlogPagePosition = model.BlogPagePosition;
projectSettings.AddBlogToPagesTree = model.AddBlogToPagesTree;
projectSettings.BlogPageText = model.BlogPageText;
projectSettings.BlogPageNavComponentVisibility = model.BlogPageNavComponentVisibility;
projectSettings.LocalMediaVirtualPath = model.LocalMediaVirtualPath;
projectSettings.CdnUrl = model.CdnUrl;
projectSettings.FacebookAppId = model.FacebookAppId;
projectSettings.SiteName = model.SiteName;
projectSettings.TwitterPublisher = model.TwitterPublisher;
projectSettings.TwitterCreator = model.TwitterCreator;
projectSettings.DefaultContentType = model.DefaultContentType;
projectSettings.TeaserMode = model.TeaserMode;
projectSettings.TeaserTruncationLength = model.TeaserTruncationLength;
projectSettings.TeaserTruncationMode = model.TeaserTruncationMode;
projectSettings.DefaultFeedItems = model.DefaultFeedItems;
projectSettings.MaxFeedItems = model.MaxFeedItems;
projectSettings.AboutContent = model.AboutContent;
projectSettings.AboutHeading = model.AboutHeading;
projectSettings.ShowAboutBox = model.ShowAboutBox;
projectSettings.ShowRelatedPosts = model.ShowRelatedPosts;
projectSettings.ShowArchivedPosts = model.ShowArchivedPosts;
projectSettings.ShowBlogCategories = model.ShowBlogCategories;
projectSettings.ShowCreatedBy = model.ShowCreatedBy;
projectSettings.ShowCreatedDate = model.ShowCreatedDate;
projectSettings.ShowLastModifiedBy = model.ShowLastModifiedBy;
projectSettings.ShowLastModifiedDate = model.ShowLastModifiedDate;
await projectService.Update(projectSettings);
if(needToClearMenuCache)
{
//projectService.ClearNavigationCache();
await _navigationTreeBuilderService.ClearTreeCache();
}
this.AlertSuccess(sr["Content Settings were successfully updated."], true);
return RedirectToAction("Index");
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/Controllers/CultureMetaweblogController.cs
================================================
using cloudscribe.MetaWeblog;
using cloudscribe.MetaWeblog.Controllers;
using cloudscribe.MetaWeblog.Models;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Controllers
{
public class CultureMetaweblogController : MetaWeblogController
{
public CultureMetaweblogController(
IWebHostEnvironment appEnv,
IMetaWeblogRequestParser metaWeblogRequestParser,
IMetaWeblogRequestProcessor metaWeblogProcessor,
IMetaWeblogResultFormatter metaWeblogResultFormatter,
IMetaWeblogSecurity metaWeblogSecurity,
IMetaWeblogRequestValidator metaWebLogRequestValidator,
ILogger<MetaWeblogController> logger,
IOptions<ApiOptions> optionsAccessor = null
) : base(appEnv, metaWeblogRequestParser, metaWeblogProcessor, metaWeblogResultFormatter, metaWeblogSecurity, metaWebLogRequestValidator, logger, optionsAccessor)
{
}
[HttpPost]
//[Route("{folder:sitefolder}/api/metaweblog")]
public override async Task<IActionResult> Index()
{
return await base.Index();
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/Controllers/CultureRssController.cs
================================================
using cloudscribe.Syndication.Models.Rss;
using cloudscribe.Syndication.Web.Controllers;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Controllers
{
public class CultureRssController : RssController
{
public CultureRssController(
ILogger<RssController> logger,
IEnumerable<IChannelProvider> channelProviders = null,
IChannelProviderResolver channelResolver = null,
IXmlFormatter xmlFormatter = null
) : base(logger, channelProviders, channelResolver, xmlFormatter)
{
}
[HttpGet]
[ResponseCache(CacheProfileName = "RssCacheProfile")]
//[Route("{folder:sitefolder}/api/rss")]
public override async Task<IActionResult> Index()
{
return await base.Index();
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/Controllers/CultureSiteMapController.cs
================================================
using cloudscribe.Web.SiteMap;
using cloudscribe.Web.SiteMap.Controllers;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Controllers
{
public class CultureSiteMapController : SiteMapController
{
public CultureSiteMapController(
ILogger<SiteMapController> logger,
IEnumerable<ISiteMapNodeService> nodeProviders = null
):base(logger, nodeProviders)
{
}
[HttpGet]
[ResponseCache(CacheProfileName = "SiteMapCacheProfile")]
public override async Task<IActionResult> Index()
{
return await base.Index();
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/Controllers/FolderMetaweblogController.cs
================================================
using cloudscribe.MetaWeblog;
using cloudscribe.MetaWeblog.Controllers;
using cloudscribe.MetaWeblog.Models;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Controllers
{
public class FolderMetaweblogController : MetaWeblogController
{
public FolderMetaweblogController(
IWebHostEnvironment appEnv,
IMetaWeblogRequestParser metaWeblogRequestParser,
IMetaWeblogRequestProcessor metaWeblogProcessor,
IMetaWeblogResultFormatter metaWeblogResultFormatter,
IMetaWeblogSecurity metaWeblogSecurity,
IMetaWeblogRequestValidator metaWebLogRequestValidator,
ILogger<MetaWeblogController> logger,
IOptions<ApiOptions> optionsAccessor = null
):base(appEnv, metaWeblogRequestParser, metaWeblogProcessor, metaWeblogResultFormatter, metaWeblogSecurity, metaWebLogRequestValidator, logger, optionsAccessor)
{
}
[HttpPost]
//[Route("{folder:sitefolder}/api/metaweblog")]
public override async Task<IActionResult> Index()
{
return await base.Index();
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/Controllers/FolderRssController.cs
================================================
using cloudscribe.Syndication.Models.Rss;
using cloudscribe.Syndication.Web.Controllers;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Controllers
{
public class FolderRssController : RssController
{
public FolderRssController(
ILogger<RssController> logger,
IEnumerable<IChannelProvider> channelProviders = null,
IChannelProviderResolver channelResolver = null,
IXmlFormatter xmlFormatter = null
):base(logger, channelProviders, channelResolver, xmlFormatter)
{
}
[HttpGet]
[ResponseCache(CacheProfileName = "RssCacheProfile")]
//[Route("{folder:sitefolder}/api/rss")]
public override async Task<IActionResult> Index()
{
return await base.Index();
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/CoreProjectEmailService.cs
================================================
using cloudscribe.Core.Models;
using cloudscribe.Core.SimpleContent.ViewModels;
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2018-03-15
// Last Modified: 2018-03-15
//
using cloudscribe.Email;
using cloudscribe.SimpleContent.Models;
using cloudscribe.Web.Common.Razor;
using cloudscribe.Core.Web.Components;
using Microsoft.Extensions.Logging;
using System;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent
{
public class CoreProjectEmailService : IProjectEmailService
{
public CoreProjectEmailService(
ViewRenderer viewRenderer,
ISiteContextResolver siteResolver,
IEmailSenderResolver emailSenderResolver,
ILogger<CoreProjectEmailService> logger
)
{
_viewRenderer = viewRenderer;
_emailSenderResolver = emailSenderResolver;
_siteResolver = siteResolver;
_log = logger;
}
private ViewRenderer _viewRenderer;
private ISiteContextResolver _siteResolver;
private IEmailSenderResolver _emailSenderResolver;
private ILogger _log;
public async Task SendCommentNotificationEmailAsync(
IProjectSettings project,
IPost post,
IComment comment,
string postUrl,
string approveUrl,
string deleteUrl
)
{
var sender = await _emailSenderResolver.GetEmailSender(project.Id);
if (sender == null)
{
var logMessage = $"failed to send account confirmation email because email settings are not populated for site {project.Title}";
_log.LogError(logMessage);
return;
}
if (string.IsNullOrWhiteSpace(project.CommentNotificationEmail))
{
var logMessage = $"failed to send comment notification email because CommentNotificationEmail is not populated for project {project.Id}";
_log.LogError(logMessage);
return;
}
var site = await _siteResolver.GetById(new Guid(project.Id));
var model = new CoreCommentNotificationModel(site, project, post, comment, postUrl);
var subject = "Blog comment: " + post.Title;
string plainTextMessage = null;
string htmlMessage = null;
try
{
try
{
htmlMessage
= await _viewRenderer.RenderViewAsString<CoreCommentNotificationModel>("CommentNotificationEmail", model);
}
catch (Exception ex)
{
_log.LogError("error generating html email from razor template", ex);
return;
}
await sender.SendEmailAsync(
project.CommentNotificationEmail, //to
site.DefaultEmailFromAddress, //from
subject,
plainTextMessage,
htmlMessage,
comment.Email, //replyto
configLookupKey: project.Id
).ConfigureAwait(false);
}
catch (Exception ex)
{
_log.LogError($"error sending comment notification email {ex.Message} : {ex.StackTrace}");
}
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/CustomClaimProvider.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using cloudscribe.Core.Models;
using System.Security.Claims;
using Microsoft.Extensions.Options;
using cloudscribe.Core.Identity;
namespace cloudscribe.Core.SimpleContent.Integration
{
public class CustomClaimProvider : ICustomClaimProvider
{
public CustomClaimProvider(
IOptions<List<CustomClaimMap>> claimMapsAccessor
)
{
claimMaps = claimMapsAccessor.Value;
}
private List<CustomClaimMap> claimMaps;
public Task AddClaims(SiteUser user, ClaimsIdentity identity)
{
foreach(var map in claimMaps)
{
if(map.UserEmail == user.Email)
{
foreach(var c in map.Claims)
{
identity.AddClaim(new Claim(c.ClaimType, c.ClaimValue));
}
}
}
return Task.FromResult(0);
}
}
public class CustomClaimMap
{
public string UserEmail { get; set; }
public List<CustomClaim> Claims { get; set; }
}
public class CustomClaim
{
public string ClaimType { get; set; }
public string ClaimValue { get; set; }
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/EventHandlers/HandleRoleDeletred.cs
================================================
using cloudscribe.Core.Models;
using cloudscribe.Core.Models.EventHandlers;
using cloudscribe.SimpleContent.Models;
using cloudscribe.Web.Navigation;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.EventHandlers
{
public class HandleRoleDeleted : IHandleRoleDeleted
{
private readonly IPageService _pageService;
private readonly NavigationTreeBuilderService _nav;
public HandleRoleDeleted(IPageService pageService,
NavigationTreeBuilderService nav)
{
_pageService = pageService;
_nav = nav;
}
async Task IHandleRoleDeleted.Handle(ISiteRole role)
{
var pages = await _pageService.GetAllPages(role.SiteId.ToString());
int pagesUpdated = 0;
foreach (var page in pages.Where(p => !string.IsNullOrWhiteSpace(p.ViewRoles)))
{
// assuming no case sensitivity issues here
if (page.ViewRoles.Contains(role.RoleName))
{
var rolesStrings = page.ViewRoles.Split(',');
var newRolesString = new StringBuilder();
foreach (var roleName in rolesStrings)
{
if (!roleName.Trim().Equals(role.RoleName.Trim()))
{
newRolesString.Append(roleName.Trim());
newRolesString.Append(",");
}
}
page.ViewRoles = newRolesString.ToString().TrimEnd(',');
await _pageService.Update(page);
pagesUpdated++;
}
}
if (pagesUpdated > 0)
await _nav.GetTree();
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/EventHandlers/HandleRoleUpdated.cs
================================================
using cloudscribe.Core.Models;
using cloudscribe.Core.Models.EventHandlers;
using cloudscribe.SimpleContent.Models;
using cloudscribe.Web.Navigation;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.EventHandlers
{
public class HandleRoleUpdated : IHandleRoleUpdated
{
private readonly IPageService _pageService;
private readonly NavigationTreeBuilderService _nav;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly ILogger<HandleRoleUpdated> _logger;
public HandleRoleUpdated(IPageService pageService,
NavigationTreeBuilderService nav,
IHttpContextAccessor httpContextAccessor,
ILogger<HandleRoleUpdated> logger)
{
_pageService = pageService;
_nav = nav;
_httpContextAccessor = httpContextAccessor;
_logger = logger;
}
async Task IHandleRoleUpdated.Handle(ISiteRole role, string oldRoleName)
{
var pages = await _pageService.GetAllPages(role.SiteId.ToString());
int pagesUpdated = 0;
foreach (var page in pages.Where(p => !string.IsNullOrWhiteSpace(p.ViewRoles)))
{
// assuming no case sensitivity issues here
if (page.ViewRoles.Contains(oldRoleName))
{
var rolesStrings = page.ViewRoles.Split(',');
var newRolesString = new StringBuilder();
foreach (var roleName in rolesStrings)
{
if (roleName.Trim().Equals(oldRoleName.Trim()))
newRolesString.Append(role.RoleName);
else
newRolesString.Append(roleName.Trim());
newRolesString.Append(",");
}
page.ViewRoles = newRolesString.ToString().TrimEnd(',');
await _pageService.Update(page);
pagesUpdated++;
}
}
///////////////////////////////////
// This is an attempt to fiddle the navigation cache and the
// roles of the current user so that they remain in step with one another
// after a user renames a role that they themselves are in.
// Otherwise pages can mysteriously vanish from the nav when they should not do,
// following a role rename - jk
if (pagesUpdated > 0)
{
try
{
var user = _httpContextAccessor?.HttpContext?.User;
if (user != null && user.Identity != null && user.Identity.IsAuthenticated && user.IsInRole(oldRoleName))
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.Role, role.RoleName)
};
var appIdentity = new ClaimsIdentity(claims);
user.AddIdentity(appIdentity);
}
await _nav.GetTree();
}
catch (Exception ex)
{
_logger.LogError(ex, "Error re-setting user claims and cache after role update");
}
}
////////////////////////////////////////
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/MultiTenantBlogRoutes.cs
================================================
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2016-08-06
// Last Modified: 2019-03-04
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Models;
using cloudscribe.SimpleContent.Web.Services;
using Microsoft.Extensions.Options;
namespace cloudscribe.Core.SimpleContent.Integration
{
public class MultiTenantBlogRoutes : IBlogRoutes
{
public MultiTenantBlogRoutes(
SiteContext currentSite,
IOptions<MultiTenantOptions> multiTenantOptionsAccessor,
CultureHelper cultureHelper
)
{
_currentSite = currentSite;
_multiTenantOptions = multiTenantOptionsAccessor.Value;
_cultureHelper = cultureHelper;
}
private readonly SiteContext _currentSite;
private readonly MultiTenantOptions _multiTenantOptions;
private readonly CultureHelper _cultureHelper;
public string PostWithDateRouteName
{
get
{
if(_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if(!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPostWithDateRouteName;
}
return ProjectConstants.FolderPostWithDateRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePostWithDateRouteName;
}
return ProjectConstants.PostWithDateRouteName;
}
}
public string PostWithoutDateRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPostWithoutDateRouteName;
}
return ProjectConstants.FolderPostWithoutDateRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePostWithoutDateRouteName;
}
return ProjectConstants.PostWithoutDateRouteName;
}
}
public string MostRecentPostRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderMostRecentPostRouteName;
}
return ProjectConstants.FolderMostRecentPostRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureMostRecentPostRouteName;
}
return ProjectConstants.MostRecentPostRouteName;
}
}
public string BlogCategoryRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderBlogCategoryRouteName;
}
return ProjectConstants.FolderBlogCategoryRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureBlogCategoryRouteName;
}
return ProjectConstants.BlogCategoryRouteName;
}
}
public string BlogArchiveRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderBlogArchiveRouteName;
}
return ProjectConstants.FolderBlogArchiveRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureBlogArchiveRouteName;
}
return ProjectConstants.BlogArchiveRouteName;
}
}
public string NewPostRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderNewPostRouteName;
}
return ProjectConstants.FolderNewPostRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureNewPostRouteName;
}
return ProjectConstants.NewPostRouteName;
}
}
public string BlogIndexRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderBlogIndexRouteName;
}
return ProjectConstants.FolderBlogIndexRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureBlogIndexRouteName;
}
return ProjectConstants.BlogIndexRouteName;
}
}
public string PostEditRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPostEditRouteName;
}
return ProjectConstants.FolderPostEditRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePostEditRouteName;
}
return ProjectConstants.PostEditRouteName;
}
}
public string PostEditWithTemplateRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPostEditWithTemplateRouteName;
}
return ProjectConstants.FolderPostEditWithTemplateRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePostEditWithTemplateRouteName;
}
return ProjectConstants.PostEditWithTemplateRouteName;
}
}
public string PostDeleteRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPostDeleteRouteName;
}
return ProjectConstants.FolderPostDeleteRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePostDeleteRouteName;
}
return ProjectConstants.PostDeleteRouteName;
}
}
public string PostHistoryRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPostHistoryRouteName;
}
return ProjectConstants.FolderPostHistoryRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePostHistoryRouteName;
}
return ProjectConstants.PostHistoryRouteName;
}
}
public string CanEditRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderBlogCanEditRouteName;
}
return ProjectConstants.FolderBlogCanEditRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureBlogCanEditRouteName;
}
return ProjectConstants.BlogCanEditRouteName;
}
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/MultiTenantPageRoutes.cs
================================================
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2017-01-08
// Last Modified: 2019-07-03
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Models;
using cloudscribe.SimpleContent.Web.Services;
using Microsoft.Extensions.Options;
namespace cloudscribe.Core.SimpleContent.Integration
{
public class MultiTenantPageRoutes : IPageRoutes
{
public MultiTenantPageRoutes(
SiteContext currentSite,
IOptions<MultiTenantOptions> multiTenantOptionsAccessor,
CultureHelper cultureHelper
)
{
_currentSite = currentSite;
_multiTenantOptions = multiTenantOptionsAccessor.Value;
_cultureHelper = cultureHelper;
}
private SiteContext _currentSite;
private MultiTenantOptions _multiTenantOptions;
private readonly CultureHelper _cultureHelper;
public string PageRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPageIndexRouteName;
}
return ProjectConstants.FolderPageIndexRouteName;
}
}
if(_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePageIndexRouteName;
}
return ProjectConstants.PageIndexRouteName;
}
}
public string PageEditRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPageEditRouteName;
}
return ProjectConstants.FolderPageEditRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePageEditRouteName;
}
return ProjectConstants.PageEditRouteName;
}
}
public string PageEditWithTemplateRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPageEditWithTemplateRouteName;
}
return ProjectConstants.FolderPageEditWithTemplateRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePageEditWithTemplateRouteName;
}
return ProjectConstants.PageEditWithTemplateRouteName;
}
}
public string NewPageRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderNewPageRouteName;
}
return ProjectConstants.FolderNewPageRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureNewPageRouteName;
}
return ProjectConstants.NewPageRouteName;
}
}
public string PageDeleteRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPageDeleteRouteName;
}
return ProjectConstants.FolderPageDeleteRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePageDeleteRouteName;
}
return ProjectConstants.PageDeleteRouteName;
}
}
public string PageDevelopRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPageDevelopRouteName;
}
return ProjectConstants.FolderPageDevelopRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePageDevelopRouteName;
}
return ProjectConstants.PageDevelopRouteName;
}
}
public string PageTreeRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPageTreeRouteName;
}
return ProjectConstants.FolderPageTreeRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePageTreeRouteName;
}
return ProjectConstants.PageTreeRouteName;
}
}
public string PageHistoryRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPageHistoryRouteName;
}
return ProjectConstants.FolderPageHistoryRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePageHistoryRouteName;
}
return ProjectConstants.PageHistoryRouteName;
}
}
public string CanEditRouteName
{
get
{
if (_multiTenantOptions.Mode == MultiTenantMode.FolderName)
{
if (!string.IsNullOrEmpty(_currentSite.SiteFolderName))
{
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CultureFolderPageCanEditRouteName;
}
return ProjectConstants.FolderPageCanEditRouteName;
}
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return ProjectConstants.CulturePageCanEditRouteName;
}
return ProjectConstants.PageCanEditRouteName;
}
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/ProjectSecurityResolver.cs
================================================
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2016-07-11
// Last Modified: 2016-08-13
//
using cloudscribe.Core.Identity;
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Web;
using cloudscribe.SimpleContent.Models;
using Microsoft.AspNetCore.Authorization;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
namespace cloudscribe.Core.SimpleContent.Integration
{
public class ProjectSecurityResolver : IProjectSecurityResolver
{
public ProjectSecurityResolver(
SiteUserManager<SiteUser> userManager,
SignInManager<SiteUser> signInManager,
IProjectSettingsResolver projectResolver,
IAuthorizationService authorizationService
)
{
this.userManager = userManager;
this.signInManager = signInManager;
this.projectResolver = projectResolver;
this.authorizationService = authorizationService;
}
private SiteUserManager<SiteUser> userManager;
private SignInManager<SiteUser> signInManager;
private IAuthorizationService authorizationService;
private IProjectSettingsResolver projectResolver;
public async Task<ProjectSecurityResult> ValidatePermissions(
string projectId,
string userName,
string providedPassword,
CancellationToken cancellationToken)
{
var displayName = string.Empty;
var isAuthenticated = false;
var canEditPosts = false;
var canEditPages = false;
var timeZoneId = userManager.Site.TimeZoneId;
var authUser = await userManager.FindByNameAsync(userName);
if (authUser != null)
{
isAuthenticated = await userManager.CheckPasswordAsync(authUser, providedPassword);
}
if (isAuthenticated)
{
var claimsPrincipal = await signInManager.CreateUserPrincipalAsync(authUser);
if (string.IsNullOrEmpty(projectId))
{
projectId = claimsPrincipal.GetProjectId();
}
if (string.IsNullOrEmpty(projectId))
{
var project = await projectResolver.GetCurrentProjectSettings(cancellationToken);
if (project != null) projectId = project.Id;
}
if (!string.IsNullOrEmpty(projectId))
{
canEditPosts = await claimsPrincipal.CanEditBlog(projectId, authorizationService);
canEditPages = await claimsPrincipal.CanEditPages(projectId, authorizationService);
}
//displayName = claimsPrincipal.GetDisplayName();
displayName = claimsPrincipal.Identity.Name;
if(!string.IsNullOrWhiteSpace(authUser.TimeZoneId))
{
timeZoneId = authUser.TimeZoneId;
}
}
var blogSecurity = new ProjectSecurityResult(displayName, projectId, isAuthenticated, canEditPosts, canEditPages, timeZoneId);
return blogSecurity;
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/README.md
================================================
# cloudscribe.Core.SimpleContent
[](https://www.nuget.org/packages/cloudscribe.Core.SimpleContent)
[](https://opensource.org/licenses/Apache-2.0)
Core library for the cloudscribe SimpleContent CMS and blog engine for ASP.NET Core.
## Installation
```shell
Install-Package cloudscribe.Core.SimpleContent
```
## Usage
Reference this package to add core content and blog features to your ASP.NET Core application.
## Contributing
Contributions are welcome! Please see the [contributing guidelines](https://github.com/cloudscribe/cloudscribe.SimpleContent/blob/main/CONTRIBUTING.md).
## License
Licensed under the Apache 2.0 License. See the [LICENSE](https://github.com/cloudscribe/cloudscribe.SimpleContent/blob/main/LICENSE) file for details.
================================================
FILE: src/cloudscribe.Core.SimpleContent/Resources.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Integration
{
/// <summary>
/// a class to represent localization resources for controllers and views
/// </summary>
public class SimpleContentIntegration
{
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/SiteFileSystemMediaProcessor.cs
================================================
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2017-05-28
// Last Modified: 2018-07-09
//
using cloudscribe.Core.Models;
using cloudscribe.FileManager.Web.Models;
using cloudscribe.SimpleContent.Models;
using cloudscribe.SimpleContent.Services;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
using System.IO;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Integration
{
public class SiteFileSystemMediaProcessor : FileSystemMediaProcessor, IMediaProcessor
{
public SiteFileSystemMediaProcessor(
SiteContext currentSite,
IMediaPathResolver mediaPathResolver,
ILogger<FileSystemMediaProcessor> logger,
IWebHostEnvironment env
):base(logger, env)
{
_currentSite = currentSite;
_mediaPathResolver = mediaPathResolver;
}
private readonly SiteContext _currentSite;
private IMediaPathResolver _mediaPathResolver;
private MediaRootPathInfo rootPath;
private async Task EnsurePathInfo()
{
if (rootPath != null) { return; }
rootPath = await _mediaPathResolver.Resolve().ConfigureAwait(false);
if (rootPath != null) { return; }
}
private async Task EnsureFsPath(string mediaVirtualPath)
{
await EnsurePathInfo();
var fsPath = rootPath.RootFileSystemPath + mediaVirtualPath.Replace('/', Path.DirectorySeparatorChar);
if (Directory.Exists(fsPath)) return; //nothing to do
var segments = mediaVirtualPath.Split('/');
EnsureFolderPaths(rootPath.RootFileSystemPath, segments);
}
public override async Task<string> ResolveMediaUrl(string mediaVirtualPath, string fileName)
{
var result = await base.ResolveMediaUrl(mediaVirtualPath, fileName);
if(!string.IsNullOrWhiteSpace(_currentSite.SiteFolderName))
{
return "/" + _currentSite.SiteFolderName + result;
}
return result;
}
public override async Task SaveMedia(string mediaVirtualPath, string fileName, byte[] bytes)
{
await EnsureFsPath(mediaVirtualPath);
var newUrl = mediaVirtualPath + fileName;
var fsPath = rootPath.RootFileSystemPath + newUrl.Replace('/', Path.DirectorySeparatorChar);
File.WriteAllBytes(fsPath, bytes);
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/SiteNavigationCacheKeyResolver.cs
================================================
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Web.Services;
using cloudscribe.Web.Navigation;
using cloudscribe.Web.Navigation.Caching;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent
{
public class SiteNavigationCacheKeyResolver : ITreeCacheKeyResolver
{
public SiteNavigationCacheKeyResolver(
SiteContext currentSite,
CultureHelper cultureHelper
)
{
_currentSite = currentSite;
_cultureHelper = cultureHelper;
}
private readonly SiteContext _currentSite;
private readonly CultureHelper _cultureHelper;
public Task<string> GetCacheKey(INavigationTreeBuilder builder)
{
if(_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
return Task.FromResult(builder.Name + _currentSite.Id.ToString() + _cultureHelper.CurrentUICultureName());
}
return Task.FromResult(builder.Name + _currentSite.Id.ToString());
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/SiteProjectSettingsResolver.cs
================================================
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2016-07-11
// Last Modified: 2019-03-04
//
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Models;
using cloudscribe.SimpleContent.Web.Services;
using Microsoft.Extensions.Options;
using System.Threading;
using System.Threading.Tasks;
namespace cloudscribe.Core.SimpleContent.Integration
{
public class SiteProjectSettingsResolver : IProjectSettingsResolver
{
public SiteProjectSettingsResolver(
SiteContext currentSite,
IProjectQueries projectQueries,
IProjectCommands projectCommands,
IOptions<ContentSettingsUIConfig> uiOptionsAccessor,
CultureHelper cultureHelper
)
{
_currentSite = currentSite;
_projectQueries = projectQueries;
_projectCommands = projectCommands;
_uiOptions = uiOptionsAccessor.Value;
_cultureHelper = cultureHelper;
}
private readonly SiteContext _currentSite;
private readonly IProjectQueries _projectQueries;
private readonly IProjectCommands _projectCommands;
private readonly ContentSettingsUIConfig _uiOptions;
private readonly CultureHelper _cultureHelper;
public async Task<IProjectSettings> GetCurrentProjectSettings(CancellationToken cancellationToken)
{
IProjectSettings settings;
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
var settingsKey = _currentSite.Id.ToString() + "~" + _cultureHelper.CurrentUICultureName();
settings = await _projectQueries.GetProjectSettings(settingsKey, cancellationToken).ConfigureAwait(false);
}
else
{
settings = await _projectQueries.GetProjectSettings(_currentSite.Id.ToString(), cancellationToken).ConfigureAwait(false);
}
//ensure existence of settings
if(settings == null)
{
settings = new ProjectSettings();
settings.Id = _currentSite.Id.ToString();
if(!_uiOptions.ShowBlogMenuOptions)
{
settings.AddBlogToPagesTree = false;
settings.BlogMenuLinksToNewestPost = false;
}
if (_cultureHelper.UseCultureRoutesAndProjects() && !_cultureHelper.IsDefaultCulture())
{
settings.Id = settings.Id + "~" + _cultureHelper.CurrentUICultureName();
}
if (!_uiOptions.ShowBlogMenuOptions)
{
// ShowBlogMenuOptions is true only when "option a" in the vsix template
// which implies that the default page slug should be forced to 'home'.
// Otherwise...
settings.DefaultPageSlug = "page1";
}
await _projectCommands.Create(settings.Id, settings, cancellationToken).ConfigureAwait(false);
}
if (string.IsNullOrEmpty(settings.RecaptchaPublicKey))
{
settings.RecaptchaPublicKey = _currentSite.RecaptchaPublicKey;
settings.RecaptchaPrivateKey = _currentSite.RecaptchaPrivateKey;
}
if (!_uiOptions.ShowBlogMenuOptions)
{
settings.AddBlogToPagesTree = false;
}
settings.TimeZoneId = _currentSite.TimeZoneId;
return settings;
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/SiteRoleSelectorProperties.cs
================================================
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2016-08-26
// Last Modified: 2017-06-09
//
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Web.TagHelpers;
using System.Collections.Generic;
namespace cloudscribe.Core.SimpleContent.Integration
{
public class SiteRoleSelectorProperties : IRoleSelectorProperties
{
public SiteRoleSelectorProperties(SiteContext currentSite)
{
this.currentSite = currentSite;
RequiredScriptPaths = new List<string>();
RequiredScriptPaths.Add("~/cr/js/jquery.unobtrusive-ajax.min.js");
RequiredScriptPaths.Add("~/cr/js/cloudscribe-role-selector.min.js");
}
private SiteContext currentSite;
public string Action
{
get { return "Modal"; }
}
public string Controller
{
get { return "RoleAdmin"; }
}
public Dictionary<string, string> GetAttributes(string csvTargetElementId, string displayTargetId = "")
{
var result = new Dictionary<string, string>();
result.Add("data-ajax", "true");
result.Add("data-ajax-begin", "roleSelector.prepareModal('" + csvTargetElementId + "','" + displayTargetId + "')");
result.Add("data-ajax-failure", "roleSelector.clearModal()");
result.Add("data-ajax-method", "GET");
result.Add("data-ajax-mode", "replace");
result.Add("data-ajax-success", "roleSelector.openModal()");
result.Add("data-ajax-update", "#roledialog");
return result;
}
public Dictionary<string, string> GetRouteParams(string projectId)
{
var result = new Dictionary<string, string>();
result.Add("siteId", projectId);
return result;
}
public List<string> RequiredScriptPaths { get; private set; }
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/SiteSimpleContentThemeHelper.cs
================================================
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Web.Design;
using Microsoft.Extensions.Options;
namespace cloudscribe.Core.SimpleContent
{
public class SiteSimpleContentThemeHelper : ISimpleContentThemeHelper
{
public SiteSimpleContentThemeHelper(
SiteContext currentSite,
IOptions<SimpleContentThemeConfig> themeConfigAccessor,
IOptions<SimpleContentIconConfig> iconConfigOptionsAccessor
)
{
_currentSite = currentSite;
_themeConfig = themeConfigAccessor.Value;
_iconConfig = iconConfigOptionsAccessor.Value;
}
private SiteContext _currentSite;
private SimpleContentThemeConfig _themeConfig;
private SimpleContentIconConfig _iconConfig;
public SimpleContentThemeSettings GetThemeSettings()
{
SimpleContentThemeSettings result = null;
foreach (var ts in _themeConfig.ThemeSettings)
{
if (ts.ThemeName == _currentSite.Theme)
{
result = ts;
break;
}
}
if(result == null)
{
foreach (var ts in _themeConfig.ThemeSettings)
{
if (ts.ThemeName == "default")
{
result = ts;
break;
}
}
}
if (result == null)
{
result = new SimpleContentThemeSettings();
}
result.Icons = _iconConfig.GetIcons(result.IconSetId);
return result;
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/StartupExtenstions.cs
================================================
using cloudscribe.Core.Models.EventHandlers;
using cloudscribe.Core.SimpleContent;
using cloudscribe.Core.SimpleContent.EventHandlers;
using cloudscribe.Core.SimpleContent.Integration;
using cloudscribe.SimpleContent.Models;
using cloudscribe.SimpleContent.Web.Design;
using cloudscribe.SimpleContent.Web.TagHelpers;
using cloudscribe.Versioning;
using cloudscribe.Web.Navigation.Caching;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace Microsoft.Extensions.DependencyInjection
{
public static class StartupExtenstions
{
public static IServiceCollection AddCloudscribeCoreIntegrationForSimpleContent(
this IServiceCollection services,
IConfiguration configuration = null
)
{
services.AddScoped<IProjectSettingsResolver, SiteProjectSettingsResolver>();
services.AddScoped<IProjectSecurityResolver, ProjectSecurityResolver>();
services.TryAddScoped<IMediaProcessor, SiteFileSystemMediaProcessor>();
services.AddScoped<IBlogRoutes, MultiTenantBlogRoutes>();
services.AddScoped<IPageRoutes, MultiTenantPageRoutes>();
services.AddScoped<IRoleSelectorProperties, SiteRoleSelectorProperties>();
services.TryAddScoped<IAuthorNameResolver, AuthorNameResolver>();
services.TryAddScoped<IProjectEmailService, CoreProjectEmailService>();
services.AddScoped<ISimpleContentThemeHelper, SiteSimpleContentThemeHelper>();
services.AddScoped<ITreeCacheKeyResolver, SiteNavigationCacheKeyResolver>();
services.AddScoped<IHandleRoleUpdated, HandleRoleUpdated>();
services.AddScoped<IHandleRoleDeleted, HandleRoleDeleted>();
services.AddScoped<IVersionProvider, VersionProvider>();
if (configuration != null)
{
services.Configure<ContentSettingsUIConfig>(configuration.GetSection("ContentSettingsUIConfig"));
}
else
{
services.Configure<ContentSettingsUIConfig>(c =>
{
// not doing anything just configuring the default
});
}
return services;
}
public static AuthorizationOptions AddCloudscribeCoreSimpleContentIntegrationDefaultPolicies(this AuthorizationOptions options)
{
options.AddPolicy("BlogViewPolicy", policy =>
policy.RequireAssertion(context =>
{
return true; //allow anonymous
})
);
options.AddPolicy(
"BlogEditPolicy",
authBuilder =>
{
//authBuilder.RequireClaim("blogId");
authBuilder.RequireRole("Administrators", "Content Administrators");
}
);
options.AddPolicy(
"PageEditPolicy",
authBuilder =>
{
authBuilder.RequireRole("Administrators", "Content Administrators");
});
options.AddPolicy(
"ViewContentHistoryPolicy",
authBuilder =>
{
authBuilder.RequireRole("Administrators", "Content Administrators");
}
);
return options;
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/VersionProvider.cs
================================================
using cloudscribe.Core.SimpleContent.Integration;
using cloudscribe.Versioning;
using cloudscribe.Web.Common;
using System;
using System.Reflection;
namespace cloudscribe.Core.SimpleContent
{
public class VersionProvider : IVersionProvider
{
private Assembly assembly = typeof(AuthorNameResolver).Assembly;
public string Name
{
get { return assembly.GetName().Name; }
}
public Guid ApplicationId { get { return new Guid("f94177b4-919d-4910-acd1-4b3b1c210ecf"); } }
public Version CurrentVersion
{
get
{
var version = new Version(2, 0, 0, 0);
var versionString = typeof(CloudscribeCommonResources).Assembly.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;
if (!string.IsNullOrWhiteSpace(versionString))
{
Version.TryParse(versionString, out version);
}
return version;
}
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/ViewModels/ContentCloningViewModel.cs
================================================
// Copyright (c) Idox Software Ltd All rights reserved.
// Licensed under the Apache License, Version 2.0.
// See License.txt in the project root for license information.
// Author: Simon Annetts, Idox Software Ltd
// Created: 2023-08-17
// Last Modified: 2023-08-17
//
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace cloudscribe.Core.SimpleContent.Integration.ViewModels
{
public class ContentCloningViewModel
{
public ContentCloningViewModel()
{
}
//this could be passed in from the Site Settings List page
public string SiteId { get; set; } = string.Empty;
public Boolean CloneContentSettings { get; set; } = true;
public Boolean ClonePages { get; set; } = true;
public Boolean RewriteContentUrls { get; set; } = false;
public Boolean CloneBlogPosts { get; set; } = true;
public string CloneFromSiteId { get; set; } = null;
public string CloneFromSiteName { get; set; } = string.Empty;
public int CloneFromPageCount { get; set; } = 0;
public int CloneFromPostCount { get; set; } = 0;
public List<SiteDetails> CloneFromSites { get; set; } = new List<SiteDetails>();
public string CloneToSiteId { get; set; } = null;
public string CloneToSiteName { get; set; } = string.Empty;
public int CloneToPageCount { get; set; } = 0;
public int CloneToPostCount { get; set; } = 0;
public List<SiteDetails> CloneToSites { get; set; } = new List<SiteDetails>();
public Boolean AllowCloneToSiteSelection { get; set; } = true;
public bool CloneAllowed { get; set; } = false;
public string Command { get; set; } = string.Empty;
public class SiteDetails
{
public string SiteId { get; set; }
public string SiteIdentifier { get; set; }
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/ViewModels/ContentSettingsViewModel.cs
================================================
// Copyright (c) Source Tree Solutions, LLC. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Author: Joe Audette
// Created: 2016-08-05
// Last Modified: 2019-02-10
//
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Models;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace cloudscribe.Core.SimpleContent.Integration.ViewModels
{
public class ContentSettingsViewModel
{
public ContentSettingsViewModel()
{
Editors = new List<ISiteUser>();
}
public List<ISiteUser> Editors { get; set; }
public string Title { get; set; } = "Blog";
public bool ShowTitle { get; set; } = false;
public string Description { get; set; } = string.Empty;
//public string CopyrightNotice { get; set; } = string.Empty;
//public string Image { get; set; } = string.Empty;
public int PostsPerPage { get; set; } = 5;
public string PubDateFormat { get; set; } = "MMMM d. yyyy";
public bool IncludePubDateInPostUrls { get; set; } = true;
public string LocalMediaVirtualPath { get; set; } = "/media/images/";
public string CdnUrl { get; set; }
public int DaysToComment { get; set; } = -1;
public bool ModerateComments { get; set; } = true;
[EmailAddress(ErrorMessage = "The Notification Email field is not a valid e-mail address.")]
[StringLength(100, ErrorMessage = "Notification Email has a maximum length of 100 characters")]
public string CommentNotificationEmail { get; set; } = string.Empty;
public string DefaultPageSlug { get; set; } = "home";
public string DefaultContentType { get; set; } = "html";
public bool ShowRelatedPosts { get; set; } = true;
public bool ShowBlogCategories { get; set; } = true;
public bool ShowArchivedPosts { get; set; } = true;
public bool ShowAboutBox { get; set; } = true;
public string AboutHeading { get; set; } = "About";
public string AboutContent { get; set; }
// if true automatically add the blog index
public bool AddBlogToPagesTree { get; set; } = true;
public bool BlogMenuLinksToNewestPost { get; set; } = false;
public int BlogPagePosition { get; set; } = 2; // right after home page
[Required(ErrorMessage ="Blog Menu Text is required")]
public string BlogPageText { get; set; } = "Blog";
public string BlogPageNavComponentVisibility { get; set; }
public int DefaultFeedItems { get; set; } = 20;
public int MaxFeedItems { get; set; } = 1000;
[DataType(DataType.Url)]
public string RemoteFeedUrl { get; set; } = string.Empty;
/// <summary>
/// ie Feedburner User Agent fragment "FeedBurner"
/// </summary>
public string RemoteFeedProcessorUseAgentFragment { get; set; } = "FeedBurner";
// public bool UseMetaDescriptionInFeed { get; set; } = false;
public int ChannelTimeToLive { get; set; } = 60;
public string LanguageCode { get; set; } = "en-US";
public string ChannelCategoriesCsv { get; set; } = string.Empty;
[EmailAddress(ErrorMessage = "The Notification Email field is not a valid e-mail address.")]
[StringLength(100, ErrorMessage = "Notification Email has a maximum length of 100 characters")]
public string ManagingEditorEmail { get; set; } = string.Empty;
public string ChannelRating { get; set; } = string.Empty;
[EmailAddress(ErrorMessage = "The Webmaster Email field is not a valid e-mail address.")]
[StringLength(100, ErrorMessage = "Webmaster Email has a maximum length of 100 characters")]
public string WebmasterEmail { get; set; } = string.Empty;
public string Publisher { get; set; } = string.Empty;
[DataType(DataType.ImageUrl)]
public string PublisherLogoUrl { get; set; } = string.Empty;
public string PublisherLogoWidth { get; set; } = "500px";
public string PublisherLogoHeight { get; set; } = "500px";
public string PublisherEntityType { get; set; } = "Organization";
public string DisqusShortName { get; set; } = string.Empty;
public bool ShowRecentPostsOnDefaultPage { get; set; }
public bool ShowFeaturedPostsOnDefaultPage { get; set; }
[StringLength(100, ErrorMessage = "FacebookAppId has a maximum length of 100 characters")]
public string FacebookAppId { get; set; }
[StringLength(200, ErrorMessage = "SiteName has a maximum length of 200 characters")]
public string SiteName { get; set; }
[StringLength(100, ErrorMessage = "TwitterPublisher has a maximum length of 100 characters")]
public string TwitterPublisher { get; set; }
[StringLength(100, ErrorMessage = "TwitterCreator has a maximum length of 100 characters")]
public string TwitterCreator { get; set; }
public bool TeasersDisabled { get; set; }
public TeaserMode TeaserMode { get; set; }
public TeaserTruncationMode TeaserTruncationMode { get; set; }
public int TeaserTruncationLength { get; set; } = 20; // Default 20 words.
public bool ShowCreatedBy { get; set; } = false;
public bool ShowCreatedDate { get; set; } = false;
public bool ShowLastModifiedBy { get; set; } = false;
public bool ShowLastModifiedDate { get; set; } = false;
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/ViewModels/CoreCommentNotificationModel.cs
================================================
using cloudscribe.Core.Models;
using cloudscribe.SimpleContent.Models;
using System;
using System.Collections.Generic;
using System.Text;
namespace cloudscribe.Core.SimpleContent.ViewModels
{
public class CoreCommentNotificationModel
{
public CoreCommentNotificationModel(
ISiteContext site,
IProjectSettings project,
IPost post,
IComment comment,
string postUrl)
{
Site = site;
Project = project;
Post = post;
Comment = comment;
PostUrl = postUrl;
}
public ISiteContext Site { get; private set; }
public IProjectSettings Project { get; private set; }
public IPost Post { get; private set; }
public IComment Comment { get; private set; }
public string PostUrl { get; private set; }
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent/cloudscribe.Core.SimpleContent.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>integration library for integrating cloudscribe SimpleContent with cloudscribe Core multi-tenant web app foundation</Description>
<Version>10.1.0</Version>
<TargetFramework>net10.0</TargetFramework>
<Authors>Joe Audette</Authors>
<PackageTags>cloudscribe;blog</PackageTags>
<PackageIcon>icon.png</PackageIcon>
<PackageProjectUrl>https://github.com/cloudscribe/cloudscribe.SimpleContent</PackageProjectUrl>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
<RepositoryUrl>https://github.com/cloudscribe/cloudscribe.SimpleContent.git</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageReadmeFile>README.md</PackageReadmeFile>
</PropertyGroup>
<ItemGroup>
<None Include="icon.png" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\cloudscribe.MetaWeblog\cloudscribe.MetaWeblog.csproj" />
<ProjectReference Include="..\cloudscribe.SimpleContent.Models\cloudscribe.SimpleContent.Models.csproj" />
<ProjectReference Include="..\cloudscribe.SimpleContent.Web\cloudscribe.SimpleContent.Web.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="cloudscribe.Core.Models" Version="10.1.0" />
<PackageReference Include="cloudscribe.Core.Identity" Version="10.1.0" />
<PackageReference Include="cloudscribe.Core.Web" Version="10.1.0" />
<PackageReference Include="cloudscribe.Web.Common" Version="10.1.0" />
<PackageReference Include="cloudscribe.FileManager.Web" Version="10.1.0" />
<PackageReference Include="cloudscribe.Syndication.Web" Version="10.1.0" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="10.0.0" />
<PackageReference Include="Microsoft.Extensions.Localization" Version="10.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="10.0.0" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.0" />
</ItemGroup>
<ItemGroup>
<None Include="README.md" Pack="true" PackagePath="/" />
</ItemGroup>
</Project>
================================================
FILE: src/cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5/README.md
================================================
# cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5
[](https://www.nuget.org/packages/cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5)
[](https://opensource.org/licenses/Apache-2.0)
Precompiled Bootstrap 5 views for cloudscribe.Core.SimpleContent.
## Installation
```shell
Install-Package cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5
```
## Usage
Add this package to your ASP.NET Core project to use Bootstrap 5 precompiled views with SimpleContent.
## Contributing
Contributions are welcome! Please see the [contributing guidelines](https://github.com/cloudscribe/cloudscribe.SimpleContent/blob/main/CONTRIBUTING.md).
## License
Licensed under the Apache 2.0 License. See the [LICENSE](https://github.com/cloudscribe/cloudscribe.SimpleContent/blob/main/LICENSE) file for details.
================================================
FILE: src/cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5/VersionProvider.cs
================================================
using System;
using System.Reflection;
using cloudscribe.Versioning;
using cloudscribe.Web.Common;
namespace cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5
{
public class VersionProvider : IVersionProvider
{
public string Name { get { return "cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5"; } }
public Guid ApplicationId { get { return new Guid("f93067b4-919d-4910-acd1-4b3b1c210ecf"); } }
public Version CurrentVersion
{
get
{
var version = new Version(2, 0, 0, 0);
var versionString = typeof(CloudscribeCommonResources).Assembly.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;
if (!string.IsNullOrWhiteSpace(versionString))
{
Version.TryParse(versionString, out version);
}
return version;
}
}
}
}
================================================
FILE: src/cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/BlogMetaPartial.cshtml
================================================
@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel
@using cloudscribe.Web.Common.Extensions
@inject ISiteContextResolver siteResolver
@{
var imageUrl = Model.ExtractFirstImageUrl(Model.CurrentPost, Url);
var Tenant = await siteResolver.ResolveSite(Context.Request.Host.Host, Context.Request.Path);
var folderSegment = "";
if(!string.IsNullOrWhiteSpace(Tenant.SiteFolderName))
{
folderSegment = Tenant.SiteFolderName + "/";
}
var rssUrl = string.Format("/{0}api/rss/", folderSegment);
}
@if (Model.CurrentPost != null && !string.IsNullOrEmpty(Model.CurrentPost.MetaDescription))
{
<meta name="description" content="@Model.CurrentPost.MetaDescription" />
<meta property="og:title" content="@Model.CurrentPost.Title" />
<meta property="og:type" content="article" />
<meta property="og:url" content="@ViewContext.HttpContext.Request.GetCurrentFullUrl()" />
@if (!string.IsNullOrEmpty(imageUrl))
{
gitextract_xvb6op_9/ ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── cloudscribe-develop.yml │ ├── cloudscribe-master.yml │ └── nuget-push-to-production.yml ├── .gitignore ├── .travis.yml ├── .vscode/ │ ├── launch.json │ └── tasks.json ├── CONTRIBUTING.md ├── LICENSE ├── NuGet.Config ├── README.md ├── appveyor-cake-backup.yml ├── appveyor.yml ├── build.cake ├── build.ps1 ├── build.sh ├── cake/ │ └── paths.cake ├── cloudscribe.SimpleContent.code-workspace ├── cloudscribe.SimpleContent.sln ├── package.json ├── samples/ │ └── README.md ├── src/ │ ├── cloudscribe.ContentUtils/ │ │ ├── ExcerptHelper.cs │ │ ├── ExcerptResult.cs │ │ ├── MarkdownHelper.cs │ │ ├── README.md │ │ ├── SlugHelper.cs │ │ ├── Truncation.cs │ │ └── cloudscribe.ContentUtils.csproj │ ├── cloudscribe.Core.SimpleContent/ │ │ ├── AuthorNameResolver.cs │ │ ├── ClaimsPrincipalExtensions.cs │ │ ├── ContentSettingsUIConfig.cs │ │ ├── Controllers/ │ │ │ ├── ContentCloningController.cs │ │ │ ├── ContentSettingsController.cs │ │ │ ├── CultureMetaweblogController.cs │ │ │ ├── CultureRssController.cs │ │ │ ├── CultureSiteMapController.cs │ │ │ ├── FolderMetaweblogController.cs │ │ │ └── FolderRssController.cs │ │ ├── CoreProjectEmailService.cs │ │ ├── CustomClaimProvider.cs │ │ ├── EventHandlers/ │ │ │ ├── HandleRoleDeletred.cs │ │ │ └── HandleRoleUpdated.cs │ │ ├── MultiTenantBlogRoutes.cs │ │ ├── MultiTenantPageRoutes.cs │ │ ├── ProjectSecurityResolver.cs │ │ ├── README.md │ │ ├── Resources.cs │ │ ├── SiteFileSystemMediaProcessor.cs │ │ ├── SiteNavigationCacheKeyResolver.cs │ │ ├── SiteProjectSettingsResolver.cs │ │ ├── SiteRoleSelectorProperties.cs │ │ ├── SiteSimpleContentThemeHelper.cs │ │ ├── StartupExtenstions.cs │ │ ├── VersionProvider.cs │ │ ├── ViewModels/ │ │ │ ├── ContentCloningViewModel.cs │ │ │ ├── ContentSettingsViewModel.cs │ │ │ └── CoreCommentNotificationModel.cs │ │ └── cloudscribe.Core.SimpleContent.csproj │ ├── cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5/ │ │ ├── README.md │ │ ├── VersionProvider.cs │ │ ├── Views/ │ │ │ ├── Blog/ │ │ │ │ └── BlogMetaPartial.cshtml │ │ │ ├── ContentCloning/ │ │ │ │ └── Index.cshtml │ │ │ ├── ContentSettings/ │ │ │ │ ├── CdnUrlPartial.cshtml │ │ │ │ ├── CommentSystemSettings.cshtml │ │ │ │ ├── Index.cshtml │ │ │ │ └── MediaPathPartial.cshtml │ │ │ ├── Page/ │ │ │ │ └── Tree.cshtml │ │ │ ├── Shared/ │ │ │ │ ├── CmsSiteLogoPartial.cshtml │ │ │ │ ├── CmsSiteTitlePartial.cshtml │ │ │ │ └── CommentNotificationEmail.cshtml │ │ │ └── _ViewImports.cshtml │ │ └── cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5.csproj │ ├── cloudscribe.MetaWeblog/ │ │ ├── Controllers/ │ │ │ └── MetaWeblogController.cs │ │ ├── IMetaWeblogRequestParser.cs │ │ ├── IMetaWeblogRequestProcessor.cs │ │ ├── IMetaWeblogRequestValidator.cs │ │ ├── IMetaWeblogResultFormatter.cs │ │ ├── IMetaWeblogSecurity.cs │ │ ├── IMetaWeblogService.cs │ │ ├── MetaWeblogRequest.cs │ │ ├── MetaWeblogRequestParser.cs │ │ ├── MetaWeblogRequestProcessor.cs │ │ ├── MetaWeblogRequestValidator.cs │ │ ├── MetaWeblogResult.cs │ │ ├── MetaWeblogResultExtensions.cs │ │ ├── MetaWeblogResultFormatter.cs │ │ ├── MetaWeblogSecurityResult.cs │ │ ├── Models/ │ │ │ ├── ApiOptions.cs │ │ │ ├── AuthorStruct.cs │ │ │ ├── BlogInfoStruct.cs │ │ │ ├── CategoryStruct.cs │ │ │ ├── FaultStruct.cs │ │ │ ├── MediaInfoStruct.cs │ │ │ ├── MediaObjectStruct.cs │ │ │ ├── MetaWeblogException.cs │ │ │ ├── PageStruct.cs │ │ │ ├── PostStruct.cs │ │ │ └── UserInfoStruct.cs │ │ ├── README.md │ │ ├── ServiceCollectionExtensions.cs │ │ ├── Utils.cs │ │ ├── XmlResult.cs │ │ └── cloudscribe.MetaWeblog.csproj │ ├── cloudscribe.SimpleContent.CompiledViews.Bootstrap5/ │ │ ├── README.md │ │ ├── VersionProvider.cs │ │ ├── Views/ │ │ │ ├── Blog/ │ │ │ │ ├── AboutPartial.cshtml │ │ │ │ ├── Archive.cshtml │ │ │ │ ├── ArchiveListPartial.cshtml │ │ │ │ ├── BlogHeaderPartial.cshtml │ │ │ │ ├── BlogMetaPartial.cshtml │ │ │ │ ├── BlogScriptsPartial.cshtml │ │ │ │ ├── BlogStylePartial.cshtml │ │ │ │ ├── CategoryListPartial.cshtml │ │ │ │ ├── CommentLinkDetail.cshtml │ │ │ │ ├── CommentLinkList.cshtml │ │ │ │ ├── CommentWrapperPartial.cshtml │ │ │ │ ├── DisqusCommentsPartial.cshtml │ │ │ │ ├── DraftInfoPartial.cshtml │ │ │ │ ├── Edit.cshtml │ │ │ │ ├── EditContentHtmlPartial.cshtml │ │ │ │ ├── EditContentMarkdownPartial.cshtml │ │ │ │ ├── EditCorrelationKeyPartial.cshtml │ │ │ │ ├── EditDraftPubDatePartial.cshtml │ │ │ │ ├── EditHistoryInfoPartial.cshtml │ │ │ │ ├── EditImageUrlPartial.cshtml │ │ │ │ ├── EditPubDate.cshtml │ │ │ │ ├── EditScriptsPartial.cshtml │ │ │ │ ├── EditSlugPartial.cshtml │ │ │ │ ├── EditStylesPartial.cshtml │ │ │ │ ├── EditTeaserDisabledPartial.cshtml │ │ │ │ ├── EditTeaserHtmlPartial.cshtml │ │ │ │ ├── EditTeaserMarkdownPartial.cshtml │ │ │ │ ├── EditWithTemplate.cshtml │ │ │ │ ├── EditWithTemplateCorrelationKeyPartial.cshtml │ │ │ │ ├── EditWithTemplateDraftPubDatePartial.cshtml │ │ │ │ ├── EditWithTemplateHistoryInfoPartial.cshtml │ │ │ │ ├── EditWithTemplateImageUrlPartial.cshtml │ │ │ │ ├── EditWithTemplatePubDate.cshtml │ │ │ │ ├── EditWithTemplateScriptsPartial.cshtml │ │ │ │ ├── EditWithTemplateSlugPartial.cshtml │ │ │ │ ├── EditWithTemplateStylesPartial.cshtml │ │ │ │ ├── EditWithTemplateTeaserHtmlPartial.cshtml │ │ │ │ ├── History.cshtml │ │ │ │ ├── HistoryInfoPartial.cshtml │ │ │ │ ├── Index.cshtml │ │ │ │ ├── NewPost.cshtml │ │ │ │ ├── NextPreviousPartial.cshtml │ │ │ │ ├── Post.cshtml │ │ │ │ ├── PostContentBodyPartial.cshtml │ │ │ │ ├── PostDetailPartial.cshtml │ │ │ │ ├── PostListPartial.cshtml │ │ │ │ ├── PostPartial.cshtml │ │ │ │ ├── RelatedPostsPartial.cshtml │ │ │ │ ├── SideBarPartial.cshtml │ │ │ │ └── ToolsPartial.cshtml │ │ │ ├── ContentHistory/ │ │ │ │ └── Index.cshtml │ │ │ ├── Page/ │ │ │ │ ├── AddCssPartial.cshtml │ │ │ │ ├── AddJsPartial.cshtml │ │ │ │ ├── ChildMenu.cshtml │ │ │ │ ├── CommentWrapperPartial.cshtml │ │ │ │ ├── Development.cshtml │ │ │ │ ├── DisqusCommentsPartial.cshtml │ │ │ │ ├── DraftInfoPartial.cshtml │ │ │ │ ├── Edit.cshtml │ │ │ │ ├── EditCommentsEnabledPartial.cshtml │ │ │ │ ├── EditCorrelationKeyPartial.cshtml │ │ │ │ ├── EditDraftPubDatePartial.cshtml │ │ │ │ ├── EditHistoryInfoPartial.cshtml │ │ │ │ ├── EditPubDate.cshtml │ │ │ │ ├── EditScriptsPartial.cshtml │ │ │ │ ├── EditStylesPartial.cshtml │ │ │ │ ├── EditWithTemplate.cshtml │ │ │ │ ├── EditWithTemplateCommentsEnabledPartial.cshtml │ │ │ │ ├── EditWithTemplateCorrelationKeyPartial.cshtml │ │ │ │ ├── EditWithTemplateDraftPubDatePartial.cshtml │ │ │ │ ├── EditWithTemplateHistoryInfoPartial.cshtml │ │ │ │ ├── EditWithTemplatePubDate.cshtml │ │ │ │ ├── EditWithTemplateScriptsPartial.cshtml │ │ │ │ ├── EditWithTemplateStylesPartial.cshtml │ │ │ │ ├── EditorPartial.cshtml │ │ │ │ ├── EditorialDetailsPartial.cshtml │ │ │ │ ├── EditorialShowHidePartial.cshtml │ │ │ │ ├── EditorialShowHidePartialTemplates.cshtml │ │ │ │ ├── FeaturedPostsPartial.cshtml │ │ │ │ ├── History.cshtml │ │ │ │ ├── HistoryInfoPartial.cshtml │ │ │ │ ├── Index.cshtml │ │ │ │ ├── IndexMenu.cshtml │ │ │ │ ├── MetaPartial.cshtml │ │ │ │ ├── NewPage.cshtml │ │ │ │ ├── NoPages.cshtml │ │ │ │ ├── NotFound.cshtml │ │ │ │ ├── PageBottomPartial.cshtml │ │ │ │ ├── PageContentBodyPartial.cshtml │ │ │ │ ├── PageDetailPartial.cshtml │ │ │ │ ├── PageScriptsPartial.cshtml │ │ │ │ ├── PageTopPartial.cshtml │ │ │ │ ├── RecentPostsPartial.cshtml │ │ │ │ ├── SiteMapIndex.cshtml │ │ │ │ ├── StylePartial.cshtml │ │ │ │ ├── ToolsPartial.cshtml │ │ │ │ ├── Tree.cshtml │ │ │ │ ├── TreeMainPartial.cshtml │ │ │ │ ├── TreeScriptsPartial.cshtml │ │ │ │ └── TreeStylePartial.cshtml │ │ │ ├── Shared/ │ │ │ │ ├── AdSpacePartial.cshtml │ │ │ │ ├── CommentEmail.cshtml │ │ │ │ ├── CommentFormPartial.cshtml │ │ │ │ ├── CommentPartial.cshtml │ │ │ │ ├── CommentScriptsPartial.cshtml │ │ │ │ ├── CommentStylePartial.cshtml │ │ │ │ ├── Components/ │ │ │ │ │ ├── FeaturedPosts/ │ │ │ │ │ │ └── FeaturedPosts.cshtml │ │ │ │ │ ├── RecentPosts/ │ │ │ │ │ │ └── RecentPosts.cshtml │ │ │ │ │ └── RelatedPosts/ │ │ │ │ │ └── RelatedPosts.cshtml │ │ │ │ ├── HistoryGridPartial.cshtml │ │ │ │ ├── NewContentPartial.cshtml │ │ │ │ ├── _LayoutEmailCommentNotification.cshtml │ │ │ │ └── _LayoutEmpty.cshtml │ │ │ └── _ViewImports.cshtml │ │ └── cloudscribe.SimpleContent.CompiledViews.Bootstrap5.csproj │ ├── cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/ │ │ ├── Configuration/ │ │ │ ├── Columns/ │ │ │ │ ├── ColumnTemplateOptions.cs │ │ │ │ ├── ConfigColumnTemplateOptionsProvider.cs │ │ │ │ └── IColumnTemplateOptionsProvider.cs │ │ │ ├── Gallery/ │ │ │ │ ├── ConfigGalleryOptionsProvider.cs │ │ │ │ ├── GalleryOptions.cs │ │ │ │ └── IGalleryOptionsProvider.cs │ │ │ ├── Image/ │ │ │ │ ├── ConfigImageWithContentOptionsProvider.cs │ │ │ │ ├── IImageWithContentOptionsProvider.cs │ │ │ │ └── ImageWithContentOptions.cs │ │ │ └── LinkList/ │ │ │ ├── ConfigLinkListOptionsProvider.cs │ │ │ ├── ILinkListOptionsProvider.cs │ │ │ └── LinkListOptions.cs │ │ ├── ContentTemplateResources.cs │ │ ├── Controllers/ │ │ │ └── SctrController.cs │ │ ├── README.md │ │ ├── Services/ │ │ │ └── ContentTemplateProvider.cs │ │ ├── StartupExtensions.cs │ │ ├── VersionProvider.cs │ │ ├── ViewModels/ │ │ │ ├── BingMapViewModel.cs │ │ │ ├── EverythingModel.cs │ │ │ ├── ImageWithContentViewModel.cs │ │ │ ├── ListWithContentModel.cs │ │ │ ├── RoleBasedContentViewModel.cs │ │ │ ├── SectionsWithImageViewModel.cs │ │ │ └── SimpleGalleryViewModel.cs │ │ ├── Views/ │ │ │ ├── Shared/ │ │ │ │ ├── ContentTemplates/ │ │ │ │ │ ├── BingMapEdit.cshtml │ │ │ │ │ ├── BingMapRender.cshtml │ │ │ │ │ ├── EverythingEdit.cshtml │ │ │ │ │ ├── EverythingRender.cshtml │ │ │ │ │ ├── GalleryWithContentEdit.cshtml │ │ │ │ │ ├── GalleryWithContentRender.cshtml │ │ │ │ │ ├── ImageWithContentEdit.cshtml │ │ │ │ │ ├── ImageWithContentRender.cshtml │ │ │ │ │ ├── ListOfLinksEdit.cshtml │ │ │ │ │ ├── ListOfLinksRender.cshtml │ │ │ │ │ ├── RoleBasedContentEdit.cshtml │ │ │ │ │ ├── RoleBasedContentRender.cshtml │ │ │ │ │ ├── SectionsWithImageEdit.cshtml │ │ │ │ │ ├── SectionsWithImageRender.cshtml │ │ │ │ │ ├── TwoSectionsWithImageEdit.cshtml │ │ │ │ │ └── TwoSectionsWithImageRender.cshtml │ │ │ │ ├── EverythingBottomColumnsPartial.cshtml │ │ │ │ ├── EverythingBottomFloatedImagesPartial.cshtml │ │ │ │ ├── EverythingBottomSectionsLayoutSelector.cshtml │ │ │ │ ├── EverythingCardsPartial.cshtml │ │ │ │ ├── EverythingCarouselFullPartial.cshtml │ │ │ │ ├── EverythingCarouselLeftPartial.cshtml │ │ │ │ ├── EverythingCarouselRightPartial.cshtml │ │ │ │ ├── EverythingCompactPartial.cshtml │ │ │ │ ├── EverythingGalleryLayoutSelector.cshtml │ │ │ │ ├── EverythingGridPartial.cshtml │ │ │ │ ├── EverythingRenderPartial.cshtml │ │ │ │ ├── EverythingTopColumnsPartial.cshtml │ │ │ │ ├── EverythingTopFloatedImagesPartial.cshtml │ │ │ │ ├── EverythingTopSectionsLayoutSelector.cshtml │ │ │ │ ├── GalleryWithContentEditLayoutSelector.cshtml │ │ │ │ ├── GalleryWithContentRenderCardsPartial.cshtml │ │ │ │ ├── GalleryWithContentRenderCarouselFullPartial.cshtml │ │ │ │ ├── GalleryWithContentRenderCarouselLeftPartial.cshtml │ │ │ │ ├── GalleryWithContentRenderCarouselRightPartial.cshtml │ │ │ │ ├── GalleryWithContentRenderCompactPartial.cshtml │ │ │ │ ├── GalleryWithContentRenderGridPartial.cshtml │ │ │ │ ├── LinksRenderPartial.cshtml │ │ │ │ ├── RoleBasedContentRenderPartial.cshtml │ │ │ │ ├── SectionsWithImageEditLayoutSelector.cshtml │ │ │ │ ├── SectionsWithImageRenderColumnsPartial.cshtml │ │ │ │ ├── SectionsWithImageRenderFloatedImagesPartial.cshtml │ │ │ │ ├── TwoSectionsWithImageEditLayoutSelector.cshtml │ │ │ │ ├── TwoSectionsWithImageRenderColumnsLeftPartial.cshtml │ │ │ │ └── TwoSectionsWithImageRenderColumnsRightPartial.cshtml │ │ │ └── _ViewImports.cshtml │ │ ├── cloudscribe.SimpleContent.ContentTemplates.Bootstrap5.csproj │ │ ├── css/ │ │ │ ├── simple-gallery.css │ │ │ └── simple-image.css │ │ └── js/ │ │ ├── cst-basic-list.js │ │ ├── cst-link-list.js │ │ └── simple-gallery.js │ ├── cloudscribe.SimpleContent.MetaWeblog/ │ │ ├── MetaWeblogModelMapper.cs │ │ ├── MetaWeblogSecurity.cs │ │ ├── MetaWeblogService.cs │ │ ├── README.md │ │ ├── ServiceCollectionExtensions.cs │ │ ├── VersionProvider.cs │ │ └── cloudscribe.SimpleContent.MetaWeblog.csproj │ ├── cloudscribe.SimpleContent.Models/ │ │ ├── Blog/ │ │ │ ├── BlogEditOptions.cs │ │ │ ├── DefaultBlogRoutes.cs │ │ │ ├── IBlogRoutes.cs │ │ │ ├── IBlogService.cs │ │ │ ├── IBlogUrlResolver.cs │ │ │ ├── IPost.cs │ │ │ ├── IPostCommands.cs │ │ │ ├── IPostQueries.cs │ │ │ ├── ITeaserService.cs │ │ │ ├── NotImplementedBlogService.cs │ │ │ ├── PagedPostResult.cs │ │ │ ├── Post.cs │ │ │ ├── PostResult.cs │ │ │ ├── TeaserCacheOptions.cs │ │ │ ├── TeaserMode.cs │ │ │ ├── TeaserResult.cs │ │ │ └── TeaserTruncationMode.cs │ │ ├── CommandResult.cs │ │ ├── Comment/ │ │ │ ├── Comment.cs │ │ │ ├── CommentNotificationModel.cs │ │ │ └── IComment.cs │ │ ├── ContentFilterResult.cs │ │ ├── ContentLocalizationOptions.cs │ │ ├── ContentUtils.cs │ │ ├── EventHandlers/ │ │ │ ├── IHandlePageCreated.cs │ │ │ ├── IHandlePageMoved.cs │ │ │ ├── IHandlePagePreDelete.cs │ │ │ ├── IHandlePagePreUpdate.cs │ │ │ ├── IHandlePagePublished.cs │ │ │ ├── IHandlePageUnPublished.cs │ │ │ ├── IHandlePageUpdated.cs │ │ │ ├── IHandlePostCreated.cs │ │ │ ├── IHandlePostPreDelete.cs │ │ │ ├── IHandlePostPreUpdate.cs │ │ │ ├── IHandlePostPublished.cs │ │ │ ├── IHandlePostUnPublished.cs │ │ │ └── IHandlePostUpdated.cs │ │ ├── IAuthorNameResolver.cs │ │ ├── IContentItem.cs │ │ ├── IMarkdownProcessor.cs │ │ ├── IMediaProcessor.cs │ │ ├── IStorageInfo.cs │ │ ├── ImageSizeResult.cs │ │ ├── ModelExtensions.cs │ │ ├── Page/ │ │ │ ├── DefaultPageRoutes.cs │ │ │ ├── IPage.cs │ │ │ ├── IPageCommands.cs │ │ │ ├── IPageQueries.cs │ │ │ ├── IPageRoutes.cs │ │ │ ├── IPageService.cs │ │ │ ├── IPageUrlResolver.cs │ │ │ ├── NotImplementedPageService.cs │ │ │ ├── Page.cs │ │ │ ├── PageActionResult.cs │ │ │ ├── PageEditOptions.cs │ │ │ ├── PageMoveModel.cs │ │ │ └── PageResource.cs │ │ ├── Project/ │ │ │ ├── IProjectCommands.cs │ │ │ ├── IProjectEmailService.cs │ │ │ ├── IProjectQueries.cs │ │ │ ├── IProjectSecurityResolver.cs │ │ │ ├── IProjectService.cs │ │ │ ├── IProjectSettings.cs │ │ │ ├── IProjectSettingsResolver.cs │ │ │ ├── ProjectSecurityResult.cs │ │ │ └── ProjectSettings.cs │ │ ├── ProjectConstants.cs │ │ ├── README.md │ │ ├── Templating/ │ │ │ ├── ContentTemplate.cs │ │ │ ├── ContentTemplateConfig.cs │ │ │ ├── CssFile.cs │ │ │ ├── IContentTemplateProvider.cs │ │ │ ├── IContentTemplateService.cs │ │ │ ├── IModelSerializer.cs │ │ │ └── ScriptFile.cs │ │ ├── Versioning/ │ │ │ ├── ContentHistory.cs │ │ │ ├── IContentHistoryCommands.cs │ │ │ ├── IContentHistoryQueries.cs │ │ │ └── SaveMode.cs │ │ └── cloudscribe.SimpleContent.Models.csproj │ ├── cloudscribe.SimpleContent.Security.SimpleAuth/ │ │ ├── ProjectSecurityResolver.cs │ │ ├── README.md │ │ └── cloudscribe.SimpleContent.Security.SimpleAuth.csproj │ ├── cloudscribe.SimpleContent.Storage.EFCore.Common/ │ │ ├── ContentHistoryCommands.cs │ │ ├── ContentHistoryQueries.cs │ │ ├── ISimpleContentDbContext.cs │ │ ├── ISimpleContentDbContextFactory.cs │ │ ├── Models/ │ │ │ ├── PageCategory.cs │ │ │ ├── PageComment.cs │ │ │ ├── PageEntity.cs │ │ │ ├── PageResourceEntity.cs │ │ │ ├── PostCategory.cs │ │ │ ├── PostComment.cs │ │ │ └── PostEntity.cs │ │ ├── PageCommands.cs │ │ ├── PageQueries.cs │ │ ├── PostCommands.cs │ │ ├── PostQueries.cs │ │ ├── ProjectCommands.cs │ │ ├── ProjectQueries.cs │ │ ├── README.md │ │ ├── ServiceCollectionExtensions.cs │ │ ├── SimpleContentDbContextBase.cs │ │ ├── SimpleContentEFStartup.cs │ │ └── cloudscribe.SimpleContent.Storage.EFCore.Common.csproj │ ├── cloudscribe.SimpleContent.Storage.EFCore.MSSQL/ │ │ ├── BlankTriggerAddingConvention.cs │ │ ├── Migrations/ │ │ │ ├── 20161118134254_Initial.Designer.cs │ │ │ ├── 20161118134254_Initial.cs │ │ │ ├── 20170108141354_AddMenuOnlyProp.Designer.cs │ │ │ ├── 20170108141354_AddMenuOnlyProp.cs │ │ │ ├── 20170301144919_changes20170301.Designer.cs │ │ │ ├── 20170301144919_changes20170301.cs │ │ │ ├── 20170308205858_changes20170308.Designer.cs │ │ │ ├── 20170308205858_changes20170308.cs │ │ │ ├── 20170309130025_changes20170309.Designer.cs │ │ │ ├── 20170309130025_changes20170309.cs │ │ │ ├── 20170310190036_changes20170310.Designer.cs │ │ │ ├── 20170310190036_changes20170310.cs │ │ │ ├── 20170418142644_changes20170417.Designer.cs │ │ │ ├── 20170418142644_changes20170417.cs │ │ │ ├── 20170514122601_changes20170514.Designer.cs │ │ │ ├── 20170514122601_changes20170514.cs │ │ │ ├── 20170724195300_changes20170724.Designer.cs │ │ │ ├── 20170724195300_changes20170724.cs │ │ │ ├── 20170801140952_changes20170731.Designer.cs │ │ │ ├── 20170801140952_changes20170731.cs │ │ │ ├── 20170801141349_changes20170801.Designer.cs │ │ │ ├── 20170801141349_changes20170801.cs │ │ │ ├── 20171005175655_changes20171005.Designer.cs │ │ │ ├── 20171005175655_changes20171005.cs │ │ │ ├── 20171016103054_changes20171016.Designer.cs │ │ │ ├── 20171016103054_changes20171016.cs │ │ │ ├── 20171118193027_changes20171118.Designer.cs │ │ │ ├── 20171118193027_changes20171118.cs │ │ │ ├── 20180103204131_changes20180103.Designer.cs │ │ │ ├── 20180103204131_changes20180103.cs │ │ │ ├── 20180206125759_simplecontentchanges20180206.Designer.cs │ │ │ ├── 20180206125759_simplecontentchanges20180206.cs │ │ │ ├── 20180223151637_simplecontent_changes20180223.Designer.cs │ │ │ ├── 20180223151637_simplecontent_changes20180223.cs │ │ │ ├── 20180315174300_simplecontent_changes20180315.Designer.cs │ │ │ ├── 20180315174300_simplecontent_changes20180315.cs │ │ │ ├── 20180704183112_simplecontent-20180704.Designer.cs │ │ │ ├── 20180704183112_simplecontent-20180704.cs │ │ │ ├── 20180705124637_simplecontent-20180705.Designer.cs │ │ │ ├── 20180705124637_simplecontent-20180705.cs │ │ │ ├── 20180710113039_simplecontent-20180710.Designer.cs │ │ │ ├── 20180710113039_simplecontent-20180710.cs │ │ │ ├── 20180820133027_simplecontent-20180819.Designer.cs │ │ │ ├── 20180820133027_simplecontent-20180819.cs │ │ │ ├── 20180908121615_simplecontent-20180908.Designer.cs │ │ │ ├── 20180908121615_simplecontent-20180908.cs │ │ │ ├── 20190210160956_simplecontent-20190210.Designer.cs │ │ │ ├── 20190210160956_simplecontent-20190210.cs │ │ │ ├── 20190213120620_simplecontent-20190212.Designer.cs │ │ │ ├── 20190213120620_simplecontent-20190212.cs │ │ │ ├── 20190213120720_simplecontent-20190213.Designer.cs │ │ │ ├── 20190213120720_simplecontent-20190213.cs │ │ │ ├── 20190304161740_simplecontent-20190304.Designer.cs │ │ │ ├── 20190304161740_simplecontent-20190304.cs │ │ │ ├── 20190312154938_simplecontent-20190312.Designer.cs │ │ │ ├── 20190312154938_simplecontent-20190312.cs │ │ │ ├── 20200723185114_AddPostShowCommentsSwitch.Designer.cs │ │ │ ├── 20200723185114_AddPostShowCommentsSwitch.cs │ │ │ ├── 20240918131738_ShowArchivedAndBlogCategories-20240918.Designer.cs │ │ │ ├── 20240918131738_ShowArchivedAndBlogCategories-20240918.cs │ │ │ ├── 20241001103518_SetShowArchiveAboutRelatedBlogToTrue020241001.Designer.cs │ │ │ ├── 20241001103518_SetShowArchiveAboutRelatedBlogToTrue020241001.cs │ │ │ ├── 20241108094100_simplecontent-20241108.Designer.cs │ │ │ ├── 20241108094100_simplecontent-20241108.cs │ │ │ ├── 20250423093650_user-script-20250423.Designer.cs │ │ │ ├── 20250423093650_user-script-20250423.cs │ │ │ ├── 20250818152838_remove-pageresource-script.Designer.cs │ │ │ ├── 20250818152838_remove-pageresource-script.cs │ │ │ └── SimpleContentDbContextModelSnapshot.cs │ │ ├── README.md │ │ ├── ServiceCollectionExtensions.cs │ │ ├── SimpleContentDbContext.cs │ │ ├── SimpleContentDbContextDesignTimeFactory.cs │ │ ├── SimpleContentDbContextFactory.cs │ │ ├── StorageInfo.cs │ │ └── cloudscribe.SimpleContent.Storage.EFCore.MSSQL.csproj │ ├── cloudscribe.SimpleContent.Storage.EFCore.MySQL/ │ │ ├── Migrations/ │ │ │ ├── 20161111152256_Initial.Designer.cs │ │ │ ├── 20161111152256_Initial.cs │ │ │ ├── 20170108141502_AddMenuOnlyProp.Designer.cs │ │ │ ├── 20170108141502_AddMenuOnlyProp.cs │ │ │ ├── 20170301145042_changes20170301.Designer.cs │ │ │ ├── 20170301145042_changes20170301.cs │ │ │ ├── 20170308205943_changes20170308.Designer.cs │ │ │ ├── 20170308205943_changes20170308.cs │ │ │ ├── 20170309130101_changes20170309.Designer.cs │ │ │ ├── 20170309130101_changes20170309.cs │ │ │ ├── 20170310190111_changes20170310.Designer.cs │ │ │ ├── 20170310190111_changes20170310.cs │ │ │ ├── 20170418142722_changes20170417.Designer.cs │ │ │ ├── 20170418142722_changes20170417.cs │ │ │ ├── 20170514135058_changes20170514.Designer.cs │ │ │ ├── 20170514135058_changes20170514.cs │ │ │ ├── 20170724195817_changes20170724.Designer.cs │ │ │ ├── 20170724195817_changes20170724.cs │ │ │ ├── 20170801190433_changes20170731.Designer.cs │ │ │ ├── 20170801190433_changes20170731.cs │ │ │ ├── 20170801190833_changes20170801.Designer.cs │ │ │ ├── 20170801190833_changes20170801.cs │ │ │ ├── 20170801191031_changes20170801b.Designer.cs │ │ │ ├── 20170801191031_changes20170801b.cs │ │ │ ├── 20171005175519_changes20171005.Designer.cs │ │ │ ├── 20171005175519_changes20171005.cs │ │ │ ├── 20171016103020_changes20171016.Designer.cs │ │ │ ├── 20171016103020_changes20171016.cs │ │ │ ├── 20171118201035_changes20171118.Designer.cs │ │ │ ├── 20171118201035_changes20171118.cs │ │ │ ├── 20180122125337_changes20180122.Designer.cs │ │ │ ├── 20180122125337_changes20180122.cs │ │ │ ├── 20180206125859_simplecontentchanges20180206.Designer.cs │ │ │ ├── 20180206125859_simplecontentchanges20180206.cs │ │ │ ├── 20180315174230_simplecontent_changes20180315.Designer.cs │ │ │ ├── 20180315174230_simplecontent_changes20180315.cs │ │ │ ├── 20180704183709_simplecontent-20180704.Designer.cs │ │ │ ├── 20180704183709_simplecontent-20180704.cs │ │ │ ├── 20180705124549_simplecontent-20180705.Designer.cs │ │ │ ├── 20180705124549_simplecontent-20180705.cs │ │ │ ├── 20180710112927_simplecontent-20180710.Designer.cs │ │ │ ├── 20180710112927_simplecontent-20180710.cs │ │ │ ├── 20180820133148_simplecontent-20180819.Designer.cs │ │ │ ├── 20180820133148_simplecontent-20180819.cs │ │ │ ├── 20180908121712_simplecontent-20180908.Designer.cs │ │ │ ├── 20180908121712_simplecontent-20180908.cs │ │ │ ├── 20190210161111_simplecontent-20190210.Designer.cs │ │ │ ├── 20190210161111_simplecontent-20190210.cs │ │ │ ├── 20190213120841_simplecontent-20190212.Designer.cs │ │ │ ├── 20190213120841_simplecontent-20190212.cs │ │ │ ├── 20190213120911_simplecontent-20190213.Designer.cs │ │ │ ├── 20190213120911_simplecontent-20190213.cs │ │ │ ├── 20190304161922_simplecontent-20190304.Designer.cs │ │ │ ├── 20190304161922_simplecontent-20190304.cs │ │ │ ├── 20190312155536_simplecontent-20190312.Designer.cs │ │ │ ├── 20190312155536_simplecontent-20190312.cs │ │ │ ├── 20200723185158_AddPostShowCommentsSwitch.Designer.cs │ │ │ ├── 20200723185158_AddPostShowCommentsSwitch.cs │ │ │ ├── 20240918132058_ShowArchivedAndBlogCategories-20240918.Designer.cs │ │ │ ├── 20240918132058_ShowArchivedAndBlogCategories-20240918.cs │ │ │ ├── 20241001104452_SetShowArchiveAboutRelatedBlogToTrue-20241001.Designer.cs │ │ │ ├── 20241001104452_SetShowArchiveAboutRelatedBlogToTrue-20241001.cs │ │ │ ├── 20241108094512_simplecontent-20241108.Designer.cs │ │ │ ├── 20241108094512_simplecontent-20241108.cs │ │ │ ├── 20250423093954_user-script-20250423.Designer.cs │ │ │ ├── 20250423093954_user-script-20250423.cs │ │ │ ├── 20250818153349_remove-pageresource-script.Designer.cs │ │ │ ├── 20250818153349_remove-pageresource-script.cs │ │ │ └── SimpleContentDbContextModelSnapshot.cs │ │ ├── README.md │ │ ├── ServiceCollectionExtensions.cs │ │ ├── SimpleContentDbContext.cs │ │ ├── SimpleContentDbContextDesignTimeFactory.cs │ │ ├── SimpleContentDbContextFactory.cs │ │ ├── StorageInfo.cs │ │ └── cloudscribe.SimpleContent.Storage.EFCore.MySQL.csproj │ ├── cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/ │ │ ├── DesignTimeFactory.cs │ │ ├── Migrations/ │ │ │ ├── 20181009120713_simplecontent-initial.Designer.cs │ │ │ ├── 20181009120713_simplecontent-initial.cs │ │ │ ├── 20190210161250_simplecontent-20190210.Designer.cs │ │ │ ├── 20190210161250_simplecontent-20190210.cs │ │ │ ├── 20190213121205_simplecontent-20190212.Designer.cs │ │ │ ├── 20190213121205_simplecontent-20190212.cs │ │ │ ├── 20190213121232_simplecontent-20190213.Designer.cs │ │ │ ├── 20190213121232_simplecontent-20190213.cs │ │ │ ├── 20190304162045_simplecontent-20190304.Designer.cs │ │ │ ├── 20190304162045_simplecontent-20190304.cs │ │ │ ├── 20190312155722_simplecontent-20190312.Designer.cs │ │ │ ├── 20190312155722_simplecontent-20190312.cs │ │ │ ├── 20200723185336_AddPostShowCommentsSwitch.Designer.cs │ │ │ ├── 20200723185336_AddPostShowCommentsSwitch.cs │ │ │ ├── 20220420182545_simplecontent-20220420.Designer.cs │ │ │ ├── 20220420182545_simplecontent-20220420.cs │ │ │ ├── 20240918132310_ShowArchiveAndBlogCategories-20240918.Designer.cs │ │ │ ├── 20240918132310_ShowArchiveAndBlogCategories-20240918.cs │ │ │ ├── 20241001104647_SetShowArchiveAboutRelatedBlogToTrue-20241001.Designer.cs │ │ │ ├── 20241001104647_SetShowArchiveAboutRelatedBlogToTrue-20241001.cs │ │ │ ├── 20241108094644_simplecontent-20241108.Designer.cs │ │ │ ├── 20241108094644_simplecontent-20241108.cs │ │ │ ├── 20250423094338_user-script-20250423.Designer.cs │ │ │ ├── 20250423094338_user-script-20250423.cs │ │ │ ├── 20250818153117_remove-pageresource-script.Designer.cs │ │ │ ├── 20250818153117_remove-pageresource-script.cs │ │ │ └── SimpleContentDbContextModelSnapshot.cs │ │ ├── README.md │ │ ├── ServiceCollectionExtensions.cs │ │ ├── SimpleContentDbContext.cs │ │ ├── SimpleContentDbContextFactory.cs │ │ ├── StorageInfo.cs │ │ └── cloudscribe.SimpleContent.Storage.EFCore.PostgreSql.csproj │ ├── cloudscribe.SimpleContent.Storage.EFCore.SQLite/ │ │ ├── DesignTimeFactory.cs │ │ ├── Migrations/ │ │ │ ├── 20171222135806_Initial.Designer.cs │ │ │ ├── 20171222135806_Initial.cs │ │ │ ├── 20180122125428_changes20180122.Designer.cs │ │ │ ├── 20180122125428_changes20180122.cs │ │ │ ├── 20180206125939_simplecontentchanges20180206.Designer.cs │ │ │ ├── 20180206125939_simplecontentchanges20180206.cs │ │ │ ├── 20180315174340_simplecontent_changes20180315.Designer.cs │ │ │ ├── 20180315174340_simplecontent_changes20180315.cs │ │ │ ├── 20180704183840_simplecontent-20180704.Designer.cs │ │ │ ├── 20180704183840_simplecontent-20180704.cs │ │ │ ├── 20180705124759_simplecontent-20180705.Designer.cs │ │ │ ├── 20180705124759_simplecontent-20180705.cs │ │ │ ├── 20180710113211_simplecontent-20180710.Designer.cs │ │ │ ├── 20180710113211_simplecontent-20180710.cs │ │ │ ├── 20180820133304_simplecontent-20180819.Designer.cs │ │ │ ├── 20180820133304_simplecontent-20180819.cs │ │ │ ├── 20180908121905_simplecontent-20180908.Designer.cs │ │ │ ├── 20180908121905_simplecontent-20180908.cs │ │ │ ├── 20190210161404_simplecontent-20190210.Designer.cs │ │ │ ├── 20190210161404_simplecontent-20190210.cs │ │ │ ├── 20190213121319_simplecontent-20190212.Designer.cs │ │ │ ├── 20190213121319_simplecontent-20190212.cs │ │ │ ├── 20190304162117_simplecontent-20190304.Designer.cs │ │ │ ├── 20190304162117_simplecontent-20190304.cs │ │ │ ├── 20190312155759_simplecontent-20190312.Designer.cs │ │ │ ├── 20190312155759_simplecontent-20190312.cs │ │ │ ├── 20200723185404_AddPostShowCommentsSwitch.Designer.cs │ │ │ ├── 20200723185404_AddPostShowCommentsSwitch.cs │ │ │ ├── 20240920125304_ShowArchiveAndBlogCategories-20240920.Designer.cs │ │ │ ├── 20240920125304_ShowArchiveAndBlogCategories-20240920.cs │ │ │ ├── 20241001104814_SetShowArchiveAboutRelatedBlogToTrue-20241001.Designer.cs │ │ │ ├── 20241001104814_SetShowArchiveAboutRelatedBlogToTrue-20241001.cs │ │ │ ├── 20241108094744_simplecontent-20241108.Designer.cs │ │ │ ├── 20241108094744_simplecontent-20241108.cs │ │ │ ├── 20250815092116_simplecontent-userscript.Designer.cs │ │ │ ├── 20250815092116_simplecontent-userscript.cs │ │ │ ├── 20250818153135_remove-pageresource-script.Designer.cs │ │ │ ├── 20250818153135_remove-pageresource-script.cs │ │ │ └── SimpleContentDbContextModelSnapshot.cs │ │ ├── README.md │ │ ├── SimpleContentDbContext.cs │ │ ├── SimpleContentDbContextFactory.cs │ │ ├── StartupExtensions.cs │ │ ├── StorageInfo.cs │ │ └── cloudscribe.SimpleContent.Storage.EFCore.SQLite.csproj │ ├── cloudscribe.SimpleContent.Storage.NoDb/ │ │ ├── ConfigProjectQueries.cs │ │ ├── ContentHistoryCommands.cs │ │ ├── ContentHistoryQueries.cs │ │ ├── KeyGenerators/ │ │ │ ├── DefaultKeyGenerator.cs │ │ │ ├── GuidKeyGenerator.cs │ │ │ └── IKeyGenerator.cs │ │ ├── PageCommands.cs │ │ ├── PageCompositeSerializer.cs │ │ ├── PageJsonSerializer.cs │ │ ├── PageMarkdownSerializer.cs │ │ ├── PageQueries.cs │ │ ├── PageStoragePathResolver.cs │ │ ├── PostCache.cs │ │ ├── PostCacheOptions.cs │ │ ├── PostCommands.cs │ │ ├── PostCompositeSerializer.cs │ │ ├── PostMarkdownSerializer.cs │ │ ├── PostQueries.cs │ │ ├── PostStoragePathResolver.cs │ │ ├── PostXmlSerializer.cs │ │ ├── ProjectCommands.cs │ │ ├── ProjectQueries.cs │ │ ├── README.md │ │ ├── ServiceCollectionExtensions.cs │ │ ├── StorageInfo.cs │ │ ├── YamlHelper.cs │ │ ├── YamlPage.cs │ │ ├── YamlPost.cs │ │ └── cloudscribe.SimpleContent.Storage.NoDb.csproj │ ├── cloudscribe.SimpleContent.Syndication/ │ │ ├── README.md │ │ ├── RssChannelProvider.cs │ │ ├── ServiceCollectionExtensions.cs │ │ ├── VersionProvider.cs │ │ └── cloudscribe.SimpleContent.Syndication.csproj │ ├── cloudscribe.SimpleContent.Web/ │ │ ├── ClaimsPrincipalExtensions.cs │ │ ├── Controllers/ │ │ │ ├── BlogController.cs │ │ │ ├── ContentHistoryController.cs │ │ │ ├── PageController.cs │ │ │ └── csscsrController.cs │ │ ├── Design/ │ │ │ ├── DefaultSimpleContentThemeHelper.cs │ │ │ ├── ISimpleContentThemeHelper.cs │ │ │ ├── IconCssClasses.cs │ │ │ ├── SimpleContentIconConfig.cs │ │ │ ├── SimpleContentThemeConfig.cs │ │ │ └── SimpleContentThemeSettings.cs │ │ ├── README.md │ │ ├── Routes.cs │ │ ├── Routes2x.cs │ │ ├── Services/ │ │ │ ├── Blog/ │ │ │ │ ├── BlogService.cs │ │ │ │ ├── BlogSiteMapNodeService.cs │ │ │ │ ├── BlogUrlResolver.cs │ │ │ │ ├── CreateOrUpdatePostHandler.cs │ │ │ │ ├── CreateOrUpdatePostRequest.cs │ │ │ │ ├── InitTemplatedPostHandler.cs │ │ │ │ ├── InitTemplatedPostRequest.cs │ │ │ │ ├── NavigationBlogNodeFinder.cs │ │ │ │ ├── PostEvents.cs │ │ │ │ ├── TeaserCache.cs │ │ │ │ ├── TeaserService.cs │ │ │ │ ├── TeaserServiceDisabled.cs │ │ │ │ ├── UpdateTemplatedPostHandler.cs │ │ │ │ └── UpdateTemplatedPostRequest.cs │ │ │ ├── ContentProcessor.cs │ │ │ ├── CultureHelper.cs │ │ │ ├── DefaultAuthorNameResolver.cs │ │ │ ├── DefaultProjectSettingsResolver.cs │ │ │ ├── DefaultTimeZoneIdResolver.cs │ │ │ ├── FileSystemMediaProcessor.cs │ │ │ ├── HttpRequestExtensions.cs │ │ │ ├── IContentProcessor.cs │ │ │ ├── JsonModelSerializer.cs │ │ │ ├── MarkdownProcessor.cs │ │ │ ├── Page/ │ │ │ │ ├── CreateOrUpdatePageHandler.cs │ │ │ │ ├── CreateOrUpdatePageRequest.cs │ │ │ │ ├── DraftPublishService.cs │ │ │ │ ├── InitTemplatedPageHandler.cs │ │ │ │ ├── InitTemplatedPageRequest.cs │ │ │ │ ├── JsSecuritySanitizer.cs │ │ │ │ ├── PageEditContext.cs │ │ │ │ ├── PageEditContextRequest.cs │ │ │ │ ├── PageEditContextRequestHandler.cs │ │ │ │ ├── PageEvents.cs │ │ │ │ ├── PageService.cs │ │ │ │ ├── PageUrlResolver.cs │ │ │ │ ├── PageViewContext.cs │ │ │ │ ├── PageViewContextRequest.cs │ │ │ │ ├── PageViewContextRequestHandler.cs │ │ │ │ ├── PagesNavigationNodePermissionResolver.cs │ │ │ │ ├── PagesNavigationTreeBuilder.cs │ │ │ │ ├── UpdateTemplatedPageHandler.cs │ │ │ │ └── UpdateTemplatedPageRequest.cs │ │ │ ├── ProjectEmailService.cs │ │ │ ├── ProjectEmailServiceFake.cs │ │ │ ├── ProjectService.cs │ │ │ ├── Resources.cs │ │ │ └── Truncation/ │ │ │ ├── FixedLengthTruncator.cs │ │ │ ├── FixedNumberOfCharactersTruncator.cs │ │ │ ├── FixedNumberOfWordsTruncator.cs │ │ │ ├── ITruncator.cs │ │ │ ├── TruncateExtensions.cs │ │ │ └── Truncator.cs │ │ ├── StartupExtensions.cs │ │ ├── TagHelpers/ │ │ │ ├── IRoleSelectorProperties.cs │ │ │ ├── NotImplementedRoleSelectorProperties.cs │ │ │ ├── RoleSelectorTagHelper.cs │ │ │ └── SchemaOrgMetaTagHelper.cs │ │ ├── Templating/ │ │ │ ├── ConfigContentTemplateProvider.cs │ │ │ ├── ContentTemplateService.cs │ │ │ ├── DefaultModelFormParser.cs │ │ │ ├── DefaultTemplateModelValidator.cs │ │ │ ├── IParseModelFromForm.cs │ │ │ └── IValidateTemplateModel.cs │ │ ├── VersionInfo.cs │ │ ├── ViewComponents/ │ │ │ ├── FeaturedPostsViewComponent.cs │ │ │ ├── RecentPostsViewComponent.cs │ │ │ └── RelatedPostsViewComponent.cs │ │ ├── ViewModels/ │ │ │ ├── AddPageResourceViewModel.cs │ │ │ ├── BlogViewModel.cs │ │ │ ├── CommentViewModel.cs │ │ │ ├── ContentHistoryViewModel.cs │ │ │ ├── NewContentViewModel.cs │ │ │ ├── PageDevelopmentViewModel.cs │ │ │ ├── PageEditViewModel.cs │ │ │ ├── PageEditWithTemplateViewModel.cs │ │ │ ├── PageTreeViewModel.cs │ │ │ ├── PageViewModel.cs │ │ │ ├── PostEditViewModel.cs │ │ │ ├── PostEditWithTemplateViewModel.cs │ │ │ ├── PostViewModel.cs │ │ │ └── RecentPostsViewModel.cs │ │ ├── cloudscribe.SimpleContent.Web.csproj │ │ ├── css/ │ │ │ ├── blog-common.css │ │ │ └── editing-side-menu.css │ │ └── js/ │ │ ├── blog-comments.js │ │ ├── edit-script.js │ │ ├── pagetree.js │ │ ├── sc-simple-gallery-init.js │ │ └── unsaved-changes-warning.js │ └── sourceDev.WebApp/ │ ├── Config/ │ │ ├── Authorization.cs │ │ ├── CloudscribeFeatures.cs │ │ ├── DataProtection.cs │ │ ├── Localization.cs │ │ ├── RoutingAndMvc copy.cs.old │ │ └── RoutingAndMvc.cs │ ├── Controllers/ │ │ └── HomeController.cs │ ├── GlobalResources/ │ │ ├── CloudscribeCore.en-US.resx │ │ ├── CloudscribeCore.fr-FR.resx │ │ ├── CloudscribeCore.it-IT.resx │ │ ├── CloudscribeIds4Resources.en-US.resx │ │ ├── CloudscribeIds4Resources.fr-FR.resx │ │ ├── MenuResources.fr-FR.resx │ │ ├── MenuResources.it-IT.resx │ │ ├── QueryToolResources.cy.resx │ │ ├── QueryToolResources.de.resx │ │ ├── QueryToolResources.en.resx │ │ ├── QueryToolResources.fr.resx │ │ ├── QueryToolResources.it.resx │ │ ├── SimpleContent.cy.resx │ │ ├── SimpleContent.en-US.resx │ │ ├── SimpleContent.it-IT.resx │ │ └── SimpleContent.resx │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── SharedThemes/ │ │ ├── _ViewImports.cshtml │ │ ├── _ViewStart.cshtml │ │ ├── cerulean/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── cosmo/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── cyborg/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── darkly/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── flatly/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── journal/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── litera/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── lumen/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── lux/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── materia/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── minty/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── pulse/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── sandstone/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── simplex/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── slate/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── solar/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── spacelab/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── superhero/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ ├── united/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ ├── _bootswatch.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap.css │ │ │ │ ├── fontawesome-all.css │ │ │ │ └── site.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── jquery.js │ │ └── yeti/ │ │ ├── Shared/ │ │ │ └── _Layout.cshtml │ │ └── wwwroot/ │ │ ├── css/ │ │ │ ├── _bootswatch.scss │ │ │ ├── _variables.scss │ │ │ ├── bootstrap.css │ │ │ ├── fontawesome-all.css │ │ │ └── site.css │ │ └── js/ │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.esm.js │ │ └── jquery.js │ ├── Startup.cs │ ├── Views/ │ │ ├── Home/ │ │ │ ├── About.cshtml │ │ │ ├── Contact.cshtml │ │ │ └── Index.cshtml │ │ ├── Shared/ │ │ │ ├── AlertsPartial.cshtml │ │ │ ├── _CookieConsentPartial.cshtml │ │ │ ├── _CookieConsentRevokePartial.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── app-scss/ │ │ ├── _bs5.scss │ │ ├── _font-awesome.scss │ │ ├── _icons.scss │ │ ├── _jquery-smartmenu-bootstrap.scss │ │ ├── _variables.scss │ │ └── style.scss │ ├── appsettings.json │ ├── gulpfile.js │ ├── navigation.xml │ ├── nodb_storage/ │ │ └── projects/ │ │ ├── 5a6edd1f-6bb3-4e86-b434-4b33e309056a/ │ │ │ ├── page/ │ │ │ │ ├── 466fd5c6-72bb-4ff4-844a-ffa57b301eeb.json │ │ │ │ ├── 9a102c56-ed87-464b-b1f6-2df43229f2be.json │ │ │ │ └── efff35fa-4198-49af-a30f-638a801cc66f.json │ │ │ ├── post/ │ │ │ │ ├── 2016/ │ │ │ │ │ └── 02/ │ │ │ │ │ └── c94b5121-358f-4e76-853a-4249a3b56392.xml │ │ │ │ ├── 2017/ │ │ │ │ │ └── 09/ │ │ │ │ │ └── b87bf10b-dc9f-434b-af79-f0a0ecb4579b.xml │ │ │ │ └── 2018/ │ │ │ │ └── 06/ │ │ │ │ └── its-been-a-long-time.xml │ │ │ ├── projectsettings/ │ │ │ │ └── 5a6edd1f-6bb3-4e86-b434-4b33e309056a.json │ │ │ ├── siterole/ │ │ │ │ ├── 805da7c0-0506-474e-9038-bb0b594a1728.json │ │ │ │ ├── 8ded2209-f22f-4436-8207-386e0141a197.json │ │ │ │ ├── 8ffb27e5-e7e0-4b4e-8a5d-8e23dfda689b.json │ │ │ │ └── abb5e05a-2cf8-4ffd-9244-f02d14a7acbe.json │ │ │ ├── sitesettings/ │ │ │ │ └── 5a6edd1f-6bb3-4e86-b434-4b33e309056a.json │ │ │ ├── siteuser/ │ │ │ │ └── 006cf1b5-fa84-4a14-addc-7d0c24e84694.json │ │ │ └── userrole/ │ │ │ └── 006cf1b5-fa84-4a14-addc-7d0c24e84694~805da7c0-0506-474e-9038-bb0b594a1728.json │ │ ├── default/ │ │ │ ├── geocountry/ │ │ │ │ ├── 000da5ad-296a-4698-a21b-7d9c23feea14.json │ │ │ │ ├── 0055471a-7993-42a1-897c-e5daf92e7c0e.json │ │ │ │ ├── 01261d1a-74d6-4e02-86c5-bed1a192f67d.json │ │ │ │ ├── 01ca292d-86ca-4fa5-9205-2b0a37e7353b.json │ │ │ │ ├── 0416e2fc-c902-4452-8de9-29a2b453e685.json │ │ │ │ ├── 045a6098-a4a5-457a-aef0-6cc57cc4a813.json │ │ │ │ ├── 04724868-0448-48ef-840b-7d5da12495ec.json │ │ │ │ ├── 056f6ed6-8f6d-4366-a755-2d6b8fb2b7ad.json │ │ │ │ ├── 0589489d-a413-47c6-a90a-600520a8c52d.json │ │ │ │ ├── 05b98ddc-f36b-4daf-9459-0717fde9b38e.json │ │ │ │ ├── 061e11a1-33a2-42f0-8f8d-27e65fc47076.json │ │ │ │ ├── 06bb7816-9ad4-47dc-b1cd-6e206afdfcca.json │ │ │ │ ├── 0758cf79-94eb-4fa3-bd2c-8213034fb66c.json │ │ │ │ ├── 0789d8a8-59d0-4d2f-8e26-5d917e55550c.json │ │ │ │ ├── 07e1de2f-b11e-4f3b-a342-964f72d24371.json │ │ │ │ ├── 085d9357-416b-48d6-8c9e-ec3e9e2582d0.json │ │ │ │ ├── 0b182ee0-0cc0-4844-9cf0-ba15f47682e8.json │ │ │ │ ├── 0bd0e1a0-ea93-4883-b0a0-9f3c8668c68c.json │ │ │ │ ├── 0c356c5a-ca44-4301-8212-1826ccdadc42.json │ │ │ │ ├── 0d074a4f-df7f-49f3-8375-d35bdc934ae0.json │ │ │ │ ├── 10d4d58e-d0c2-4a4e-8fdd-b99d68c0bd22.json │ │ │ │ ├── 10fdc2bb-f3a6-4a9d-a6e9-f4c781e8dbff.json │ │ │ │ ├── 13faa99e-18f2-4e6f-b275-1e785b3383f3.json │ │ │ │ ├── 14962add-4536-4854-bea3-a5a904932e1c.json │ │ │ │ ├── 1583045c-5a80-4850-ac32-f177956fbd6a.json │ │ │ │ ├── 167838f1-3fdd-4fb6-9268-4beafeecea4b.json │ │ │ │ ├── 171a3e3e-cc78-4d4a-93ee-ace870dcb4c4.json │ │ │ │ ├── 18160966-4eeb-4c6b-a526-5022042fe1e4.json │ │ │ │ ├── 19f2da98-fefd-4b45-a260-8d9392c35a24.json │ │ │ │ ├── 1a07c0b8-eb6d-4153-8cb1-be6e31feb566.json │ │ │ │ ├── 1a6a2db1-d162-4fea-b660-b88fc25f558e.json │ │ │ │ ├── 1b8fbde0-e709-4f7b-838d-b09def73de8f.json │ │ │ │ ├── 1c7ff578-f079-4b5b-9993-2e0253b8cc14.json │ │ │ │ ├── 1d0dae21-cd07-4022-b86a-7780c5ea0264.json │ │ │ │ ├── 1d925a47-3902-462a-ba2e-c58e5cb24f2f.json │ │ │ │ ├── 1e64910a-bce3-402c-9035-9cb1f820b195.json │ │ │ │ ├── 1fcc4a89-0e8f-4fa2-b8d0-4ff5ec2277df.json │ │ │ │ ├── 20a15881-215b-4c4c-9512-80e55abbb5ba.json │ │ │ │ ├── 216d38d9-5eeb-42b7-8d2d-0757409dc5fb.json │ │ │ │ ├── 2391213f-fcbf-479a-9ab9-af1d6deb9e11.json │ │ │ │ ├── 23ba8dce-c784-4712-a6a0-0271f175d4e5.json │ │ │ │ ├── 24045513-0cd8-4fb9-9cf6-78bf717f6a7e.json │ │ │ │ ├── 25ed463d-21f5-412c-9bdb-6d76073ea790.json │ │ │ │ ├── 267865b1-e8da-432d-be45-63933f18a40f.json │ │ │ │ ├── 278ab63a-9c7e-4cad-9c99-984f8810d151.json │ │ │ │ ├── 27a6a985-3a89-4309-ac40-d1f0a94646ce.json │ │ │ │ ├── 28218639-6094-4aa2-ae88-9206630bb930.json │ │ │ │ ├── 2afe5a06-2692-4b96-a385-f299e469d196.json │ │ │ │ ├── 2bad76b2-20f3-4568-96bb-d60c39cfec37.json │ │ │ │ ├── 2d5b53a8-8341-4da4-a296-e516fe5bb953.json │ │ │ │ ├── 2dd32741-d7e9-49c9-b3d3-b58c4a913e60.json │ │ │ │ ├── 2ebce3a9-660a-4c1d-ac8f-0e899b34a987.json │ │ │ │ ├── 31f9b05e-e21d-41d5-8753-7cdd3bfa917b.json │ │ │ │ ├── 3220b426-8251-4f95-85c8-3f7821ecc932.json │ │ │ │ ├── 32eb5d85-1283-4586-bb16-b2b978b6537f.json │ │ │ │ ├── 333ed823-0e19-4bcc-a74e-c6c66fe76834.json │ │ │ │ ├── 356d4b6e-9ccb-4dc6-9c82-837433178275.json │ │ │ │ ├── 3664546f-14f2-4561-9b77-67e8be6a9b1f.json │ │ │ │ ├── 36f89c06-1509-42d2-aea6-7b4ce3bbc4f5.json │ │ │ │ ├── 386812d8-e983-4d3a-b7f0-1fa0bbe5919f.json │ │ │ │ ├── 38dc01c3-48d8-4ff8-a78a-2c35d4fbfa7b.json │ │ │ │ ├── 391ebafd-7689-41e5-a785-df6a3280528d.json │ │ │ │ ├── 392616f8-1b24-489f-8600-bae22ef478cc.json │ │ │ │ ├── 3a733002-9223-4bd7-b2a9-62fa359c4cbd.json │ │ │ │ ├── 3c864692-824c-4593-a739-d1309d4cd75e.json │ │ │ │ ├── 3d3a06a0-0853-4d01-b273-af7b7cd7002c.json │ │ │ │ ├── 3e57398a-0006-4e48-8cb4-f9f143dfcf22.json │ │ │ │ ├── 3e747b23-543f-4ad0-80a9-5e421651f3b4.json │ │ │ │ ├── 3f677556-1c9c-4315-9cfc-210a54f1f41d.json │ │ │ │ ├── 3fbd7371-510a-45b4-813a-88373d19a5a4.json │ │ │ │ ├── 4448e7b7-4e4d-4f19-b64d-e649d0f76cc1.json │ │ │ │ ├── 44577b6a-6918-4508-ade4-b6c2adb25000.json │ │ │ │ ├── 468dca85-484a-4529-8753-b26dbc316a71.json │ │ │ │ ├── 48cd745a-4c47-4282-b60a-cb4b4639c6ee.json │ │ │ │ ├── 48e5e925-6d98-4039-af6e-36d676059b85.json │ │ │ │ ├── 4cc52ce2-0a6c-4564-8fe6-2eeb347a9429.json │ │ │ │ ├── 4ce3df16-4d00-4f4d-a5d6-675020fa117d.json │ │ │ │ ├── 4dbe5363-aad6-4019-b445-472d6e1e49bd.json │ │ │ │ ├── 4dcd6ecf-af6c-4c76-95db-a0efac63f3de.json │ │ │ │ ├── 4e6d9507-9fb0-4290-80af-e98aabaccedb.json │ │ │ │ ├── 4eb5bcbe-13aa-45f0-afdf-77b379347509.json │ │ │ │ ├── 4f660961-0aff-4539-9c0b-3bb2662b7a99.json │ │ │ │ ├── 52316192-6328-4e45-a39c-37fc96cad138.json │ │ │ │ ├── 54d227b4-1f3e-4f20-b16c-6428b77f5252.json │ │ │ │ ├── 574e1b06-4332-4a1c-9b30-5daf2cce6b10.json │ │ │ │ ├── 579fbee3-0be0-4884-b7c5-658c23c4e7d3.json │ │ │ │ ├── 58c5c312-85d2-47a3-87a7-1549ec0ccd44.json │ │ │ │ ├── 5aac5aa6-8bc0-4be5-a4de-76a5917dd2b2.json │ │ │ │ ├── 5c3d7f0e-1900-4d73-acf6-69459d70d616.json │ │ │ │ ├── 5dc77e2b-df39-475b-99da-c9756cabb5b6.json │ │ │ │ ├── 5edc9ddf-242c-4533-9c38-cbf41709ef60.json │ │ │ │ ├── 5f6df4ff-ef4b-43d9-98f5-d66ef9d27c67.json │ │ │ │ ├── 60ce9ab1-945d-4fef-aba8-a1bb640165be.json │ │ │ │ ├── 612c5585-4e93-4f4f-9735-ec9ab7f2aab9.json │ │ │ │ ├── 61ef876b-9508-48e9-afbf-2d4386c38127.json │ │ │ │ ├── 63404c30-266d-47b6-beda-fd252283e4e5.json │ │ │ │ ├── 63aecd7a-9b3f-4732-bf8c-1702ad3a49dc.json │ │ │ │ ├── 65223343-756c-4083-a20f-cf3cf98efbdc.json │ │ │ │ ├── 6599493d-ead6-41ce-ae9c-2a47ea74c1a8.json │ │ │ │ ├── 666699cd-7460-44b1-afa9-adc363778ff4.json │ │ │ │ ├── 66c2bfb0-11c9-4191-8e91-1a0314726cc6.json │ │ │ │ ├── 66d1d01b-a1a5-4634-9c15-4cd382a44147.json │ │ │ │ ├── 66d7e3d5-f89c-42c5-82d5-9e6869ab9775.json │ │ │ │ ├── 66f06c44-26ff-4015-b0ce-d241a39def8b.json │ │ │ │ ├── 6717be36-81c1-4df3-a6f8-0f5eef45cec9.json │ │ │ │ ├── 67497e93-c793-4134-915e-e04f5adae5d0.json │ │ │ │ ├── 68abefdb-27f4-4cb8-840c-afee8510c249.json │ │ │ │ ├── 6f101294-0433-492b-99f7-d59105a9970b.json │ │ │ │ ├── 70a106ca-3a82-4e37-aea3-4a0bf8d50afa.json │ │ │ │ ├── 70e9ef51-b838-461b-a1d8-2b32ee49855b.json │ │ │ │ ├── 72bbbb80-ea6c-43c9-8ccd-99d26290f560.json │ │ │ │ ├── 73355d89-317a-43a5-8ebb-fa60dd738c5b.json │ │ │ │ ├── 7376c282-b5a3-4898-a342-c45f1c18b609.json │ │ │ │ ├── 73fbc893-331d-4e67-9753-ab988ac005c7.json │ │ │ │ ├── 74dfb95b-515d-4561-938d-169ac3782280.json │ │ │ │ ├── 75f88974-01ac-47d7-bcee-6ce1f0c0d0fc.json │ │ │ │ ├── 7756aa70-f22a-4f42-b8f4-e56ca9746064.json │ │ │ │ ├── 776102b6-3d75-4570-8215-484367ea2a80.json │ │ │ │ ├── 77bbfb67-9d1d-41f9-8626-b327aa90a584.json │ │ │ │ ├── 77dce560-3d53-4483-963e-37d5f72e219e.json │ │ │ │ ├── 78a78abb-31d9-4e2a-aea5-6744f27a6519.json │ │ │ │ ├── 7b3b0b11-b3cf-4e69-b4c2-c414bb7bd78d.json │ │ │ │ ├── 7b534a1e-e06d-4a2c-8ea6-85c128201834.json │ │ │ │ ├── 7c0ba316-c6d9-48dc-919e-76e0ee0cf0fb.json │ │ │ │ ├── 7c2c1e29-9e58-45eb-b512-5894496cd4dd.json │ │ │ │ ├── 7e11e0dc-0a4e-4db9-9673-84600c8035c4.json │ │ │ │ ├── 7e83ba7d-1c8f-465c-87d3-9bd86256031a.json │ │ │ │ ├── 7f2e9d46-f5db-48bf-8e07-d6d12e77d857.json │ │ │ │ ├── 7fe147d0-fd91-4119-83ad-4e7ebccdfd89.json │ │ │ │ ├── 83c5561e-e4be-40b0-ae56-28a371680af8.json │ │ │ │ ├── 844686ba-57c3-4c91-8b33-c1e1889a44c0.json │ │ │ │ ├── 880f29a2-e51c-4016-ab18-ca09275673c3.json │ │ │ │ ├── 88592f8b-1d15-4aa0-9115-4a28b67e1753.json │ │ │ │ ├── 8af11a89-1487-4b21-aabf-6af57ead8474.json │ │ │ │ ├── 8c982139-3609-48d3-b145-b5ceb484c414.json │ │ │ │ ├── 8c9d27f2-fe77-4653-9696-b046d6536bfa.json │ │ │ │ ├── 8f5124fa-cb2a-4cc9-87bb-bc155dc9791a.json │ │ │ │ ├── 8fe152e5-b58c-4d3c-b143-358d5c54ba06.json │ │ │ │ ├── 90255d75-af44-4b5d-bcfd-77cd27dce782.json │ │ │ │ ├── 90684e6e-2b34-4f18-bbd1-f610f76179b7.json │ │ │ │ ├── 9151aaf1-a75b-4a2c-bf2b-c823e2586db2.json │ │ │ │ ├── 92a52065-32b0-42c6-a0aa-e8b8a341f79c.json │ │ │ │ ├── 931ee133-2b60-4b82-8889-7c9855ca030a.json │ │ │ │ ├── 96dbb697-3d7e-49bf-ac9b-0ea5cc014a6f.json │ │ │ │ ├── 972b8208-c88d-47bb-9e79-1574fab34dfb.json │ │ │ │ ├── 99c347f1-1427-4d41-bc12-945d38f92a94.json │ │ │ │ ├── 99f791e7-7343-42e8-8c19-3c41068b5f8d.json │ │ │ │ ├── 9ab1ee28-b81f-4b89-ae6b-3c6e5322e269.json │ │ │ │ ├── 9b5a87f8-f024-4b76-b230-95913e474b57.json │ │ │ │ ├── 9c035e40-a5dc-406b-a83a-559f940eb355.json │ │ │ │ ├── 9ca410f0-eb75-4105-90a1-09fc8d2873b8.json │ │ │ │ ├── 9d2c4779-1608-4d2a-b157-f5c4bb334eed.json │ │ │ │ ├── 9dcf0a16-db7f-4b63-bad7-30f80bcd9901.json │ │ │ │ ├── 9f9ac0e3-f689-4e98-b1bb-0f5f01f20fad.json │ │ │ │ ├── a141ab0d-7e2c-48b1-9963-ba8685bcdfe3.json │ │ │ │ ├── a4f1d01a-ebfc-4bd3-9521-be6d73f79fac.json │ │ │ │ ├── a566ac8d-4a81-4a11-9cfb-979517440ce2.json │ │ │ │ ├── a642097b-cc0a-430d-9425-9f8385fc6aa4.json │ │ │ │ ├── a71d6727-61e7-4282-9fcb-526d1e7bc24f.json │ │ │ │ ├── aa393972-1604-47d2-a533-81b41199ccf0.json │ │ │ │ ├── aae223c8-6330-4641-b12b-f231866de4c6.json │ │ │ │ ├── ae094b3e-a8b8-4e29-9853-3bd464efd247.json │ │ │ │ ├── aea2f438-77bc-43f5-84fc-c781141a1d47.json │ │ │ │ ├── aebd8175-fffe-4ee2-b208-c0bbbd049664.json │ │ │ │ ├── b0fc7899-9c6f-4b80-838f-692a7a0aa83b.json │ │ │ │ ├── b10c1efc-5341-4ec4-be12-a70dbb1c41cc.json │ │ │ │ ├── b14e1447-0bca-4dd5-87e1-60c0b5d2988b.json │ │ │ │ ├── b225d445-6884-4232-97e4-b33499982104.json │ │ │ │ ├── b32a6fe3-f534-4c42-bd2d-8e2307476ba2.json │ │ │ │ ├── b3732bd9-c3d6-4861-8dbe-eb2884557f34.json │ │ │ │ ├── b47e2eec-62a0-440c-9f20-af9c5c75d57b.json │ │ │ │ ├── b4a3405b-1293-4e98-9b11-777f666b25d4.json │ │ │ │ ├── b50f640f-0ae9-4d63-acb2-2abd94b6271b.json │ │ │ │ ├── b5133b5b-1687-447a-b88a-ef21f7599eda.json │ │ │ │ ├── b5946ea8-b8a8-45b9-827d-86fa13e034cd.json │ │ │ │ ├── b5ee8da7-5cc3-44f3-bd63-094cb93b4674.json │ │ │ │ ├── b85aa3d6-d923-438c-aad7-2063f6bfbd3c.json │ │ │ │ ├── baf7d87c-f09b-42cc-becd-49c2b3426226.json │ │ │ │ ├── bb176526-f5c6-4871-9e75-cfeef799ad48.json │ │ │ │ ├── bbaaa327-f8cc-43ae-8b0e-fc054eeda968.json │ │ │ │ ├── bd2c67c0-26a4-46d5-b58a-f26dcfa8f34b.json │ │ │ │ ├── bdb52e20-8f5c-4a6c-a8d5-2b4dc060cc13.json │ │ │ │ ├── bec3af5b-d2d4-4dfb-aca5-cf87059469d4.json │ │ │ │ ├── bf3b8cd7-679e-4546-81fc-85652653fe8f.json │ │ │ │ ├── c03527d6-1936-4fdb-ab72-93ae7cb571ed.json │ │ │ │ ├── c046ca0b-6dd9-459c-bf76-bd024363aaac.json │ │ │ │ ├── c10d2e3a-af21-4bad-9b18-fbf3fb659eae.json │ │ │ │ ├── c1ec594f-4b56-436d-aa28-ce3004de2803.json │ │ │ │ ├── c1f503a3-c6b4-4eee-9fea-1f656f3b0825.json │ │ │ │ ├── c23969d4-e195-4e53-bf7e-d3d041184325.json │ │ │ │ ├── c43b2a01-933b-4021-896f-fcd27f3820da.json │ │ │ │ ├── c47bf5ea-dfe4-4c9f-8bbc-067bd15fa6d2.json │ │ │ │ ├── c63d51d8-b319-4a48-a6f1-81671b28ef07.json │ │ │ │ ├── c7c9f73a-f4be-4c59-9278-524d6069d9dc.json │ │ │ │ ├── c87d4cae-84ee-4336-bc57-69c4ea33a6bc.json │ │ │ │ ├── cd85035d-3901-4d07-a254-90750cd57c90.json │ │ │ │ ├── cda35e7b-29b0-4d34-b925-bf753d16af7e.json │ │ │ │ ├── ce737f29-05a4-4a9a-b5dc-f1876f409334.json │ │ │ │ ├── d42bd5b7-9f7e-4cb2-a295-e37471cdb1c2.json │ │ │ │ ├── d61f7a82-85c5-45e1-a23c-60edae497459.json │ │ │ │ ├── d7a96dd1-66f4-49b4-9085-53a12facac98.json │ │ │ │ ├── d9510667-ae8b-4066-811c-08c6834efadf.json │ │ │ │ ├── da19b4e1-dfea-43c9-ad8b-19e7036f0da4.json │ │ │ │ ├── da8e07c2-7b3d-46af-bcc5-fef0a68b11d1.json │ │ │ │ ├── dac6366f-295f-4ddc-b08c-5a521c70774d.json │ │ │ │ ├── dd3d7458-318b-4c6b-891c-766a6d7ac265.json │ │ │ │ ├── e0274040-ef54-4b6e-b572-af65a948d8c4.json │ │ │ │ ├── e04ed9c1-face-4ee6-bade-7e522c0d210e.json │ │ │ │ ├── e1aa65e1-d524-48ba-91ef-39570b9984d7.json │ │ │ │ ├── e399424a-a86a-4c61-b92b-450106831b4c.json │ │ │ │ ├── e55c6a3a-a5e9-4575-b24f-6da0fd4115cd.json │ │ │ │ ├── e6471bf0-4692-4b7a-b104-94b12b30a284.json │ │ │ │ ├── e691ac69-a14d-4cca-86ed-82978614283e.json │ │ │ │ ├── e82e9dc1-7d00-47c0-9476-10eaf259967d.json │ │ │ │ ├── e8f03eaa-ddd2-4ff2-8b66-da69ff074ccd.json │ │ │ │ ├── eadabf25-0fa0-4e8e-aa1e-26d02eb70653.json │ │ │ │ ├── eafeb25d-265a-4899-be24-bb0f4bf64480.json │ │ │ │ ├── eb692475-f7af-402f-bb0d-cd420f670b88.json │ │ │ │ ├── ec0d252b-7ba6-4ac4-ad41-6158a10e9ccf.json │ │ │ │ ├── ec4d278f-0d96-478f-b023-0fdc7520c56c.json │ │ │ │ ├── f015e45e-d93a-4d3a-a010-648ca65b47be.json │ │ │ │ ├── f2f258d7-b650-45f9-a0e1-58687c08f4e4.json │ │ │ │ ├── f321b513-8164-4882-bae0-f3657a1a98fb.json │ │ │ │ ├── f3418c04-e3a8-4826-a41f-dcdbb5e4613e.json │ │ │ │ ├── f3b7f86f-3165-4430-b263-87e1222b5bb1.json │ │ │ │ ├── f5548ac2-958f-4b3d-8669-38b58735c517.json │ │ │ │ ├── f63ce832-2c8d-4c43-a4d8-134fc4311098.json │ │ │ │ ├── f6e6e602-468a-4dd7-ace4-3da5fefc165a.json │ │ │ │ ├── f74a81fa-3d6a-415c-88fd-5458ed8c45c2.json │ │ │ │ ├── f909c4c1-5fa9-4188-b848-ecd37e3dbf64.json │ │ │ │ ├── f95a5bb1-59a5-4125-b803-a278b13b3d3b.json │ │ │ │ ├── f9c72583-e1f8-4f13-bfb5-ddf68bcd656a.json │ │ │ │ ├── fa26ae74-5404-4aaf-bd54-9b78266ccf03.json │ │ │ │ ├── fbea6604-4e57-46b6-a3f2-e5de8514c7b0.json │ │ │ │ ├── fbff9784-d58c-4c86-a7f2-2f8ce68d10e7.json │ │ │ │ ├── fd70fe71-1429-4c6e-b399-90318ed9ddcb.json │ │ │ │ ├── fdc8539a-82a7-4d29-bd5c-67fb9769a5ac.json │ │ │ │ └── fe0e585e-fc54-4fa2-80c0-6fbfe5397e8c.json │ │ │ └── geozone/ │ │ │ ├── 01ee03b8-3ea2-4de4-8656-ec10138f95ea.json │ │ │ ├── 02be94a5-3c10-4f83-858b-812796e714ae.json │ │ │ ├── 02c10c0f-3f09-4d0a-a6ef-ad40ae0a007b.json │ │ │ ├── 043a0d4a-f1f5-430d-906d-ebd3d219485f.json │ │ │ ├── 04e066be-2254-44c5-ab1f-41afe5267ce3.json │ │ │ ├── 053fab61-2eff-446b-a29b-e9be91e195c9.json │ │ │ ├── 05963d51-677f-4f3b-b210-5103a1036506.json │ │ │ ├── 05974280-a62d-4fc3-be15-f16ab9e0f2d1.json │ │ │ ├── 070dd166-bdc9-4732-8da0-48bd318d3d9e.json │ │ │ ├── 076814fc-7422-40d5-80e0-b6978589ccdc.json │ │ │ ├── 07c1030f-fa7e-4b1c-ba21-c6acd092b676.json │ │ │ ├── 0971f796-ed73-46d7-9acf-38cd54ef7f54.json │ │ │ ├── 09d1a93d-64ba-4205-9b93-81ba8eb8feca.json │ │ │ ├── 0b525a39-59ce-40f3-91ca-8676a5404e23.json │ │ │ ├── 0b6e3041-4368-4476-a697-a8bafc77a9e0.json │ │ │ ├── 0db04a9e-352b-46d6-88bc-b5416b31756d.json │ │ │ ├── 0df27c73-a612-491f-8b74-c4e384317fb8.json │ │ │ ├── 0f115386-3220-49f1-b0f2-eaf6c78a2edd.json │ │ │ ├── 10185a2b-6af7-4735-b1e3-8c46aac842fd.json │ │ │ ├── 1026b90d-61be-4434-ab6d-ebfd92082dfe.json │ │ │ ├── 10adee5d-3ec5-4c70-a0d0-9c399a785dd2.json │ │ │ ├── 152f8dc5-5caa-44b7-89a8-6469042dc865.json │ │ │ ├── 155ddc67-1e74-4791-995d-2eddb0658293.json │ │ │ ├── 15b3d139-d927-43eb-8705-84df9122999f.json │ │ │ ├── 15c350c0-058c-474d-a7c2-e3bd359b7895.json │ │ │ ├── 19b7cd11-15b7-48c0-918d-73fe64eaae26.json │ │ │ ├── 1aa7127a-8c53-4840-a2da-120f8c6607bd.json │ │ │ ├── 1ac6bd1b-6b0c-4857-8243-bca4ba6eeb5e.json │ │ │ ├── 1b4bdc9d-5d38-43c4-97aa-bad370a18fb4.json │ │ │ ├── 1ba313de-0690-42db-97bb-ecba89aec4c7.json │ │ │ ├── 1c5d3479-59fc-4c77-8d4e-cfc5c33422e7.json │ │ │ ├── 1d049867-dc28-4ae1-b8a6-d44aecb4aa0b.json │ │ │ ├── 1d4eabb2-d6f1-44ad-be62-52ef66e5b04b.json │ │ │ ├── 1d91f9f6-0d62-479a-91a7-62d04fe1fdef.json │ │ │ ├── 1d996ba4-1906-44c3-9c51-399fd382d278.json │ │ │ ├── 1da58a0a-d0f7-48b1-9d48-102f65819773.json │ │ │ ├── 1ddfca11-3848-4945-848c-ae5cb67e0e8b.json │ │ │ ├── 1e1ba070-f44b-4dfb-8fc2-55c541f4943f.json │ │ │ ├── 1f6d4673-67a2-4313-8837-569b6b671685.json │ │ │ ├── 2022f303-2481-4b44-ba3d-d261b002c9c1.json │ │ │ ├── 21287450-809e-4662-9742-9380159d3c90.json │ │ │ ├── 2135d11f-4b63-46a5-b4c0-c62e130ce021.json │ │ │ ├── 2189b5a8-167f-425d-949c-b3858179003e.json │ │ │ ├── 2282df69-bcf5-49fe-a6eb-c8c9dec87a52.json │ │ │ ├── 25459871-1694-4d08-9e7c-6d06f2edc7ae.json │ │ │ ├── 2546d1ab-d4f5-4087-9b78-ea3badfafa12.json │ │ │ ├── 27129dc0-1dd2-497f-b724-65d93e0050be.json │ │ │ ├── 28061e80-5d1c-4d47-9e99-a72525b63f85.json │ │ │ ├── 294f2e9c-49d1-4094-b558-dd2d4219b0e9.json │ │ │ ├── 29f5ce90-8999-4a8e-91a5-fcf67b4fd8ab.json │ │ │ ├── 2a20cf43-8d55-4732-b810-641886f2aed4.json │ │ │ ├── 2a9b8ffe-91f5-4944-983d-37f52491dde6.json │ │ │ ├── 2ab44c64-8419-45a1-a78f-83894d679ea9.json │ │ │ ├── 2b0707ff-ef1a-498f-af98-facb2bd9f9c1.json │ │ │ ├── 2b350062-eaf4-4f05-ab04-a8ccec353eb5.json │ │ │ ├── 2d04de9b-525d-4623-a368-b29dd82dbbd0.json │ │ │ ├── 2df783c9-e527-4105-819e-181af57e7cec.json │ │ │ ├── 2dfe6223-5a2b-4dbc-b77c-9af80e973a20.json │ │ │ ├── 2f20005e-7efc-4186-9144-6996b68ee6e3.json │ │ │ ├── 3008a1b3-1188-4f4d-a2ef-b71b4f54233e.json │ │ │ ├── 30a0e005-a523-4301-b924-8a4651f54e90.json │ │ │ ├── 30fa3416-9fb1-43c1-999d-23a115218324.json │ │ │ ├── 31265516-54af-4551-af1b-a0900faa3028.json │ │ │ ├── 3249c886-3b1e-426a-8cd7-efc3922a964a.json │ │ │ ├── 335c6ba3-37e5-4cca-b466-6927658ee92e.json │ │ │ ├── 33cd3650-d80e-4157-b145-5d8d404628e4.json │ │ │ ├── 34141474-337e-4e28-9180-23620558ba1d.json │ │ │ ├── 347629b4-0c74-4e80-84c9-785fb45fb8d7.json │ │ │ ├── 356bd975-9775-40d4-9678-fc49098f0a02.json │ │ │ ├── 36b807a9-f496-430d-91bc-e8b1ac738736.json │ │ │ ├── 36f88c25-7a6a-41d4-abac-ce05cd5ecfa1.json │ │ │ ├── 37a4b316-853a-40b1-8203-b8c27d07917e.json │ │ │ ├── 37cf9d44-030d-48be-97f0-5b3dab24f48f.json │ │ │ ├── 38885962-564a-4686-9099-aa06570e00bd.json │ │ │ ├── 388a4219-a89a-4bf0-960f-f58936288a0a.json │ │ │ ├── 3933e77a-10f0-47e2-bb60-02de2ad724df.json │ │ │ ├── 3c173b83-5149-4fec-b000-64a65832c455.json │ │ │ ├── 3cb3ef7b-b000-41fa-bfd2-405f29bd646f.json │ │ │ ├── 3d11ee42-f2d3-4c0d-81b9-44394a3a5409.json │ │ │ ├── 3dab4424-efa5-409a-b96c-40daf5ee4b6c.json │ │ │ ├── 3deda5e5-10bb-41cd-87ff-f91688b5b7ed.json │ │ │ ├── 3e256c55-177f-459c-97cf-a77fb3729494.json │ │ │ ├── 3ebf7ceb-8e24-40af-801c-feccd6d780ee.json │ │ │ ├── 3ee49ff8-a56a-451a-a999-067915c8dd75.json │ │ │ ├── 3f030f3b-0a0a-464e-b86e-9cd9e7a97b8b.json │ │ │ ├── 3f05459f-5453-4aa1-9565-56b05080181d.json │ │ │ ├── 3fcf9ee7-66bc-4cf6-aef3-d8c70948ecde.json │ │ │ ├── 3ff66466-e523-492e-80c1-be19af171364.json │ │ │ ├── 40f760f8-531f-4fea-9773-a513a7b58af8.json │ │ │ ├── 4182cebc-5177-48ae-81f7-0c356139494b.json │ │ │ ├── 41898a0b-a26c-44ce-9568-cfb75f1a2856.json │ │ │ ├── 42e55b19-e977-4e00-830c-a1655cf8a072.json │ │ │ ├── 4308f7f6-1f1d-4248-8995-3af588c55976.json │ │ │ ├── 4344c1dd-e866-4683-9c90-22c9db369eae.json │ │ │ ├── 43830082-5772-47f2-8216-8a48c872e337.json │ │ │ ├── 440e892d-693c-493b-ba14-81919c3fb091.json │ │ │ ├── 4445eb1e-0888-4b11-bf7b-0bb9a701936d.json │ │ │ ├── 446cb079-fc60-478a-b8cb-d8b7ece3383d.json │ │ │ ├── 46d3633d-8db5-4cc8-b42e-76dd3d48458d.json │ │ │ ├── 46f46bef-20b8-4315-8bf1-f816bcb06b8e.json │ │ │ ├── 473bbc63-7d8c-4587-945c-32f943091ff4.json │ │ │ ├── 48184d25-0757-405d-934d-74d96f9745df.json │ │ │ ├── 481f03a2-a3fe-41d9-a938-920720c1f446.json │ │ │ ├── 48d12a99-bf3c-4fc7-86c5-c266424973eb.json │ │ │ ├── 49025d80-75ee-4367-a06c-88427507642b.json │ │ │ ├── 49ec50be-2751-443e-acf8-4c497633267d.json │ │ │ ├── 49fffe3b-61f4-433d-b9bc-4044398283cf.json │ │ │ ├── 4ab74396-fb33-4276-a518-ad05f28375d0.json │ │ │ ├── 4bc9f931-f1ed-489f-99bc-59f42bd77eec.json │ │ │ ├── 4bd4724c-2e5e-4df4-8b1c-3a679c30398f.json │ │ │ ├── 4d238397-af29-4dbc-a349-7f650a5d8d67.json │ │ │ ├── 4da1dac0-6c99-4a28-9d94-6a3df5507727.json │ │ │ ├── 4e0bc53a-62fe-4dfc-9d1d-8b928e40b22e.json │ │ │ ├── 4fa42d2c-b375-41d4-98ef-4d1442bccb1a.json │ │ │ ├── 5006ff54-aa63-4e57-8414-30d51598be60.json │ │ │ ├── 504d426d-cd02-446d-910c-5e4e36518879.json │ │ │ ├── 507e831c-8d74-44bf-a251-496b945faed9.json │ │ │ ├── 510c1204-13c5-4f0e-a746-5d1c5f843dfb.json │ │ │ ├── 517f1242-fe90-4322-969e-353c5dbfd061.json │ │ │ ├── 5241e330-b255-4ffa-833c-4964f13a0f7b.json │ │ │ ├── 5399df4c-92d4-4c59-9bfb-7dc2a575a3d3.json │ │ │ ├── 540233b4-a7c9-4e61-b54d-186763a2c65d.json │ │ │ ├── 5469ca74-b57e-41c1-b3e6-5ab725e7f423.json │ │ │ ├── 56259f37-af84-4215-ac73-259fa74c7c8d.json │ │ │ ├── 56faba9f-b482-4421-87cc-1ee320da22cd.json │ │ │ ├── 570fe94c-f226-4701-8c10-13dab9e59625.json │ │ │ ├── 584cf595-c117-4d7e-9a0b-6dadd748eda8.json │ │ │ ├── 58c1e282-cffa-4b49-b268-5356ba47aa19.json │ │ │ ├── 59997515-5699-4571-8c69-b91328b65a3f.json │ │ │ ├── 5bbd88d1-5023-43df-91f0-0fdd4f3878eb.json │ │ │ ├── 5bd4a551-46ba-465a-b3f9-e15ed70a083f.json │ │ │ ├── 60d9d569-7d0d-448f-b567-b4bb6c518140.json │ │ │ ├── 611023eb-d4f2-4831-812e-c3984a125310.json │ │ │ ├── 61952dad-6b28-4ba8-8580-5012a48accdc.json │ │ │ ├── 61d891a3-e620-46d8-aada-6c9c1944340c.json │ │ │ ├── 62202fa8-db98-40f9-9a26-446aee191cdd.json │ │ │ ├── 6243f71b-d89b-4fdc-bc01-fcf46aeb1f29.json │ │ │ ├── 628f9f88-55ef-4eef-bcb6-b866ec05838d.json │ │ │ ├── 6352d079-20ea-42da-9377-7a09e6b764ae.json │ │ │ ├── 63c099a8-5537-4c80-8654-a6128ee1b203.json │ │ │ ├── 640cef26-1b10-4eac-a4ae-2f3491c38376.json │ │ │ ├── 64d687fc-1908-4323-ab47-991ea4371186.json │ │ │ ├── 66cc8a10-4dfb-4e8a-b5f0-b935d22a18f9.json │ │ │ ├── 6743c28c-580d-4705-9b01-aa4380d65ce9.json │ │ │ ├── 67e1633f-7405-451d-a772-eb4119c13b2c.json │ │ │ ├── 67f56be1-88c8-474d-beb9-5e75cd3b6062.json │ │ │ ├── 69a0494d-f8c3-434b-b8d4-c18ca5af5a4e.json │ │ │ ├── 6ac7bea2-d4ba-4c48-b0d0-f784af781587.json │ │ │ ├── 6c342c68-690a-4967-97c6-e6408ca1ea59.json │ │ │ ├── 6cc5cf7e-df8f-4c30-8b75-3c7d7750a4c0.json │ │ │ ├── 6e0eb9ac-76a2-434d-ae13-18dbe56212bf.json │ │ │ ├── 6e54cc16-2a7d-4662-9f2b-1f7808318412.json │ │ │ ├── 6e9d7937-3614-465e-8534-aa9a52f2c69b.json │ │ │ ├── 71366f2a-e8b5-469f-a995-a0410dc33fd8.json │ │ │ ├── 71682c43-e9c4-4d96-89e7-b06d47caa053.json │ │ │ ├── 7190e292-34cf-49f3-8367-a5fafb749cd3.json │ │ │ ├── 72c87c62-5656-4811-84cd-0c5ce4b7d19f.json │ │ │ ├── 730f58d1-9129-4f25-a94c-1a0f2f373bcd.json │ │ │ ├── 74062d11-8784-40bc-a95d-43b785ef8196.json │ │ │ ├── 74532861-c62d-49d2-a8ed-e99f401ea768.json │ │ │ ├── 7566d0a5-7394-4947-b4d7-a76a94746a23.json │ │ │ ├── 7759c9e9-43bc-4570-a9bb-c578564a0951.json │ │ │ ├── 7783e2f6-ded1-4703-aa2b-9fc844f28018.json │ │ │ ├── 7786d5ce-a4f9-4cf0-82fd-25a7ebe39fc5.json │ │ │ ├── 780d9ddb-38a2-47c8-a162-1231bea2e54d.json │ │ │ ├── 79b41943-7a78-4cec-857d-1fb89d34d301.json │ │ │ ├── 7a2ade5f-8353-4326-a46d-a42d31370d2c.json │ │ │ ├── 7ace8e48-a0c5-48ee-b992-ae6eb7142408.json │ │ │ ├── 7bf366d4-e9fc-4715-b7f9-1af37cc97386.json │ │ │ ├── 7c68c309-608d-4089-adbc-f5289d67aa57.json │ │ │ ├── 7ce436e6-349d-4f41-9053-5d7666662bb8.json │ │ │ ├── 7dc834f4-c490-4986-bfbc-10dfc94e235c.json │ │ │ ├── 7fcce82b-7828-40c9-a860-a21a787780c2.json │ │ │ ├── 80717ff0-5218-4119-9128-cef942826edc.json │ │ │ ├── 843c2659-d2bf-4af0-a0aa-ee8c268bede7.json │ │ │ ├── 849c05f0-9448-4013-8566-88ff891d1f6e.json │ │ │ ├── 84bf6b91-f9ff-4203-bad1-b5cf01239b77.json │ │ │ ├── 8587e33e-25fc-4c19-b504-0c93c027dd93.json │ │ │ ├── 85f3b62e-d3e7-4dec-b13b-dd494ad7b2cc.json │ │ │ ├── 86bdbe5d-4085-4916-984c-94c191c48c67.json │ │ │ ├── 87268168-cf40-442f-a526-06ddaeb1befd.json │ │ │ ├── 87c1483d-e471-4166-87cb-44f9c4459aa8.json │ │ │ ├── 87ceb5af-d6c0-4189-88f2-f0b38e2223a6.json │ │ │ ├── 87e6c0a9-ac01-457a-b759-0c10fc63605d.json │ │ │ ├── 883b8625-3130-4aac-b239-e57cf79c020b.json │ │ │ ├── 8a4e0e4c-2727-42cd-86d6-ed27a6a6b74b.json │ │ │ ├── 8a6db145-7ff4-4dfa-ac88-ea161924ea03.json │ │ │ ├── 8b1fe477-db16-4dcb-92f0-dcbf2f1de8cb.json │ │ │ ├── 8b3c48fd-9e7e-4653-a711-6dac6971cb32.json │ │ │ ├── 8bc664a9-b12c-4f48-af34-a7f68384a76a.json │ │ │ ├── 8bd9d2b9-67db-4fd6-90c7-52d0426e2007.json │ │ │ ├── 8ee2f892-4ee6-44f5-938a-b553e885161a.json │ │ │ ├── 8fab7d36-b885-46cd-9dc8-41e40c8683c4.json │ │ │ ├── 8ff34a94-016c-4046-9c39-99f1887c4cb9.json │ │ │ ├── 9013454d-1873-4be6-8fb1-b503ae1ed652.json │ │ │ ├── 91bf4254-f418-404a-8cb2-5449d498991e.json │ │ │ ├── 93215e73-4df8-4609-ac37-9da1b9bfe1c9.json │ │ │ ├── 933cd9ef-c021-48ed-8260-6c013685970f.json │ │ │ ├── 93cdd758-cc83-4f5a-94c0-9a3d13c7fa44.json │ │ │ ├── 9451f5b9-3dbc-4c17-83b9-8966350d26ca.json │ │ │ ├── 956b1071-d4c1-4676-be0c-e8834e47b674.json │ │ │ ├── 958cf4dd-04be-48e3-93e1-3bea8b80edcf.json │ │ │ ├── 95f80d75-23bc-4710-a106-bb98204059de.json │ │ │ ├── 962d2729-cc0c-4052-abc9-c696307f3f26.json │ │ │ ├── 968a394f-7764-4dfc-adb3-bf881644eddf.json │ │ │ ├── 978ecaab-c462-4d66-80b6-a65eb83b86a5.json │ │ │ ├── 981b0264-12a2-43be-b0c6-54e81c960138.json │ │ │ ├── 98f9db63-a224-462b-8765-240953489cbb.json │ │ │ ├── 993207ec-34a5-4896-88b0-3c43ccd11ab2.json │ │ │ ├── 9958d966-7824-4dea-94a4-725fcf96f0d0.json │ │ │ ├── 997fd24b-e5c6-474a-8c70-dbe6652b9267.json │ │ │ ├── 9bc8834b-01ce-40a2-8be1-8e20c24d1f11.json │ │ │ ├── 9c24162b-10de-47c1-b55f-0dcaaa24f86e.json │ │ │ ├── 9c9951d7-68d2-438a-a702-4289cbc1720e.json │ │ │ ├── 9d10e877-aaec-4913-bc99-b9815af76bf2.json │ │ │ ├── 9d62722c-7fcc-432c-8587-c7953e440e18.json │ │ │ ├── 9fb374c6-b87c-4096-a43c-d3d9ff2fd04c.json │ │ │ ├── a0984f35-6af2-493d-be85-903d453193c2.json │ │ │ ├── a1b99e38-1a7f-4b2f-927b-fcbdfccbc198.json │ │ │ ├── a1eaba97-8f4f-4149-b1e3-25cb19b145b7.json │ │ │ ├── a2ee590a-0b2e-4688-8c87-83011d5d2d3b.json │ │ │ ├── a34df017-1334-4f1f-aab8-f650425f937d.json │ │ │ ├── a39f8a9a-6586-41fb-9d5f-f84bd5161333.json │ │ │ ├── a3a183ae-8117-46c0-93b7-3940c7e5694f.json │ │ │ ├── a3cb237b-a940-418f-8368-fa6e35263e22.json │ │ │ ├── a540b300-1715-4677-aa6a-9ee79e6fef2e.json │ │ │ ├── a63a1dff-8f61-4159-9bc5-f005f8bcc19f.json │ │ │ ├── a67bbf90-32f8-45d0-8c9a-1af135ea6225.json │ │ │ ├── a6ed9918-44c7-4975-b680-95b4abcfb7ac.json │ │ │ ├── a91bf8c6-0f2b-4ea8-8b98-3f70cd240bc2.json │ │ │ ├── aa492ac6-e3b1-4408-b503-81480b57f008.json │ │ │ ├── ab47df32-c57d-412b-b04d-67378c120ae7.json │ │ │ ├── ac353aac-e2b7-4899-94f9-0bad7418ace9.json │ │ │ ├── ad9e0130-b735-4be0-9338-99e20bb9410d.json │ │ │ ├── ae1faeaf-d3f8-484e-b5a8-4548441ae758.json │ │ │ ├── afa207c7-e69d-46f0-8242-2a67a06c42e3.json │ │ │ ├── b009fd08-9cb2-4cd4-85cc-ed7c3e413f59.json │ │ │ ├── b00a500e-73d6-4229-93cc-99a255266c86.json │ │ │ ├── b0720a71-450b-4912-810e-871c8ef518e2.json │ │ │ ├── b11a9785-c227-47ed-a14e-402a4b5360c7.json │ │ │ ├── b299cad1-f84c-4aa7-b63a-2746b25baaaa.json │ │ │ ├── b2b175a4-09ba-4e25-919c-9de52109bf4d.json │ │ │ ├── b411f228-7677-4203-8696-df1a65e1651f.json │ │ │ ├── b519aaaf-7e2c-421f-88b8-bf7853a8de4f.json │ │ │ ├── b5812090-e7e1-492b-b9bc-04fec3ec9492.json │ │ │ ├── b588e3f6-0078-454c-809a-480c575e5200.json │ │ │ ├── b5ebabd8-7a23-4006-8044-5049fcf8a762.json │ │ │ ├── b5feb85c-2dc0-4776-ba5c-8c2d1b688e89.json │ │ │ ├── b716403c-6b15-488b-9cd0-f60b1aa1ba41.json │ │ │ ├── b7500c17-30c7-4d87-bb47-bb35d8b1d3a6.json │ │ │ ├── b7aed2ab-9e68-45d1-b535-fe6c1ec2d892.json │ │ │ ├── b8029f8e-0a19-41a5-a2f0-cf8f0e1a69c6.json │ │ │ ├── b8bf0b26-2f14-49e4-bfda-2d01eafa364b.json │ │ │ ├── b9032648-36dc-4903-a5e6-30abd7519754.json │ │ │ ├── b9093677-f26a-4b47-ad98-12caed313044.json │ │ │ ├── b9720a4e-9ca0-4120-a7cf-f81138b1db63.json │ │ │ ├── b9f64887-ed6d-4ddc-a142-7eb8898ca47e.json │ │ │ ├── b9f911eb-f762-4da4-a81f-9bc967cd3c4b.json │ │ │ ├── ba3c2043-cc3e-4225-b28e-bdb18c1a79ef.json │ │ │ ├── ba5a801b-11c6-4408-b097-08aac22e739e.json │ │ │ ├── baa695ab-a67a-409f-9f74-189ab212260c.json │ │ │ ├── baf9725f-0d57-4c84-b018-d6d55d00a647.json │ │ │ ├── bb090ce7-e0ca-4d0d-96eb-1b8e044fbca8.json │ │ │ ├── bb607ecb-df31-427b-88bb-4f53959b3e0c.json │ │ │ ├── bbd4704a-100a-4533-9ac9-37c228711dae.json │ │ │ ├── bcea3dbc-debb-483e-85b9-a3e47ff68dbf.json │ │ │ ├── bec44d04-ec8e-45a8-af09-21468ad9994f.json │ │ │ ├── c1983f1d-353a-4042-b097-f0e8237f7fcd.json │ │ │ ├── c26cfb75-5e44-4156-b660-a18a2a487fec.json │ │ │ ├── c2ba8e9e-d370-4639-b168-c51057e2397e.json │ │ │ ├── c2c00caa-3c72-4b5e-a07f-6f605926ef8e.json │ │ │ ├── c3e70597-e8dd-4277-b7fc-e9b4206da073.json │ │ │ ├── c427a41a-2fd0-4621-a7b1-090ee19f2eba.json │ │ │ ├── c4fa438d-7130-4ae0-9f5d-fb533afc3139.json │ │ │ ├── c5b34c76-5bf8-423f-a56f-985cc545ade8.json │ │ │ ├── c5d128d8-353a-43dc-ba0a-d0c35e33de17.json │ │ │ ├── c6cf9405-369e-41f4-a5e6-435469596c08.json │ │ │ ├── c7330896-bd61-4282-b3bf-8713a28d3b50.json │ │ │ ├── c7547571-7cda-427a-a8f2-259e9c587e84.json │ │ │ ├── c7a02c1c-3076-43b3-9538-b513bab8a243.json │ │ │ ├── ca553819-434a-408f-a2a4-92a7df9a2618.json │ │ │ ├── ca5c0c52-e8ae-4ccd-9a45-565e352c4e2b.json │ │ │ ├── ca7ce68d-465a-4c6e-ad75-6f9ade467f1e.json │ │ │ ├── cb47cc62-5d26-4b17-b01f-25e5432f913c.json │ │ │ ├── cb6d309d-ed20-48d0-8a5d-cd1d7fd1aad6.json │ │ │ ├── cbc4121c-d62d-410c-b699-60b08b67711f.json │ │ │ ├── cbd2718f-dd60-4151-a24d-437ff37605c6.json │ │ │ ├── cc6b7a8e-4275-4e4e-8d62-34b5480f3995.json │ │ │ ├── ccd7968c-7e80-4381-958b-ab72be0d6c35.json │ │ │ ├── cd1579c0-c471-4095-867a-3e2af11e1f35.json │ │ │ ├── cd98173e-507e-4a92-9eef-2de1d8e7a61f.json │ │ │ ├── cf6e4b72-5f4f-4cc4-add3-eb0964892f7b.json │ │ │ ├── cf75931a-d86f-43a0-8bd9-3942d5945ff7.json │ │ │ ├── cfa0c0e5-b478-41bd-9029-49bd04c68871.json │ │ │ ├── d0c79bd1-3688-4ed3-9b65-0cb24a1e8b43.json │ │ │ ├── d1562c4d-3163-4e92-a361-05c2b9541772.json │ │ │ ├── d20875cc-8572-453c-b5e0-53b49742debb.json │ │ │ ├── d21905c5-6ee9-4072-9618-8447d9c4390e.json │ │ │ ├── d21e2732-779d-406a-b1b9-cf44ff280dfe.json │ │ │ ├── d226235d-0eb0-49c5-9e7a-55cc91c57100.json │ │ │ ├── d256f9b7-8a33-4d04-9e19-95c12c967719.json │ │ │ ├── d284266a-559d-42f3-a881-0136ea080c12.json │ │ │ ├── d2880e75-e454-41a1-a73d-b2cff71197e2.json │ │ │ ├── d2c0e797-781a-4d5d-a87c-5c16de2063cb.json │ │ │ ├── d2e5ba25-d3d3-4113-b599-7456755da29e.json │ │ │ ├── d318e32e-41b6-4ca6-905d-23714709f38f.json │ │ │ ├── d46dc54c-28f5-4efe-a2bf-f5a814096736.json │ │ │ ├── d4f8133e-5580-4a66-94dd-096d295723a0.json │ │ │ ├── d52cedac-fcc2-4b9c-8f9e-09dcda91974c.json │ │ │ ├── d55b4820-1ccd-44ad-8fbe-60b750abc2dd.json │ │ │ ├── d698a1b6-68d7-480e-8137-421c684f251d.json │ │ │ ├── d6ebad0e-4c95-4ec8-8d0e-2543acc6ad11.json │ │ │ ├── d799b8c1-cac7-4933-aa6d-29acf7fd9d91.json │ │ │ ├── d85b7129-d009-4747-9748-b116739ba660.json │ │ │ ├── d892ea50-fccf-477a-bbdf-418e32dc5b98.json │ │ │ ├── d8de090a-d496-42ea-a1e0-f457dab41f14.json │ │ │ ├── d907d2a6-4caa-4687-898a-58bd5f978d03.json │ │ │ ├── d96d5675-f3e2-42fe-b581-bd2367dc5012.json │ │ │ ├── da7fc721-b375-4b51-afe1-1cb11328c7a8.json │ │ │ ├── dad6586a-c504-4117-b116-4c80a0d1bf52.json │ │ │ ├── dada271d-2656-4c17-b570-72bb748eb7dc.json │ │ │ ├── db9ccccf-9e20-4224-88a7-067e5238960d.json │ │ │ ├── dcc28b9c-8d2f-4569-ad0a-ad5717da3bb7.json │ │ │ ├── dcc2ab57-48e6-4c14-bf14-e8d72c389863.json │ │ │ ├── ddb0ca67-8635-4f40-a01d-06ccb266ef56.json │ │ │ ├── dec30815-883a-45a2-9318-bfb111b383d6.json │ │ │ ├── df964122-964e-4067-8386-45bcb548e39d.json │ │ │ ├── e026bf9d-66a9-49bf-ba77-860b8c60871d.json │ │ │ ├── e2a9ae21-97d6-4e4c-ac55-7fe75a298f6c.json │ │ │ ├── e314e827-9b3a-4282-954f-b3f46ba92f07.json │ │ │ ├── e3835a5d-1eca-4b9c-8c76-f52f4fc17553.json │ │ │ ├── e4da2345-e459-4b6a-982a-337a8ae84e1b.json │ │ │ ├── e5f56833-0ea5-40d8-acc0-0d0f48197a78.json │ │ │ ├── e6322365-8cbc-4d69-9515-341c4b038781.json │ │ │ ├── e663aef7-a697-4164-8ce4-141ac5cef6a9.json │ │ │ ├── e6c0d492-93fc-4798-b6fa-0180f08204f6.json │ │ │ ├── e7b4f7cb-cb36-4795-bfeb-dbd14bf2d520.json │ │ │ ├── e83159f2-abe3-4f94-80de-a149bcf83428.json │ │ │ ├── e8426499-9214-41c8-9717-44f2a4d6d14e.json │ │ │ ├── e885e0ce-a268-4db0-aff2-a0205353e7e4.json │ │ │ ├── ea553c01-9023-41ef-9068-849a054775f6.json │ │ │ ├── ea73c8eb-cac2-4b28-bb9a-d923f32c17ef.json │ │ │ ├── eb8efd2d-b9fa-4f99-9c49-9def24ccc5b5.json │ │ │ ├── ebc9105f-1f6e-44be-b4f2-6d23908278d6.json │ │ │ ├── ec2a6fed-19c2-4364-99cb-a59e8e0929fe.json │ │ │ ├── edd15e05-a785-47d0-9936-8489858f1d89.json │ │ │ ├── edfb040f-bb1e-47d7-8a16-14ac9d2f2f2f.json │ │ │ ├── ef661a83-6355-44d2-aea4-89f7a7c7bd21.json │ │ │ ├── f086728a-8077-4ced-8889-6d9a6e0ab147.json │ │ │ ├── f1bbc9fc-4b0a-4065-843e-f428f1c20346.json │ │ │ ├── f1c315b6-8573-4641-85b1-e9bf76502968.json │ │ │ ├── f23bab33-cad9-4d9c-9ced-a66b3ff4969f.json │ │ │ ├── f2e5ffce-bf2a-4f21-9696-fd948c07d6ae.json │ │ │ ├── f44ac5b9-b998-46ef-b335-9fb42f97fe27.json │ │ │ ├── f5315bf8-0dc2-49e7-abeb-0d7348492e6b.json │ │ │ ├── f6a35c2c-ab10-4531-afea-2cdbdf40f5c1.json │ │ │ ├── f6b97ed0-d090-4c68-a590-8fe743ee6d43.json │ │ │ ├── f80a1747-3d1a-4758-b74a-ba2b54844b8b.json │ │ │ ├── f894c6bf-2f76-4b42-85f4-b89581cee97f.json │ │ │ ├── f92a3196-5c67-4fec-8877-78b28803b8d6.json │ │ │ ├── f93295d1-7501-487d-93ad-6bd019e82cc2.json │ │ │ ├── fb63f22d-2a32-484e-a3e8-41bbae13891b.json │ │ │ ├── fbe69225-8cad-4e54-b4e5-03d6e404bc3f.json │ │ │ ├── fca86c53-d823-41f7-a28d-2146f23e93ef.json │ │ │ ├── fcd4595b-4b67-4b73-84c6-29706a57af38.json │ │ │ ├── fd19f293-d0ca-43d2-8274-810eddf75d21.json │ │ │ ├── fd809ed1-732f-4886-9bbc-f96984329b60.json │ │ │ ├── fe29ffdb-5e1c-44bd-bb9a-2e2e43c1b206.json │ │ │ ├── fea24d8c-ca6b-4643-8f8b-d5133ac40b18.json │ │ │ ├── fea759da-4280-46a8-af3f-ec2cc03b436a.json │ │ │ └── fec3a4f7-e3b5-44d3-bbde-62628489b459.json │ │ ├── f83067b4-919d-4910-acd1-4b3b1c210ecf/ │ │ │ ├── page/ │ │ │ │ ├── 078eb367-e0d1-41ae-921a-e9d76e6a3e3f.json │ │ │ │ ├── 0d890ed8-cfd5-4dcd-9fb5-885582fbb473.json │ │ │ │ ├── 0fe39377-57a9-4d42-a9f1-22fc0c5ba18c.json │ │ │ │ ├── 2a223bf8-9d41-4357-bf2c-673893b25d9f.json │ │ │ │ ├── 2c945759-1c3b-43ac-bf4b-241082ee6166.json │ │ │ │ ├── 65f4f88c-e9ea-4351-954a-f828b3f8229b.json │ │ │ │ ├── 796036f8-ee91-4c3c-8c5a-bb339a704ae0.json │ │ │ │ ├── 869cf304-6409-4b4d-880a-a6aa00c37075.json │ │ │ │ ├── a490fed8-a889-4c1a-be5a-df0ca09e99c6.json │ │ │ │ ├── ac4051c3-064a-4e7b-a2a3-c34f4c6ca7a6.json │ │ │ │ ├── another-child.json │ │ │ │ ├── first-draft.json │ │ │ │ ├── level-4.json │ │ │ │ ├── level-5.json │ │ │ │ ├── level-6.json │ │ │ │ ├── links.json │ │ │ │ ├── list-of-links.json │ │ │ │ ├── my-templated-page.json │ │ │ │ ├── new-page-test.json │ │ │ │ ├── ol-import.json │ │ │ │ ├── our-staff.json │ │ │ │ ├── react-demo.json │ │ │ │ ├── template-page.json │ │ │ │ ├── test-2.json │ │ │ │ └── test-gallery.json │ │ │ ├── post/ │ │ │ │ ├── 2016/ │ │ │ │ │ ├── 02/ │ │ │ │ │ │ └── 19c2a553-1e89-4aec-83ac-aede1931009a.xml │ │ │ │ │ └── 03/ │ │ │ │ │ └── 19a9ee38-3f62-4096-8250-c0eeb7b51e07.xml │ │ │ │ ├── 2017/ │ │ │ │ │ └── 11/ │ │ │ │ │ └── mark-diggety-down.md │ │ │ │ ├── 2018/ │ │ │ │ │ ├── 07/ │ │ │ │ │ │ ├── fresh-draft.xml │ │ │ │ │ │ └── second-draft.xml │ │ │ │ │ └── 10/ │ │ │ │ │ ├── 380c6e5c-f455-4c16-9b4b-c2e6bcdbc8ad.xml │ │ │ │ │ └── 95878177-d5a7-47ce-b8f9-a898bd252e0d.xml │ │ │ │ ├── 2019/ │ │ │ │ │ ├── 02/ │ │ │ │ │ │ └── futurama-.xml │ │ │ │ │ └── 08/ │ │ │ │ │ ├── beer-its-great.xml │ │ │ │ │ └── template-post.xml │ │ │ │ ├── 2020/ │ │ │ │ │ ├── 01/ │ │ │ │ │ │ ├── 3a700a91-0477-4edf-be76-06b5c43e5acf.xml │ │ │ │ │ │ └── 5b01238e-9aa7-4f06-a2b5-6a769ecfbb8f.xml │ │ │ │ │ └── 07/ │ │ │ │ │ └── mike-test.xml │ │ │ │ └── 2023/ │ │ │ │ └── 10/ │ │ │ │ └── new-post.xml │ │ │ ├── projectsettings/ │ │ │ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf.json │ │ │ ├── siterole/ │ │ │ │ ├── 14a776fd-769e-4f56-a509-f343022dfd70.json │ │ │ │ ├── 42883d65-a3cc-4cb8-9f70-b55189c6c663.json │ │ │ │ ├── 4e98344d-8ef0-4de3-986e-7b5011c29c04.json │ │ │ │ ├── 991131e8-561c-4aa9-a8d7-154526e2f2ab.json │ │ │ │ └── e4967cee-7778-4c79-a1da-91b403045d7a.json │ │ │ ├── sitesettings/ │ │ │ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf.json │ │ │ ├── siteuser/ │ │ │ │ ├── 17595de8-d27a-4304-bded-76b61a16ad19.json │ │ │ │ └── 32e43f7a-be53-47d1-8442-457865587eba.json │ │ │ ├── userclaim/ │ │ │ │ └── 6221cb09-1c03-47c2-9cc0-92b03a1409a4.json │ │ │ └── userrole/ │ │ │ ├── 17595de8-d27a-4304-bded-76b61a16ad19~4e98344d-8ef0-4de3-986e-7b5011c29c04.json │ │ │ ├── 17595de8-d27a-4304-bded-76b61a16ad19~991131e8-561c-4aa9-a8d7-154526e2f2ab.json │ │ │ └── 32e43f7a-be53-47d1-8442-457865587eba~4e98344d-8ef0-4de3-986e-7b5011c29c04.json │ │ ├── f83067b4-919d-4910-acd1-4b3b1c210ecf~en-GB/ │ │ │ └── projectsettings/ │ │ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf~en-GB.json │ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf~fr-FR/ │ │ ├── page/ │ │ │ └── home.json │ │ ├── post/ │ │ │ └── 2019/ │ │ │ └── 03/ │ │ │ └── post-un.xml │ │ └── projectsettings/ │ │ └── f83067b4-919d-4910-acd1-4b3b1c210ecf~fr-FR.json │ ├── package.json │ ├── readme.html │ ├── sitefiles/ │ │ └── s1/ │ │ ├── themes/ │ │ │ ├── _ViewImports.cshtml │ │ │ ├── _ViewStart.cshtml │ │ │ └── custom1/ │ │ │ ├── Shared/ │ │ │ │ └── _Layout.cshtml │ │ │ └── wwwroot/ │ │ │ ├── css/ │ │ │ │ └── style.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ └── bootstrap.esm.js │ │ └── wwwroot/ │ │ └── manifest.json │ ├── sourceDev.WebApp.csproj │ └── wwwroot/ │ ├── css/ │ │ ├── bootstrap.css │ │ ├── fontawesome-all.css │ │ ├── ie11.css │ │ └── site.css │ ├── js/ │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.esm.js │ │ └── jquery.js │ └── wlwmanifest.xml ├── test/ │ ├── cloudscribe.MetaWeblog.Tests/ │ │ ├── MetaWeblogRequestParserTests.cs │ │ ├── cloudscribe.MetaWeblog.Tests.csproj │ │ └── testfiles/ │ │ ├── delete-post-request.xml │ │ ├── get-categories-request-1.xml │ │ ├── get-recent-posts-request-1.xml │ │ ├── get-user-blogs-request-1.xml │ │ ├── new-media-request-1.xml │ │ ├── new-post-request-1.xml │ │ ├── wp-editPage-request1.xml │ │ ├── wp-getPage-request1.xml │ │ ├── wp-getPageList-request.xml │ │ └── wp-newPage-request1.xml │ └── cloudscribe.SimpleContent.Web.Tests/ │ ├── Services/ │ │ └── TeaserServiceTests.cs │ ├── Web/ │ │ └── csscsrControllerShould.cs │ └── cloudscribe.SimpleContent.Web.Tests.csproj ├── tools/ │ └── packages.config ├── update_version.ps1 └── xglobal.json
Showing preview only (1,456K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (19519 symbols across 619 files)
FILE: src/cloudscribe.ContentUtils/ExcerptHelper.cs
class ExcerptHelper (line 9) | public class ExcerptHelper
method ExcerptHelper (line 11) | public ExcerptHelper(
method GenerateExcerpt (line 33) | public ExcerptResult GenerateExcerpt(
method IsValidMarkup (line 132) | private bool IsValidMarkup(string html)
method GetMarkupErrors (line 138) | private IEnumerable<HtmlParseError> GetMarkupErrors(string html)
method GetContentLength (line 161) | private int GetContentLength(string html, ExcerptTruncationMode mode)
method GetDefaultTeaserLength (line 177) | private int GetDefaultTeaserLength(ExcerptTruncationMode mode)
method TruncatePost (line 192) | private string TruncatePost(ExcerptTruncationMode mode, string content...
FILE: src/cloudscribe.ContentUtils/ExcerptResult.cs
class ExcerptResult (line 3) | public class ExcerptResult
FILE: src/cloudscribe.ContentUtils/MarkdownHelper.cs
class MarkdownHelper (line 9) | public class MarkdownHelper
method ConvertMarkdownToHtml (line 14) | public string ConvertMarkdownToHtml(string markdown)
method ExtractFirstImageUrl (line 24) | public string ExtractFirstImageUrl(string markdown)
FILE: src/cloudscribe.ContentUtils/SlugHelper.cs
class SlugHelper (line 7) | public static class SlugHelper
method CreateSlug (line 9) | public static string CreateSlug(string title)
method RemoveDiacritics (line 27) | private static string RemoveDiacritics(string text)
method RemoveReservedUrlCharacters (line 48) | private static string RemoveReservedUrlCharacters(string text)
FILE: src/cloudscribe.ContentUtils/Truncation.cs
class Truncation (line 6) | public static class Truncation
method Truncate (line 14) | public static string Truncate(this string input, int length)
method Truncate (line 27) | public static string Truncate(this string input, int length, ITruncato...
method Truncate (line 40) | public static string Truncate(this string input, int length, string tr...
method Truncate (line 54) | public static string Truncate(this string input, int length, string tr...
type TruncateFrom (line 69) | public enum TruncateFrom
type ExcerptTruncationMode (line 81) | public enum ExcerptTruncationMode : byte
type ITruncator (line 97) | public interface ITruncator
method Truncate (line 107) | string Truncate(string value, int length, string truncationString, Tru...
class Truncator (line 110) | public static class Truncator
class FixedLengthTruncator (line 146) | class FixedLengthTruncator : ITruncator
method Truncate (line 148) | public string Truncate(string value, int length, string truncationStri...
class FixedNumberOfCharactersTruncator (line 173) | class FixedNumberOfCharactersTruncator : ITruncator
method Truncate (line 175) | public string Truncate(string value, int length, string truncationStri...
class FixedNumberOfWordsTruncator (line 219) | class FixedNumberOfWordsTruncator : ITruncator
method Truncate (line 221) | public string Truncate(string value, int length, string truncationStri...
method TruncateFromRight (line 238) | private static string TruncateFromRight(string value, int length, stri...
method TruncateFromLeft (line 261) | private static string TruncateFromLeft(string value, int length, strin...
FILE: src/cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5/VersionProvider.cs
class VersionProvider (line 8) | public class VersionProvider : IVersionProvider
FILE: src/cloudscribe.Core.SimpleContent/AuthorNameResolver.cs
class AuthorNameResolver (line 10) | public class AuthorNameResolver : IAuthorNameResolver
method AuthorNameResolver (line 12) | public AuthorNameResolver(IUserContextResolver userContextResolver)
method GetAuthorName (line 19) | public async Task<string> GetAuthorName(ClaimsPrincipal user, Cancella...
FILE: src/cloudscribe.Core.SimpleContent/ContentSettingsUIConfig.cs
class ContentSettingsUIConfig (line 7) | public class ContentSettingsUIConfig
FILE: src/cloudscribe.Core.SimpleContent/Controllers/ContentCloningController.cs
class ContentCloningController (line 29) | public class ContentCloningController : Controller
method ContentCloningController (line 43) | public ContentCloningController(
method Index (line 70) | [Authorize(Policy = "AdminPolicy")]
method Index (line 84) | [Authorize(Policy = "AdminPolicy")]
method PopulateAndValidateModel (line 248) | private async Task<ContentCloningViewModel> PopulateAndValidateModel(C...
FILE: src/cloudscribe.Core.SimpleContent/Controllers/ContentSettingsController.cs
class ContentSettingsController (line 25) | public class ContentSettingsController : Controller
method ContentSettingsController (line 27) | public ContentSettingsController(
method Index (line 54) | [Authorize(Policy = "AdminPolicy")]
method Index (line 197) | [Authorize(Policy = "AdminPolicy")]
FILE: src/cloudscribe.Core.SimpleContent/Controllers/CultureMetaweblogController.cs
class CultureMetaweblogController (line 12) | public class CultureMetaweblogController : MetaWeblogController
method CultureMetaweblogController (line 14) | public CultureMetaweblogController(
method Index (line 28) | [HttpPost]
FILE: src/cloudscribe.Core.SimpleContent/Controllers/CultureRssController.cs
class CultureRssController (line 10) | public class CultureRssController : RssController
method CultureRssController (line 12) | public CultureRssController(
method Index (line 22) | [HttpGet]
FILE: src/cloudscribe.Core.SimpleContent/Controllers/CultureSiteMapController.cs
class CultureSiteMapController (line 10) | public class CultureSiteMapController : SiteMapController
method CultureSiteMapController (line 12) | public CultureSiteMapController(
method Index (line 20) | [HttpGet]
FILE: src/cloudscribe.Core.SimpleContent/Controllers/FolderMetaweblogController.cs
class FolderMetaweblogController (line 12) | public class FolderMetaweblogController : MetaWeblogController
method FolderMetaweblogController (line 14) | public FolderMetaweblogController(
method Index (line 28) | [HttpPost]
FILE: src/cloudscribe.Core.SimpleContent/Controllers/FolderRssController.cs
class FolderRssController (line 10) | public class FolderRssController : RssController
method FolderRssController (line 12) | public FolderRssController(
method Index (line 22) | [HttpGet]
FILE: src/cloudscribe.Core.SimpleContent/CoreProjectEmailService.cs
class CoreProjectEmailService (line 21) | public class CoreProjectEmailService : IProjectEmailService
method CoreProjectEmailService (line 23) | public CoreProjectEmailService(
method SendCommentNotificationEmailAsync (line 41) | public async Task SendCommentNotificationEmailAsync(
FILE: src/cloudscribe.Core.SimpleContent/CustomClaimProvider.cs
class CustomClaimProvider (line 14) | public class CustomClaimProvider : ICustomClaimProvider
method CustomClaimProvider (line 16) | public CustomClaimProvider(
method AddClaims (line 25) | public Task AddClaims(SiteUser user, ClaimsIdentity identity)
class CustomClaimMap (line 44) | public class CustomClaimMap
class CustomClaim (line 51) | public class CustomClaim
FILE: src/cloudscribe.Core.SimpleContent/EventHandlers/HandleRoleDeletred.cs
class HandleRoleDeleted (line 11) | public class HandleRoleDeleted : IHandleRoleDeleted
method HandleRoleDeleted (line 16) | public HandleRoleDeleted(IPageService pageService,
method Handle (line 23) | async Task IHandleRoleDeleted.Handle(ISiteRole role)
FILE: src/cloudscribe.Core.SimpleContent/EventHandlers/HandleRoleUpdated.cs
class HandleRoleUpdated (line 16) | public class HandleRoleUpdated : IHandleRoleUpdated
method HandleRoleUpdated (line 23) | public HandleRoleUpdated(IPageService pageService,
method Handle (line 35) | async Task IHandleRoleUpdated.Handle(ISiteRole role, string oldRoleName)
FILE: src/cloudscribe.Core.SimpleContent/MultiTenantBlogRoutes.cs
class MultiTenantBlogRoutes (line 14) | public class MultiTenantBlogRoutes : IBlogRoutes
method MultiTenantBlogRoutes (line 16) | public MultiTenantBlogRoutes(
FILE: src/cloudscribe.Core.SimpleContent/MultiTenantPageRoutes.cs
class MultiTenantPageRoutes (line 14) | public class MultiTenantPageRoutes : IPageRoutes
method MultiTenantPageRoutes (line 16) | public MultiTenantPageRoutes(
FILE: src/cloudscribe.Core.SimpleContent/ProjectSecurityResolver.cs
class ProjectSecurityResolver (line 19) | public class ProjectSecurityResolver : IProjectSecurityResolver
method ProjectSecurityResolver (line 21) | public ProjectSecurityResolver(
method ValidatePermissions (line 39) | public async Task<ProjectSecurityResult> ValidatePermissions(
FILE: src/cloudscribe.Core.SimpleContent/Resources.cs
class SimpleContentIntegration (line 11) | public class SimpleContentIntegration
FILE: src/cloudscribe.Core.SimpleContent/SiteFileSystemMediaProcessor.cs
class SiteFileSystemMediaProcessor (line 21) | public class SiteFileSystemMediaProcessor : FileSystemMediaProcessor, IM...
method SiteFileSystemMediaProcessor (line 23) | public SiteFileSystemMediaProcessor(
method EnsurePathInfo (line 38) | private async Task EnsurePathInfo()
method EnsureFsPath (line 45) | private async Task EnsureFsPath(string mediaVirtualPath)
method ResolveMediaUrl (line 57) | public override async Task<string> ResolveMediaUrl(string mediaVirtual...
method SaveMedia (line 68) | public override async Task SaveMedia(string mediaVirtualPath, string f...
FILE: src/cloudscribe.Core.SimpleContent/SiteNavigationCacheKeyResolver.cs
class SiteNavigationCacheKeyResolver (line 9) | public class SiteNavigationCacheKeyResolver : ITreeCacheKeyResolver
method SiteNavigationCacheKeyResolver (line 11) | public SiteNavigationCacheKeyResolver(
method GetCacheKey (line 23) | public Task<string> GetCacheKey(INavigationTreeBuilder builder)
FILE: src/cloudscribe.Core.SimpleContent/SiteProjectSettingsResolver.cs
class SiteProjectSettingsResolver (line 17) | public class SiteProjectSettingsResolver : IProjectSettingsResolver
method SiteProjectSettingsResolver (line 19) | public SiteProjectSettingsResolver(
method GetCurrentProjectSettings (line 40) | public async Task<IProjectSettings> GetCurrentProjectSettings(Cancella...
FILE: src/cloudscribe.Core.SimpleContent/SiteRoleSelectorProperties.cs
class SiteRoleSelectorProperties (line 15) | public class SiteRoleSelectorProperties : IRoleSelectorProperties
method SiteRoleSelectorProperties (line 17) | public SiteRoleSelectorProperties(SiteContext currentSite)
method GetAttributes (line 39) | public Dictionary<string, string> GetAttributes(string csvTargetElemen...
method GetRouteParams (line 54) | public Dictionary<string, string> GetRouteParams(string projectId)
FILE: src/cloudscribe.Core.SimpleContent/SiteSimpleContentThemeHelper.cs
class SiteSimpleContentThemeHelper (line 7) | public class SiteSimpleContentThemeHelper : ISimpleContentThemeHelper
method SiteSimpleContentThemeHelper (line 9) | public SiteSimpleContentThemeHelper(
method GetThemeSettings (line 24) | public SimpleContentThemeSettings GetThemeSettings()
FILE: src/cloudscribe.Core.SimpleContent/StartupExtenstions.cs
class StartupExtenstions (line 18) | public static class StartupExtenstions
method AddCloudscribeCoreIntegrationForSimpleContent (line 20) | public static IServiceCollection AddCloudscribeCoreIntegrationForSimpl...
method AddCloudscribeCoreSimpleContentIntegrationDefaultPolicies (line 58) | public static AuthorizationOptions AddCloudscribeCoreSimpleContentInte...
FILE: src/cloudscribe.Core.SimpleContent/VersionProvider.cs
class VersionProvider (line 9) | public class VersionProvider : IVersionProvider
FILE: src/cloudscribe.Core.SimpleContent/ViewModels/ContentCloningViewModel.cs
class ContentCloningViewModel (line 18) | public class ContentCloningViewModel
method ContentCloningViewModel (line 20) | public ContentCloningViewModel()
class SiteDetails (line 53) | public class SiteDetails
FILE: src/cloudscribe.Core.SimpleContent/ViewModels/ContentSettingsViewModel.cs
class ContentSettingsViewModel (line 16) | public class ContentSettingsViewModel
method ContentSettingsViewModel (line 18) | public ContentSettingsViewModel()
FILE: src/cloudscribe.Core.SimpleContent/ViewModels/CoreCommentNotificationModel.cs
class CoreCommentNotificationModel (line 9) | public class CoreCommentNotificationModel
method CoreCommentNotificationModel (line 11) | public CoreCommentNotificationModel(
FILE: src/cloudscribe.MetaWeblog/Controllers/MetaWeblogController.cs
class MetaWeblogController (line 21) | [ApiExplorerSettings(IgnoreApi = true)]
method MetaWeblogController (line 24) | public MetaWeblogController(
method Index (line 62) | [HttpPost]
FILE: src/cloudscribe.MetaWeblog/IMetaWeblogRequestParser.cs
type IMetaWeblogRequestParser (line 5) | public interface IMetaWeblogRequestParser
method ParseRequest (line 7) | MetaWeblogRequest ParseRequest(XDocument postedDocument);
FILE: src/cloudscribe.MetaWeblog/IMetaWeblogRequestProcessor.cs
type IMetaWeblogRequestProcessor (line 7) | public interface IMetaWeblogRequestProcessor
method ProcessRequest (line 9) | Task<MetaWeblogResult> ProcessRequest(
FILE: src/cloudscribe.MetaWeblog/IMetaWeblogRequestValidator.cs
type IMetaWeblogRequestValidator (line 9) | public interface IMetaWeblogRequestValidator
method IsValid (line 11) | Task<bool> IsValid(MetaWeblogRequest request, CancellationToken cancel...
FILE: src/cloudscribe.MetaWeblog/IMetaWeblogResultFormatter.cs
type IMetaWeblogResultFormatter (line 9) | public interface IMetaWeblogResultFormatter
method Format (line 11) | XDocument Format(MetaWeblogResult metaWeblogResult);
FILE: src/cloudscribe.MetaWeblog/IMetaWeblogSecurity.cs
type IMetaWeblogSecurity (line 13) | public interface IMetaWeblogSecurity
method ValiatePermissions (line 15) | Task<MetaWeblogSecurityResult> ValiatePermissions(MetaWeblogRequest re...
FILE: src/cloudscribe.MetaWeblog/IMetaWeblogService.cs
type IMetaWeblogService (line 16) | public interface IMetaWeblogService
method NewPost (line 21) | Task<string> NewPost(
method EditPost (line 31) | Task<bool> EditPost(
method GetPost (line 40) | Task<PostStruct> GetPost(
method GetCategories (line 49) | Task<List<CategoryStruct>> GetCategories(
method GetRecentPosts (line 57) | Task<List<PostStruct>> GetRecentPosts(
method NewMediaObject (line 66) | Task<MediaInfoStruct> NewMediaObject(
method DeletePost (line 79) | Task<bool> DeletePost(
method GetUserBlogs (line 90) | Task<List<BlogInfoStruct>> GetUserBlogs(
method NewCategory (line 99) | Task<string> NewCategory(
method GetPages (line 107) | Task<List<PageStruct>> GetPages(
method GetPageList (line 114) | Task<List<PageStruct>> GetPageList(
method GetPage (line 121) | Task<PageStruct> GetPage(
method NewPage (line 129) | Task<string> NewPage(
method EditPage (line 137) | Task<bool> EditPage(
method DeletePage (line 146) | Task<bool> DeletePage(
FILE: src/cloudscribe.MetaWeblog/MetaWeblogRequest.cs
class MetaWeblogRequest (line 11) | public class MetaWeblogRequest
method MetaWeblogRequest (line 13) | public MetaWeblogRequest()
FILE: src/cloudscribe.MetaWeblog/MetaWeblogRequestParser.cs
class MetaWeblogRequestParser (line 19) | public class MetaWeblogRequestParser : IMetaWeblogRequestParser
method MetaWeblogRequestParser (line 25) | public MetaWeblogRequestParser(ILogger logger = null)
method ParseRequest (line 31) | public MetaWeblogRequest ParseRequest(XDocument postedDocument)
method GetIsPublished (line 198) | private static bool GetIsPublished(XElement paramNode)
method GetPublish (line 214) | private static bool GetPublish(XElement paramNode)
method GetCategory (line 242) | private static string GetCategory(XElement paramNode)
method GetPost (line 270) | private static PostStruct GetPost(XElement paramNode)
method GetPage (line 459) | private PageStruct GetPage(XElement paramNode)
method GetMediaObject (line 601) | private static MediaObjectStruct GetMediaObject(XElement paramNode)
FILE: src/cloudscribe.MetaWeblog/MetaWeblogRequestProcessor.cs
class MetaWeblogRequestProcessor (line 14) | public class MetaWeblogRequestProcessor : IMetaWeblogRequestProcessor
method MetaWeblogRequestProcessor (line 17) | public MetaWeblogRequestProcessor(
method ProcessRequest (line 26) | public async Task<MetaWeblogResult> ProcessRequest(
FILE: src/cloudscribe.MetaWeblog/MetaWeblogRequestValidator.cs
class MetaWeblogRequestValidator (line 18) | public class MetaWeblogRequestValidator : IMetaWeblogRequestValidator
method IsValid (line 20) | public Task<bool> IsValid(MetaWeblogRequest request, CancellationToken...
FILE: src/cloudscribe.MetaWeblog/MetaWeblogResult.cs
class MetaWeblogResult (line 10) | public class MetaWeblogResult
method MetaWeblogResult (line 12) | public MetaWeblogResult()
FILE: src/cloudscribe.MetaWeblog/MetaWeblogResultExtensions.cs
class MetaWeblogResultExtensions (line 5) | public static class MetaWeblogResultExtensions
method AddSecurityFault (line 7) | public static MetaWeblogResult AddSecurityFault(this MetaWeblogResult ...
method AddValidatonFault (line 17) | public static MetaWeblogResult AddValidatonFault(this MetaWeblogResult...
FILE: src/cloudscribe.MetaWeblog/MetaWeblogResultFormatter.cs
class MetaWeblogResultFormatter (line 13) | public class MetaWeblogResultFormatter : IMetaWeblogResultFormatter
method Format (line 15) | public XDocument Format(MetaWeblogResult metaWeblogResult)
method BuildGetTagsResponse (line 116) | private void BuildGetTagsResponse(XElement methodParams, MetaWeblogRes...
method BuildGetAuthorsResponse (line 148) | private void BuildGetAuthorsResponse(XElement methodParams, MetaWeblog...
method BuildWPGetPagesResponse (line 213) | private void BuildWPGetPagesResponse(XElement methodParams, MetaWeblog...
method BuildWPPageListResponse (line 364) | private void BuildWPPageListResponse(XElement methodParams, MetaWeblog...
method BuildGetPageResponse (line 419) | private void BuildGetPageResponse(XElement methodParams, MetaWeblogRes...
method BuildNewPageResponse (line 549) | private void BuildNewPageResponse(XElement methodParams, MetaWeblogRes...
method BuildActionResultBoolResponse (line 561) | private void BuildActionResultBoolResponse(XElement methodParams, Meta...
method BuildWPUserBlogsResponse (line 573) | private void BuildWPUserBlogsResponse(XElement methodParams, MetaWeblo...
method BuildUserBlogsResponse (line 649) | private void BuildUserBlogsResponse(XElement methodParams, MetaWeblogR...
method BuildRecentPostsResponse (line 695) | private void BuildRecentPostsResponse(XElement methodParams, MetaWeblo...
method BuildNewCategoryResponse (line 865) | private void BuildNewCategoryResponse(XElement methodParams, MetaWeblo...
method BuildGetCategoriesResponse (line 878) | private void BuildGetCategoriesResponse(XElement methodParams, MetaWeb...
method BuildMediaInfoResponse (line 982) | private void BuildMediaInfoResponse(XElement methodParams, MetaWeblogR...
method BuildGetPostResponse (line 1019) | private void BuildGetPostResponse(XElement methodParams, MetaWeblogRes...
method BuildNewPostResponse (line 1185) | private void BuildNewPostResponse(XElement methodParams, MetaWeblogRes...
method BuildWPGetFeaturesResponse (line 1198) | private void BuildWPGetFeaturesResponse(XElement methodParams, MetaWeb...
method BuildListMethodsResponse (line 1227) | private void BuildListMethodsResponse(XElement methodParams, MetaWeblo...
method BuildFaultResponse (line 1489) | private void BuildFaultResponse(XElement methodResponse, MetaWeblogRes...
FILE: src/cloudscribe.MetaWeblog/MetaWeblogSecurityResult.cs
class MetaWeblogSecurityResult (line 8) | public class MetaWeblogSecurityResult
method MetaWeblogSecurityResult (line 10) | public MetaWeblogSecurityResult(
FILE: src/cloudscribe.MetaWeblog/Models/ApiOptions.cs
class ApiOptions (line 8) | public class ApiOptions
FILE: src/cloudscribe.MetaWeblog/Models/AuthorStruct.cs
type AuthorStruct (line 11) | public struct AuthorStruct
FILE: src/cloudscribe.MetaWeblog/Models/BlogInfoStruct.cs
type BlogInfoStruct (line 9) | public struct BlogInfoStruct
FILE: src/cloudscribe.MetaWeblog/Models/CategoryStruct.cs
type CategoryStruct (line 9) | public struct CategoryStruct
FILE: src/cloudscribe.MetaWeblog/Models/FaultStruct.cs
type FaultStruct (line 9) | public struct FaultStruct
FILE: src/cloudscribe.MetaWeblog/Models/MediaInfoStruct.cs
type MediaInfoStruct (line 9) | public struct MediaInfoStruct
FILE: src/cloudscribe.MetaWeblog/Models/MediaObjectStruct.cs
type MediaObjectStruct (line 9) | public struct MediaObjectStruct
FILE: src/cloudscribe.MetaWeblog/Models/MetaWeblogException.cs
class MetaWeblogException (line 5) | public class MetaWeblogException : Exception
method MetaWeblogException (line 17) | public MetaWeblogException(string code, string message): base(message)
FILE: src/cloudscribe.MetaWeblog/Models/PageStruct.cs
type PageStruct (line 9) | public struct PageStruct
FILE: src/cloudscribe.MetaWeblog/Models/PostStruct.cs
type PostStruct (line 12) | public struct PostStruct
FILE: src/cloudscribe.MetaWeblog/Models/UserInfoStruct.cs
class UserInfoStruct (line 11) | public class UserInfoStruct
FILE: src/cloudscribe.MetaWeblog/ServiceCollectionExtensions.cs
class ServiceCollectionExtensions (line 8) | public static class ServiceCollectionExtensions
method AddCloudscribeMetaWeblog (line 10) | public static IServiceCollection AddCloudscribeMetaWeblog(
FILE: src/cloudscribe.MetaWeblog/Utils.cs
class Utils (line 10) | public static class Utils
method GetDateTimeStringForFileName (line 12) | public static string GetDateTimeStringForFileName()
method GetDateTimeStringForFileName (line 17) | public static string GetDateTimeStringForFileName(bool includeMiliseco...
method ToInvariantString (line 66) | public static string ToInvariantString(this int i)
method ConvertDatetoISO8601 (line 72) | public static string ConvertDatetoISO8601(DateTime date)
FILE: src/cloudscribe.MetaWeblog/XmlResult.cs
class XmlResult (line 14) | public class XmlResult : ActionResult
method XmlResult (line 20) | public XmlResult(XDocument xml)
method ExecuteResultAsync (line 28) | public override async Task ExecuteResultAsync(ActionContext context)
FILE: src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/VersionProvider.cs
class VersionProvider (line 8) | public class VersionProvider : IVersionProvider
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/Columns/ColumnTemplateOptions.cs
class ColumnTemplateOptions (line 3) | public class ColumnTemplateOptions
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/Columns/ConfigColumnTemplateOptionsProvider.cs
class ConfigColumnTemplateOptionsProvider (line 7) | public class ConfigColumnTemplateOptionsProvider : IColumnTemplateOption...
method ConfigColumnTemplateOptionsProvider (line 9) | public ConfigColumnTemplateOptionsProvider(
method ResolveColumnTemplateOptions (line 18) | public Task<ColumnTemplateOptions> ResolveColumnTemplateOptions(
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/Columns/IColumnTemplateOptionsProvider.cs
type IColumnTemplateOptionsProvider (line 6) | public interface IColumnTemplateOptionsProvider
method ResolveColumnTemplateOptions (line 8) | Task<ColumnTemplateOptions> ResolveColumnTemplateOptions(
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/Gallery/ConfigGalleryOptionsProvider.cs
class ConfigGalleryOptionsProvider (line 7) | public class ConfigGalleryOptionsProvider : IGalleryOptionsProvider
method ConfigGalleryOptionsProvider (line 9) | public ConfigGalleryOptionsProvider(
method ResolveGalleryOptions (line 18) | public Task<GalleryOptions> ResolveGalleryOptions(
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/Gallery/GalleryOptions.cs
class GalleryOptions (line 3) | public class GalleryOptions
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/Gallery/IGalleryOptionsProvider.cs
type IGalleryOptionsProvider (line 6) | public interface IGalleryOptionsProvider
method ResolveGalleryOptions (line 8) | Task<GalleryOptions> ResolveGalleryOptions(
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/Image/ConfigImageWithContentOptionsProvider.cs
class ConfigImageWithContentOptionsProvider (line 7) | public class ConfigImageWithContentOptionsProvider : IImageWithContentOp...
method ConfigImageWithContentOptionsProvider (line 9) | public ConfigImageWithContentOptionsProvider(
method ResolveImageWithContentOptions (line 18) | public Task<ImageWithContentOptions> ResolveImageWithContentOptions(
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/Image/IImageWithContentOptionsProvider.cs
type IImageWithContentOptionsProvider (line 6) | public interface IImageWithContentOptionsProvider
method ResolveImageWithContentOptions (line 8) | Task<ImageWithContentOptions> ResolveImageWithContentOptions(
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/Image/ImageWithContentOptions.cs
class ImageWithContentOptions (line 3) | public class ImageWithContentOptions
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/LinkList/ConfigLinkListOptionsProvider.cs
class ConfigLinkListOptionsProvider (line 7) | public class ConfigLinkListOptionsProvider : ILinkListOptionsProvider
method ConfigLinkListOptionsProvider (line 9) | public ConfigLinkListOptionsProvider(
method ResolveLinkListOptions (line 18) | public Task<LinkListOptions> ResolveLinkListOptions(
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/LinkList/ILinkListOptionsProvider.cs
type ILinkListOptionsProvider (line 6) | public interface ILinkListOptionsProvider
method ResolveLinkListOptions (line 8) | Task<LinkListOptions> ResolveLinkListOptions(
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Configuration/LinkList/LinkListOptions.cs
class LinkListOptions (line 3) | public class LinkListOptions
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/ContentTemplateResources.cs
class ContentTemplateResources (line 6) | public class ContentTemplateResources
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Controllers/SctrController.cs
class SctrController (line 21) | [ApiExplorerSettings(IgnoreApi = true)]
method SctrController (line 24) | public SctrController(
method GetResult (line 36) | protected virtual IActionResult GetResult(string resourceName, string ...
method Js (line 56) | [HttpGet]
method Css (line 76) | [HttpGet]
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/Services/ContentTemplateProvider.cs
class ContentTemplateProvider (line 14) | public class ContentTemplateProvider : IContentTemplateProvider
method ContentTemplateProvider (line 16) | public ContentTemplateProvider(
method BuildList (line 28) | private void BuildList()
method GetAllTemplates (line 43) | public Task<List<ContentTemplate>> GetAllTemplates()
method BuildGalleryWithContent (line 56) | private ContentTemplate BuildGalleryWithContent()
method BuildSectionsWithImages (line 170) | private ContentTemplate BuildSectionsWithImages()
method BuildTwoSectionsWithImages (line 262) | private ContentTemplate BuildTwoSectionsWithImages()
method BuildImageWithContent (line 353) | private ContentTemplate BuildImageWithContent()
method BuildListOfLinks (line 436) | private ContentTemplate BuildListOfLinks()
method BuildEverythingTemplate (line 535) | private ContentTemplate BuildEverythingTemplate()
method BuildUnauthenticatedContent (line 657) | private ContentTemplate BuildUnauthenticatedContent()
method BuildBingLocationMap (line 697) | private ContentTemplate BuildBingLocationMap()
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/StartupExtensions.cs
class StartupExtensions (line 11) | public static class StartupExtensions
method AddContentTemplatesForSimpleContent (line 13) | public static IServiceCollection AddContentTemplatesForSimpleContent(
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/VersionProvider.cs
class VersionProvider (line 8) | public class VersionProvider : IVersionProvider
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/ViewModels/BingMapViewModel.cs
class BingMapViewModel (line 5) | public class BingMapViewModel
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/ViewModels/EverythingModel.cs
class EverythingModel (line 7) | public class EverythingModel
method EverythingModel (line 9) | public EverythingModel()
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/ViewModels/ImageWithContentViewModel.cs
class ImageWithContentViewModel (line 3) | public class ImageWithContentViewModel
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/ViewModels/ListWithContentModel.cs
class ListWithContentModel (line 5) | public class ListWithContentModel
method ListWithContentModel (line 7) | public ListWithContentModel()
class ListItemModel (line 18) | public class ListItemModel
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/ViewModels/RoleBasedContentViewModel.cs
class RoleBasedContentViewModel (line 3) | public class RoleBasedContentViewModel
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/ViewModels/SectionsWithImageViewModel.cs
class SectionsWithImageViewModel (line 3) | public class SectionsWithImageViewModel
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/ViewModels/SimpleGalleryViewModel.cs
class SimpleGalleryViewModel (line 5) | public class SimpleGalleryViewModel : ListWithContentModel
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/js/cst-basic-list.js
function ListItem (line 10) | function ListItem(title, description, fullSizeUrl, resizedUrl, thumbnail...
function ItemListViewModel (line 33) | function ItemListViewModel(initialData) {
function decodeEncodedJson (line 144) | function decodeEncodedJson(encodedJson) {
FILE: src/cloudscribe.SimpleContent.ContentTemplates.Bootstrap5/js/cst-link-list.js
function validate (line 14) | function validate(newValue) {
function validate (line 27) | function validate(newValue) {
function ListItem (line 61) | function ListItem(title, description, fullSizeUrl, resizedUrl, thumbnail...
function ItemListViewModel (line 96) | function ItemListViewModel(initialData) {
function decodeEncodedJson (line 231) | function decodeEncodedJson(encodedJson) {
FILE: src/cloudscribe.SimpleContent.MetaWeblog/MetaWeblogModelMapper.cs
class MetaWeblogModelMapper (line 15) | public class MetaWeblogModelMapper
method MetaWeblogModelMapper (line 17) | public MetaWeblogModelMapper()
method GetPostFromStruct (line 22) | public Post GetPostFromStruct(PostStruct postStruct)
method GetStructFromPost (line 42) | public PostStruct GetStructFromPost(
method GetStructFromBlog (line 80) | public BlogInfoStruct GetStructFromBlog(IProjectSettings blog, string ...
method GetPageFromStruct (line 93) | public Page GetPageFromStruct(PageStruct pageStruct)
method GetStructFromPage (line 116) | public PageStruct GetStructFromPage(
FILE: src/cloudscribe.SimpleContent.MetaWeblog/MetaWeblogSecurity.cs
class MetaWeblogSecurity (line 15) | public class MetaWeblogSecurity : IMetaWeblogSecurity
method MetaWeblogSecurity (line 17) | public MetaWeblogSecurity(IProjectSecurityResolver blogSecurity)
method ValiatePermissions (line 25) | public async Task<MetaWeblogSecurityResult> ValiatePermissions(MetaWeb...
FILE: src/cloudscribe.SimpleContent.MetaWeblog/MetaWeblogService.cs
class MetaWeblogService (line 22) | public class MetaWeblogService : IMetaWeblogService
method MetaWeblogService (line 25) | public MetaWeblogService(
method NewPost (line 67) | public async Task<string> NewPost(
method EditPost (line 146) | public async Task<bool> EditPost(
method GetPost (line 260) | public async Task<PostStruct> GetPost(
method GetCategories (line 300) | public async Task<List<CategoryStruct>> GetCategories(
method GetRecentPosts (line 332) | public async Task<List<PostStruct>> GetRecentPosts(
method NewMediaObject (line 374) | public async Task<MediaInfoStruct> NewMediaObject(
method DeletePost (line 418) | public async Task<bool> DeletePost(
method GetUserBlogs (line 454) | public async Task<List<BlogInfoStruct>> GetUserBlogs(
method NewCategory (line 489) | public Task<string> NewCategory(
method GetPages (line 501) | public async Task<List<PageStruct>> GetPages(
method GetPageList (line 536) | public async Task<List<PageStruct>> GetPageList(
method GetPage (line 572) | public async Task<PageStruct> GetPage(
method NewPage (line 605) | public async Task<string> NewPage(
method EditPage (line 702) | public async Task<bool> EditPage(
method DeletePage (line 815) | public Task<bool> DeletePage(
FILE: src/cloudscribe.SimpleContent.MetaWeblog/ServiceCollectionExtensions.cs
class ServiceCollectionExtensions (line 9) | public static class ServiceCollectionExtensions
method AddMetaWeblogForSimpleContent (line 11) | public static IServiceCollection AddMetaWeblogForSimpleContent(
FILE: src/cloudscribe.SimpleContent.MetaWeblog/VersionProvider.cs
class VersionProvider (line 7) | public class VersionProvider : IVersionProvider
FILE: src/cloudscribe.SimpleContent.Models/Blog/BlogEditOptions.cs
class BlogEditOptions (line 3) | public class BlogEditOptions
FILE: src/cloudscribe.SimpleContent.Models/Blog/DefaultBlogRoutes.cs
class DefaultBlogRoutes (line 5) | public class DefaultBlogRoutes : IBlogRoutes
FILE: src/cloudscribe.SimpleContent.Models/Blog/IBlogRoutes.cs
type IBlogRoutes (line 4) | public interface IBlogRoutes
FILE: src/cloudscribe.SimpleContent.Models/Blog/IBlogService.cs
type IBlogService (line 7) | public interface IBlogService
method CommentsAreOpen (line 10) | Task<bool> CommentsAreOpen(IPost post, bool userIsOwner);
method CreateSlug (line 11) | string CreateSlug(string title);
method SlugIsAvailable (line 12) | Task<bool> SlugIsAvailable(string slug);
method GetCount (line 15) | Task<int> GetCount(string category, bool includeUnpublished, Cancellat...
method GetCount (line 16) | Task<int> GetCount(
method GetPost (line 24) | Task<IPost> GetPost(string postId, CancellationToken cancellationToken...
method GetPostBySlug (line 26) | Task<PostResult> GetPostBySlug(string slug, CancellationToken cancella...
method GetRecentPosts (line 27) | Task<List<IPost>> GetRecentPosts(int numberToGet, CancellationToken ca...
method GetFeaturedPosts (line 28) | Task<List<IPost>> GetFeaturedPosts(int numberToGet, CancellationToken ...
method GetPosts (line 30) | Task<List<IPost>> GetPosts(bool includeUnpublished, CancellationToken ...
method GetPosts (line 31) | Task<PagedPostResult> GetPosts(string category, int pageNumber, bool i...
method GetPosts (line 35) | Task<PagedPostResult> GetPosts(
method GetCategories (line 46) | Task<Dictionary<string, int>> GetCategories(bool includeUnpublished, C...
method GetArchives (line 48) | Task<Dictionary<string, int>> GetArchives(bool includeUnpublished, Can...
method SlugIsAvailable (line 50) | Task<bool> SlugIsAvailable(string projectId, string slug);
method Delete (line 52) | Task Delete(string postId);
method Create (line 54) | Task Create(IPost post);
method Update (line 56) | Task Update(IPost post);
method FirePublishEvent (line 63) | Task FirePublishEvent(IPost post);
method FireUnPublishEvent (line 64) | Task FireUnPublishEvent(IPost post);
method PublishReadyDrafts (line 66) | Task PublishReadyDrafts(CancellationToken cancellationToken = default(...
FILE: src/cloudscribe.SimpleContent.Models/Blog/IBlogUrlResolver.cs
type IBlogUrlResolver (line 5) | public interface IBlogUrlResolver
method ResolveBlogUrl (line 7) | Task<string> ResolveBlogUrl(IProjectSettings project);
method ResolvePostUrl (line 8) | Task<string> ResolvePostUrl(IPost post, IProjectSettings projectSettin...
method ConvertMediaToRelativeUrls (line 9) | Task ConvertMediaToRelativeUrls(IPost post);
method ConvertMediaToAbsoluteUrls (line 10) | Task ConvertMediaToAbsoluteUrls(IPost post, IProjectSettings projectSe...
FILE: src/cloudscribe.SimpleContent.Models/Blog/IPost.cs
type IPost (line 12) | public interface IPost : IContentItem
FILE: src/cloudscribe.SimpleContent.Models/Blog/IPostCommands.cs
type IPostCommandsSingleton (line 7) | public interface IPostCommandsSingleton : IPostCommands
type IPostCommands (line 12) | public interface IPostCommands
method Delete (line 14) | Task Delete(
method Create (line 19) | Task Create(
method Update (line 24) | Task Update(
method CloneToNewProject (line 35) | Task<string> CloneToNewProject(
FILE: src/cloudscribe.SimpleContent.Models/Blog/IPostQueries.cs
type IPostQueriesSingleton (line 15) | public interface IPostQueriesSingleton : IPostQueries
type IPostQueries (line 21) | public interface IPostQueries
method GetCategories (line 23) | Task<Dictionary<string, int>> GetCategories(
method GetArchives (line 29) | Task<Dictionary<string, int>> GetArchives(
method GetPost (line 35) | Task<IPost> GetPost(
method GetPostBySlug (line 41) | Task<PostResult> GetPostBySlug(
method GetPostByCorrelationKey (line 47) | Task<IPost> GetPostByCorrelationKey(
method SlugIsAvailable (line 53) | Task<bool> SlugIsAvailable(
method GetRecentPosts (line 59) | Task<List<IPost>> GetRecentPosts(
method GetFeaturedPosts (line 65) | Task<List<IPost>> GetFeaturedPosts(
method GetPosts (line 71) | Task<List<IPost>> GetPosts(
method GetPosts (line 77) | Task<PagedPostResult> GetPosts(
method GetPosts (line 86) | Task<PagedPostResult> GetPosts(
method GetCount (line 97) | Task<int> GetCount(
method GetCount (line 104) | Task<int> GetCount(
method GetPostsReadyForPublish (line 113) | Task<List<IPost>> GetPostsReadyForPublish(
method GetRelatedPosts (line 118) | Task<List<IPost>> GetRelatedPosts(
FILE: src/cloudscribe.SimpleContent.Models/Blog/ITeaserService.cs
type ITeaserService (line 6) | public interface ITeaserService
method GenerateTeaser (line 18) | TeaserResult GenerateTeaser(
FILE: src/cloudscribe.SimpleContent.Models/Blog/NotImplementedBlogService.cs
class NotImplementedBlogService (line 9) | public class NotImplementedBlogService : IBlogService
method CommentsAreOpen (line 11) | public Task<bool> CommentsAreOpen(IPost post, bool userIsOwner)
method CreateSlug (line 16) | public string CreateSlug(string title)
method Delete (line 21) | public Task Delete(string postId)
method GetArchives (line 26) | public Task<Dictionary<string, int>> GetArchives(bool includeUnpublish...
method GetCategories (line 31) | public Task<Dictionary<string, int>> GetCategories(bool includeUnpubli...
method GetCount (line 36) | public Task<int> GetCount(string category, bool includeUnpublished, Ca...
method GetCount (line 41) | public Task<int> GetCount(string projectId, int year, int month = 0, i...
method GetPost (line 46) | public Task<IPost> GetPost(string postId, CancellationToken cancellati...
method GetPostBySlug (line 51) | public Task<PostResult> GetPostBySlug(string slug, CancellationToken c...
method GetPosts (line 56) | public Task<List<IPost>> GetPosts(string blogId, int numberToGet, int ...
method GetPosts (line 61) | public Task<PagedPostResult> GetPosts(
method GetRecentPosts (line 75) | public Task<List<IPost>> GetRecentPosts(int numberToGet, CancellationT...
method GetFeaturedPosts (line 80) | public Task<List<IPost>> GetFeaturedPosts(int numberToGet, Cancellatio...
method GetPosts (line 85) | public Task<List<IPost>> GetPosts(bool includeUnpublished, Cancellatio...
method GetPosts (line 90) | public Task<PagedPostResult> GetPosts(string category, int pageNumber,...
method Create (line 96) | public Task Create(IPost post)
method Update (line 101) | public Task Update(IPost post)
method SlugIsAvailable (line 111) | public Task<bool> SlugIsAvailable(string slug)
method SlugIsAvailable (line 116) | public Task<bool> SlugIsAvailable(string blogId, string slug)
method FirePublishEvent (line 121) | public Task FirePublishEvent(IPost post)
method FireUnPublishEvent (line 126) | public Task FireUnPublishEvent(IPost post)
method PublishReadyDrafts (line 131) | public Task PublishReadyDrafts(CancellationToken cancellationToken = d...
FILE: src/cloudscribe.SimpleContent.Models/Blog/PagedPostResult.cs
class PagedPostResult (line 5) | public class PagedPostResult
method PagedPostResult (line 7) | public PagedPostResult()
FILE: src/cloudscribe.SimpleContent.Models/Blog/Post.cs
class Post (line 12) | public class Post : IPost
method Post (line 14) | public Post()
method FromIPost (line 93) | public static Post FromIPost(IPost post)
FILE: src/cloudscribe.SimpleContent.Models/Blog/PostResult.cs
class PostResult (line 3) | public class PostResult
FILE: src/cloudscribe.SimpleContent.Models/Blog/TeaserCacheOptions.cs
class TeaserCacheOptions (line 3) | public class TeaserCacheOptions
FILE: src/cloudscribe.SimpleContent.Models/Blog/TeaserMode.cs
type TeaserMode (line 15) | public enum TeaserMode : byte
FILE: src/cloudscribe.SimpleContent.Models/Blog/TeaserResult.cs
class TeaserResult (line 7) | public class TeaserResult
FILE: src/cloudscribe.SimpleContent.Models/Blog/TeaserTruncationMode.cs
type TeaserTruncationMode (line 13) | public enum TeaserTruncationMode : byte
FILE: src/cloudscribe.SimpleContent.Models/CommandResult.cs
class CommandResult (line 5) | public class CommandResult<T> where T : class
method CommandResult (line 7) | public CommandResult(T resultType, bool succeeded, List<string> errors)
FILE: src/cloudscribe.SimpleContent.Models/Comment/Comment.cs
class Comment (line 5) | public class Comment : IComment
method FromIComment (line 24) | public static Comment FromIComment(IComment comment)
FILE: src/cloudscribe.SimpleContent.Models/Comment/CommentNotificationModel.cs
class CommentNotificationModel (line 3) | public class CommentNotificationModel
method CommentNotificationModel (line 5) | public CommentNotificationModel(
FILE: src/cloudscribe.SimpleContent.Models/Comment/IComment.cs
type IComment (line 5) | public interface IComment
FILE: src/cloudscribe.SimpleContent.Models/ContentFilterResult.cs
class ContentFilterResult (line 3) | public class ContentFilterResult
FILE: src/cloudscribe.SimpleContent.Models/ContentLocalizationOptions.cs
class ContentLocalizationOptions (line 7) | public class ContentLocalizationOptions
FILE: src/cloudscribe.SimpleContent.Models/ContentUtils.cs
class ContentUtils (line 7) | public static class ContentUtils
method CreateSlug (line 9) | public static string CreateSlug(string title)
method RemoveDiacritics (line 27) | public static string RemoveDiacritics(string text)
method RemoveReservedUrlCharacters (line 48) | public static string RemoveReservedUrlCharacters(string text)
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePageCreated.cs
type IHandlePageCreated (line 6) | public interface IHandlePageCreated
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePageMoved.cs
type IHandlePageMoved (line 6) | public interface IHandlePageMoved
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePagePreDelete.cs
type IHandlePagePreDelete (line 6) | public interface IHandlePagePreDelete
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePagePreUpdate.cs
type IHandlePagePreUpdate (line 6) | public interface IHandlePagePreUpdate
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePagePublished.cs
type IHandlePagePublished (line 6) | public interface IHandlePagePublished
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePageUnPublished.cs
type IHandlePageUnPublished (line 6) | public interface IHandlePageUnPublished
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePageUpdated.cs
type IHandlePageUpdated (line 6) | public interface IHandlePageUpdated
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePostCreated.cs
type IHandlePostCreated (line 6) | public interface IHandlePostCreated
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePostPreDelete.cs
type IHandlePostPreDelete (line 6) | public interface IHandlePostPreDelete
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePostPreUpdate.cs
type IHandlePostPreUpdate (line 6) | public interface IHandlePostPreUpdate
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePostPublished.cs
type IHandlePostPublished (line 6) | public interface IHandlePostPublished
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePostUnPublished.cs
type IHandlePostUnPublished (line 6) | public interface IHandlePostUnPublished
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/EventHandlers/IHandlePostUpdated.cs
type IHandlePostUpdated (line 6) | public interface IHandlePostUpdated
method Handle (line 8) | Task Handle(
FILE: src/cloudscribe.SimpleContent.Models/IAuthorNameResolver.cs
type IAuthorNameResolver (line 7) | public interface IAuthorNameResolver
method GetAuthorName (line 9) | Task<string> GetAuthorName(ClaimsPrincipal user, CancellationToken can...
FILE: src/cloudscribe.SimpleContent.Models/IContentItem.cs
type IContentItem (line 5) | public interface IContentItem
FILE: src/cloudscribe.SimpleContent.Models/IMarkdownProcessor.cs
type IMarkdownProcessor (line 3) | public interface IMarkdownProcessor
method ExtractFirstImageUrl (line 5) | string ExtractFirstImageUrl(string markdown);
FILE: src/cloudscribe.SimpleContent.Models/IMediaProcessor.cs
type IMediaProcessor (line 13) | public interface IMediaProcessor
method ResolveMediaUrl (line 15) | Task<string> ResolveMediaUrl(string mediaVirtualPath, string fileName);
method SaveMedia (line 19) | Task SaveMedia(string mediaVirtualPath, string fileName, byte[] bytes);
FILE: src/cloudscribe.SimpleContent.Models/IStorageInfo.cs
type IStorageInfo (line 3) | public interface IStorageInfo
FILE: src/cloudscribe.SimpleContent.Models/ImageSizeResult.cs
class ImageSizeResult (line 3) | public class ImageSizeResult
FILE: src/cloudscribe.SimpleContent.Models/ModelExtensions.cs
class ModelExtensions (line 12) | public static class ModelExtensions
method ApprovedCommentCount (line 14) | public static int ApprovedCommentCount(this IPost post)
method CommentCount (line 20) | public static int CommentCount(this IPost post)
method CoalesceContentToDraftContent (line 26) | public static string CoalesceContentToDraftContent(this IPost post)
method HasPublishedVersion (line 36) | public static bool HasPublishedVersion(this IPost post)
method HasDraftVersion (line 46) | public static bool HasDraftVersion(this IPost post)
method PromoteDraftTemporarilyForRender (line 51) | public static void PromoteDraftTemporarilyForRender(this IPost post)
method CreateHistory (line 59) | public static ContentHistory CreateHistory(this IPost post, string cur...
method CreateHistory (line 100) | public static ContentHistory CreateHistory(this IPage page, string cur...
method ApprovedCommentCount (line 144) | public static int ApprovedCommentCount(this IPage page)
method HasPublishedVersion (line 150) | public static bool HasPublishedVersion(this IPage page)
method HasDraftVersion (line 162) | public static bool HasDraftVersion(this IPage page)
method PromoteDraftTemporarilyForRender (line 167) | public static void PromoteDraftTemporarilyForRender(this IPage page)
method CopyTo (line 175) | public static void CopyTo(this IPost input, IPost target)
method CopyTo (line 219) | public static void CopyTo(this ContentHistory input, IPost target)
method CopyTo (line 262) | public static void CopyTo(this IPage input, IPage target)
method CopyTo (line 322) | public static void CopyTo(this ContentHistory input, IPage target)
method CopyTo (line 374) | public static void CopyTo(this IProjectSettings input, IProjectSetting...
FILE: src/cloudscribe.SimpleContent.Models/Page/DefaultPageRoutes.cs
class DefaultPageRoutes (line 3) | public class DefaultPageRoutes : IPageRoutes
FILE: src/cloudscribe.SimpleContent.Models/Page/IPage.cs
type IPage (line 6) | public interface IPage : IContentItem
FILE: src/cloudscribe.SimpleContent.Models/Page/IPageCommands.cs
type IPageCommandsSingleton (line 13) | public interface IPageCommandsSingleton : IPageCommands
type IPageCommands (line 18) | public interface IPageCommands
method Create (line 20) | Task Create(
method Update (line 26) | Task Update(
method Delete (line 32) | Task Delete(
method CloneToNewProject (line 47) | Task<string> CloneToNewProject(
FILE: src/cloudscribe.SimpleContent.Models/Page/IPageQueries.cs
type IPageQueriesSingleton (line 14) | public interface IPageQueriesSingleton : IPageQueries
type IPageQueries (line 19) | public interface IPageQueries
method SlugIsAvailable (line 21) | Task<bool> SlugIsAvailable(
method GetPage (line 27) | Task<IPage> GetPage(
method GetPageBySlug (line 33) | Task<IPage> GetPageBySlug(
method GetPageByCorrelationKey (line 39) | Task<IPage> GetPageByCorrelationKey(
method GetAllPages (line 45) | Task<List<IPage>> GetAllPages(
method GetPagesReadyForPublish (line 50) | Task<List<IPage>> GetPagesReadyForPublish(
method GetRootPages (line 55) | Task<List<IPage>> GetRootPages(
method GetChildPages (line 60) | Task<List<IPage>> GetChildPages(
method GetChildPageCount (line 66) | Task<int> GetChildPageCount(
method GetCount (line 73) | Task<int> GetCount(
FILE: src/cloudscribe.SimpleContent.Models/Page/IPageRoutes.cs
type IPageRoutes (line 3) | public interface IPageRoutes
FILE: src/cloudscribe.SimpleContent.Models/Page/IPageService.cs
type IPageService (line 10) | public interface IPageService
method DeletePage (line 12) | Task DeletePage(string pageId);
method GetAllPages (line 13) | Task<List<IPage>> GetAllPages(string projectId, CancellationToken canc...
method GetRootPages (line 14) | Task<List<IPage>> GetRootPages(CancellationToken cancellationToken = d...
method GetChildPages (line 15) | Task<List<IPage>> GetChildPages(string pageId, CancellationToken cance...
method GetPage (line 16) | Task<IPage> GetPage(string pageId, CancellationToken cancellationToken...
method GetPageBySlug (line 17) | Task<IPage> GetPageBySlug(string slug, CancellationToken cancellationT...
method SlugIsAvailable (line 18) | Task<bool> SlugIsAvailable(string slug);
method Create (line 20) | Task Create(IPage page);
method Update (line 22) | Task Update(IPage page);
method GetPageTreeJson (line 24) | Task<string> GetPageTreeJson(ClaimsPrincipal user, Func<IPage, string>...
method Move (line 26) | Task<PageActionResult> Move(PageMoveModel model);
method SortChildPagesAlpha (line 28) | Task<PageActionResult> SortChildPagesAlpha(string pageId);
method GetNextChildPageOrder (line 30) | Task<int> GetNextChildPageOrder(string pageSlug, CancellationToken can...
method FirePublishEvent (line 32) | Task FirePublishEvent(IPage page);
method FireUnPublishEvent (line 33) | Task FireUnPublishEvent(IPage page);
FILE: src/cloudscribe.SimpleContent.Models/Page/IPageUrlResolver.cs
type IPageUrlResolver (line 5) | public interface IPageUrlResolver
method ResolvePageUrl (line 7) | Task<string> ResolvePageUrl(IPage page);
method ConvertMediaToRelativeUrls (line 8) | Task ConvertMediaToRelativeUrls(IPage page);
method ConvertMediaToAbsoluteUrls (line 9) | Task ConvertMediaToAbsoluteUrls(IPage page, IProjectSettings projectSe...
FILE: src/cloudscribe.SimpleContent.Models/Page/NotImplementedPageService.cs
class NotImplementedPageService (line 9) | public class NotImplementedPageService : IPageService
method DeletePage (line 11) | public Task DeletePage(string pageId)
method GetAllPages (line 16) | public Task<List<IPage>> GetAllPages(string projectId, CancellationTok...
method GetChildPages (line 21) | public Task<List<IPage>> GetChildPages(string pageId, CancellationToke...
method GetPage (line 26) | public Task<IPage> GetPage(string pageId, CancellationToken cancellati...
method GetPageBySlug (line 31) | public Task<IPage> GetPageBySlug(string slug, CancellationToken cancel...
method GetRootPages (line 36) | public Task<List<IPage>> GetRootPages(CancellationToken cancellationTo...
method Create (line 42) | public Task Create(IPage page)
method Update (line 47) | public Task Update(IPage page)
method SlugIsAvailable (line 52) | public Task<bool> SlugIsAvailable(string slug)
method GetPageTreeJson (line 57) | public Task<string> GetPageTreeJson(ClaimsPrincipal user, Func<IPage, ...
method Move (line 62) | public Task<PageActionResult> Move(PageMoveModel model)
method SortChildPagesAlpha (line 67) | public Task<PageActionResult> SortChildPagesAlpha(string pageId)
method GetNextChildPageOrder (line 72) | public Task<int> GetNextChildPageOrder(string pageId, CancellationToke...
method FirePublishEvent (line 77) | public Task FirePublishEvent(IPage page)
method FireUnPublishEvent (line 82) | public Task FireUnPublishEvent(IPage page)
FILE: src/cloudscribe.SimpleContent.Models/Page/Page.cs
class Page (line 6) | public class Page : IPage
method Page (line 8) | public Page()
method FromIPage (line 93) | public static Page FromIPage(IPage page)
FILE: src/cloudscribe.SimpleContent.Models/Page/PageActionResult.cs
class PageActionResult (line 3) | public class PageActionResult
method PageActionResult (line 5) | public PageActionResult(bool success, string message)
FILE: src/cloudscribe.SimpleContent.Models/Page/PageEditOptions.cs
class PageEditOptions (line 3) | public class PageEditOptions
FILE: src/cloudscribe.SimpleContent.Models/Page/PageMoveModel.cs
class PageMoveModel (line 9) | public class PageMoveModel
FILE: src/cloudscribe.SimpleContent.Models/Page/PageResource.cs
type IPageResource (line 5) | public interface IPageResource
class PageResource (line 24) | public class PageResource : IPageResource
method PageResource (line 26) | public PageResource()
method FromIPageResource (line 38) | public static PageResource FromIPageResource(IPageResource r)
FILE: src/cloudscribe.SimpleContent.Models/Project/IProjectCommands.cs
type IProjectCommandsSingleton (line 13) | public interface IProjectCommandsSingleton : IProjectCommands
type IProjectCommands (line 18) | public interface IProjectCommands
method Create (line 20) | Task Create(
method Update (line 26) | Task Update(
method Delete (line 32) | Task Delete(
method CloneToNewProject (line 38) | Task<string> CloneToNewProject(
FILE: src/cloudscribe.SimpleContent.Models/Project/IProjectEmailService.cs
type IProjectEmailService (line 6) | public interface IProjectEmailService
method SendCommentNotificationEmailAsync (line 8) | Task SendCommentNotificationEmailAsync(
FILE: src/cloudscribe.SimpleContent.Models/Project/IProjectQueries.cs
type IProjectQueriesSingleton (line 14) | public interface IProjectQueriesSingleton : IProjectQueries
type IProjectQueries (line 29) | public interface IProjectQueries
method GetProjectSettings (line 31) | Task<IProjectSettings> GetProjectSettings(
FILE: src/cloudscribe.SimpleContent.Models/Project/IProjectSecurityResolver.cs
type IProjectSecurityResolver (line 13) | public interface IProjectSecurityResolver
method ValidatePermissions (line 15) | Task<ProjectSecurityResult> ValidatePermissions(
FILE: src/cloudscribe.SimpleContent.Models/Project/IProjectService.cs
type IProjectService (line 5) | public interface IProjectService
method Create (line 7) | Task Create(IProjectSettings project);
method Update (line 8) | Task Update(IProjectSettings project);
method GetCurrentProjectSettings (line 9) | Task<IProjectSettings> GetCurrentProjectSettings();
method GetProjectSettings (line 10) | Task<IProjectSettings> GetProjectSettings(string projectId);
FILE: src/cloudscribe.SimpleContent.Models/Project/IProjectSettings.cs
type IProjectSettings (line 9) | public interface IProjectSettings
FILE: src/cloudscribe.SimpleContent.Models/Project/IProjectSettingsResolver.cs
type IProjectSettingsResolver (line 10) | public interface IProjectSettingsResolver
method GetCurrentProjectSettings (line 13) | Task<IProjectSettings> GetCurrentProjectSettings(CancellationToken can...
FILE: src/cloudscribe.SimpleContent.Models/Project/ProjectSecurityResult.cs
class ProjectSecurityResult (line 11) | public class ProjectSecurityResult
method ProjectSecurityResult (line 13) | public ProjectSecurityResult(
FILE: src/cloudscribe.SimpleContent.Models/Project/ProjectSettings.cs
class ProjectSettings (line 10) | public class ProjectSettings : IProjectSettings
method ProjectSettings (line 12) | public ProjectSettings()
method FromIProjectSettings (line 129) | public static ProjectSettings FromIProjectSettings(IProjectSettings pr...
FILE: src/cloudscribe.SimpleContent.Models/ProjectConstants.cs
class ContentSource (line 3) | public sealed class ContentSource
class EnvironmentTarget (line 9) | public sealed class EnvironmentTarget
class ProjectConstants (line 17) | public static class ProjectConstants
FILE: src/cloudscribe.SimpleContent.Models/Templating/ContentTemplate.cs
class ContentTemplate (line 11) | public class ContentTemplate
method ContentTemplate (line 13) | public ContentTemplate()
FILE: src/cloudscribe.SimpleContent.Models/Templating/ContentTemplateConfig.cs
class ContentTemplateConfig (line 5) | public class ContentTemplateConfig
method ContentTemplateConfig (line 7) | public ContentTemplateConfig()
FILE: src/cloudscribe.SimpleContent.Models/Templating/CssFile.cs
class CssFile (line 3) | public class CssFile
FILE: src/cloudscribe.SimpleContent.Models/Templating/IContentTemplateProvider.cs
type IContentTemplateProvider (line 6) | public interface IContentTemplateProvider
method GetAllTemplates (line 8) | Task<List<ContentTemplate>> GetAllTemplates();
FILE: src/cloudscribe.SimpleContent.Models/Templating/IContentTemplateService.cs
type IContentTemplateService (line 7) | public interface IContentTemplateService
method DesrializeTemplateModel (line 9) | object DesrializeTemplateModel(IPage page, ContentTemplate template, b...
method DesrializeTemplateModel (line 10) | object DesrializeTemplateModel(IPost post, ContentTemplate template);
method GetCountOfTemplates (line 11) | Task<int> GetCountOfTemplates(string projectId, string forFeature);
method GetTemplate (line 12) | Task<ContentTemplate> GetTemplate(string projectId, string key, Cancel...
method GetTemplates (line 13) | Task<PagedResult<ContentTemplate>> GetTemplates(string projectId, stri...
FILE: src/cloudscribe.SimpleContent.Models/Templating/IModelSerializer.cs
type IModelSerializer (line 7) | public interface IModelSerializer
method Serialize (line 9) | string Serialize(string typeName, object obj);
method Deserialize (line 10) | object Deserialize(string typeName, string serializedObject);
FILE: src/cloudscribe.SimpleContent.Models/Templating/ScriptFile.cs
class ScriptFile (line 3) | public class ScriptFile
FILE: src/cloudscribe.SimpleContent.Models/Versioning/ContentHistory.cs
class ContentHistory (line 10) | public class ContentHistory
method ContentHistory (line 12) | public ContentHistory()
FILE: src/cloudscribe.SimpleContent.Models/Versioning/IContentHistoryCommands.cs
type IContentHistoryCommandsSingleton (line 7) | public interface IContentHistoryCommandsSingleton : IContentHistoryCommands
type IContentHistoryCommands (line 12) | public interface IContentHistoryCommands
method Create (line 14) | Task Create(
method Delete (line 20) | Task Delete(
method DeleteByContent (line 26) | Task DeleteByContent(
method DeleteByContent (line 32) | Task DeleteByContent(
method DeleteByProject (line 39) | Task DeleteByProject(
method DeleteOlderThan (line 44) | Task DeleteOlderThan(
method DeleteDraftHistory (line 58) | Task DeleteDraftHistory(
FILE: src/cloudscribe.SimpleContent.Models/Versioning/IContentHistoryQueries.cs
type IContentHistoryQueriesSingleton (line 9) | public interface IContentHistoryQueriesSingleton : IContentHistoryQueries
type IContentHistoryQueries (line 14) | public interface IContentHistoryQueries
method Fetch (line 16) | Task<ContentHistory> Fetch(
method GetByContent (line 22) | Task<PagedResult<ContentHistory>> GetByContent(
method GetList (line 41) | Task<PagedResult<ContentHistory>> GetList(
FILE: src/cloudscribe.SimpleContent.Models/Versioning/SaveMode.cs
class SaveMode (line 3) | public static class SaveMode
FILE: src/cloudscribe.SimpleContent.Security.SimpleAuth/ProjectSecurityResolver.cs
class ProjectSecurityResolver (line 17) | public class ProjectSecurityResolver : IProjectSecurityResolver
method ProjectSecurityResolver (line 19) | public ProjectSecurityResolver(
method ValidatePermissions (line 31) | public async Task<ProjectSecurityResult> ValidatePermissions(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/ContentHistoryCommands.cs
class ContentHistoryCommands (line 16) | public class ContentHistoryCommands : IContentHistoryCommands, IContentH...
method ContentHistoryCommands (line 18) | public ContentHistoryCommands(ISimpleContentDbContextFactory contextFa...
method Create (line 25) | public async Task Create(
method Delete (line 38) | public async Task Delete(
method DeleteByContent (line 53) | public async Task DeleteByContent(
method DeleteByContent (line 67) | public async Task DeleteByContent(
method DeleteByProject (line 82) | public async Task DeleteByProject(
method DeleteOlderThan (line 95) | public async Task DeleteOlderThan(
method DeleteDraftHistory (line 109) | public async Task DeleteDraftHistory(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/ContentHistoryQueries.cs
class ContentHistoryQueries (line 11) | public class ContentHistoryQueries : IContentHistoryQueries, IContentHis...
method ContentHistoryQueries (line 13) | public ContentHistoryQueries(ISimpleContentDbContextFactory contextFac...
method Fetch (line 20) | public async Task<ContentHistory> Fetch(
method GetByContent (line 34) | public async Task<PagedResult<ContentHistory>> GetByContent(
method GetList (line 76) | public async Task<PagedResult<ContentHistory>> GetList(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/ISimpleContentDbContext.cs
type ISimpleContentDbContext (line 12) | public interface ISimpleContentDbContext : IDisposable
method SaveChangesAsync (line 36) | Task<int> SaveChangesAsync(CancellationToken cancellationToken = defau...
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/ISimpleContentDbContextFactory.cs
type ISimpleContentDbContextFactory (line 3) | public interface ISimpleContentDbContextFactory
method CreateContext (line 5) | ISimpleContentDbContext CreateContext();
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/Models/PageCategory.cs
class PageCategory (line 3) | public class PageCategory
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/Models/PageComment.cs
class PageComment (line 13) | public class PageComment : IComment
method PageComment (line 15) | public PageComment()
method FromIComment (line 46) | public static PageComment FromIComment(IComment comment)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/Models/PageEntity.cs
class PageEntity (line 15) | public class PageEntity : IPage
method PageEntity (line 17) | public PageEntity()
method FromIPage (line 195) | public static PageEntity FromIPage(IPage page)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/Models/PageResourceEntity.cs
class PageResourceEntity (line 6) | public class PageResourceEntity : IPageResource
method PageResourceEntity (line 8) | public PageResourceEntity()
method FromIPageResource (line 32) | public static PageResourceEntity FromIPageResource(IPageResource r)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/Models/PostCategory.cs
class PostCategory (line 8) | public class PostCategory
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/Models/PostComment.cs
class PostComment (line 13) | public class PostComment : IComment
method PostComment (line 15) | public PostComment()
method FromIComment (line 46) | public static PostComment FromIComment(IComment comment)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/Models/PostEntity.cs
class PostEntity (line 16) | public class PostEntity : IPost
method PostEntity (line 18) | public PostEntity()
method FromIPost (line 133) | public static PostEntity FromIPost(IPost post)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/PageCommands.cs
class PageCommands (line 20) | public class PageCommands : IPageCommands, IPageCommandsSingleton
method PageCommands (line 22) | public PageCommands(ISimpleContentDbContextFactory contextFactory)
method Create (line 29) | public async Task Create(
method Update (line 54) | public async Task Update(
method Delete (line 93) | public async Task Delete(
method CloneToNewProject (line 119) | public async Task<string> CloneToNewProject(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/PageQueries.cs
class PageQueries (line 19) | public class PageQueries : IPageQueries, IPageQueriesSingleton
method PageQueries (line 21) | public PageQueries(ISimpleContentDbContextFactory contextFactory)
method GetAllPages (line 28) | public async Task<List<IPage>> GetAllPages(
method GetPagesReadyForPublish (line 51) | public async Task<List<IPage>> GetPagesReadyForPublish(
method GetPage (line 77) | public async Task<IPage> GetPage(
method GetRootPages (line 97) | public async Task<List<IPage>> GetRootPages(
method GetChildPages (line 122) | public async Task<List<IPage>> GetChildPages(
method GetPageBySlug (line 146) | public async Task<IPage> GetPageBySlug(
method GetPageByCorrelationKey (line 167) | public async Task<IPage> GetPageByCorrelationKey(
method SlugIsAvailable (line 188) | public async Task<bool> SlugIsAvailable(
method GetChildPageCount (line 208) | public async Task<int> GetChildPageCount(
method GetCount (line 233) | public async Task<int> GetCount(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/PostCommands.cs
class PostCommands (line 19) | public class PostCommands : IPostCommands, IPostCommandsSingleton
method PostCommands (line 21) | public PostCommands(ISimpleContentDbContextFactory contextFactory)
method Create (line 28) | public async Task Create(
method Update (line 69) | public async Task Update(
method DeleteCategoriesByPost (line 154) | private async Task DeleteCategoriesByPost(
method DeleteCommentsByPost (line 180) | private async Task DeleteCommentsByPost(
method Delete (line 204) | public async Task Delete(
method CloneToNewProject (line 228) | public async Task<string> CloneToNewProject(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/PostQueries.cs
class PostQueries (line 21) | public class PostQueries : IPostQueries, IPostQueriesSingleton
method PostQueries (line 23) | public PostQueries(ISimpleContentDbContextFactory contextFactory)
method GetPostsReadyForPublish (line 33) | public async Task<List<IPost>> GetPostsReadyForPublish(
method GetPosts (line 66) | public async Task<List<IPost>> GetPosts(
method GetRelatedPosts (line 94) | public async Task<List<IPost>> GetRelatedPosts(
method GetPosts (line 138) | public async Task<PagedPostResult> GetPosts(
method GetCount (line 184) | public async Task<int> GetCount(
method GetRecentPosts (line 218) | public async Task<List<IPost>> GetRecentPosts(
method GetFeaturedPosts (line 247) | public async Task<List<IPost>> GetFeaturedPosts(
method GetPosts (line 277) | public async Task<PagedPostResult> GetPosts(
method GetCount (line 354) | public async Task<int> GetCount(
method GetPost (line 410) | public async Task<IPost> GetPost(
method GetPostBySlug (line 431) | public async Task<PostResult> GetPostBySlug(
method GetPostByCorrelationKey (line 487) | public async Task<IPost> GetPostByCorrelationKey(
method SlugIsAvailable (line 509) | public async Task<bool> SlugIsAvailable(
method GetCategories (line 530) | public async Task<Dictionary<string, int>> GetCategories(
method GetArchives (line 596) | public async Task<Dictionary<string, int>> GetArchives(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/ProjectCommands.cs
class ProjectCommands (line 18) | public class ProjectCommands : IProjectCommands, IProjectCommandsSingleton
method ProjectCommands (line 20) | public ProjectCommands(ISimpleContentDbContextFactory contextFactory)
method Create (line 27) | public async Task Create(
method Update (line 50) | public async Task Update(
method Delete (line 76) | public async Task Delete(
method CloneToNewProject (line 98) | public async Task<string> CloneToNewProject(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/ProjectQueries.cs
class ProjectQueries (line 17) | public class ProjectQueries : IProjectQueries, IProjectQueriesSingleton
method ProjectQueries (line 19) | public ProjectQueries(ISimpleContentDbContextFactory contextFactory)
method GetProjectSettings (line 26) | public async Task<IProjectSettings> GetProjectSettings(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/ServiceCollectionExtensions.cs
class ServiceCollectionExtensions (line 14) | public static class ServiceCollectionExtensions
method AddCloudscribeSimpleContentEFStorageCommon (line 16) | public static IServiceCollection AddCloudscribeSimpleContentEFStorageC...
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/SimpleContentDbContextBase.cs
class SimpleContentDbContextBase (line 14) | public class SimpleContentDbContextBase : DbContext
method SimpleContentDbContextBase (line 16) | public SimpleContentDbContextBase(DbContextOptions options):base(options)
method SimpleContentDbContextBase (line 21) | protected SimpleContentDbContextBase() { }
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.Common/SimpleContentEFStartup.cs
class SimpleContentEFStartup (line 8) | public static class SimpleContentEFStartup
method InitializeDatabaseAsync (line 10) | public static async Task InitializeDatabaseAsync(IServiceProvider serv...
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/BlankTriggerAddingConvention.cs
class BlankTriggerAddingConvention (line 9) | internal class BlankTriggerAddingConvention : IModelFinalizingConvention
method ProcessModelFinalizing (line 11) | public virtual void ProcessModelFinalizing(
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20161118134254_Initial.Designer.cs
class Initial (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20161118134254_Initial.cs
class Initial (line 7) | public partial class Initial : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 266) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170108141354_AddMenuOnlyProp.Designer.cs
class AddMenuOnlyProp (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170108141354_AddMenuOnlyProp.cs
class AddMenuOnlyProp (line 7) | public partial class AddMenuOnlyProp : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 19) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170301144919_changes20170301.Designer.cs
class changes20170301 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170301144919_changes20170301.cs
class changes20170301 (line 7) | public partial class changes20170301 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 48) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170308205858_changes20170308.Designer.cs
class changes20170308 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170308205858_changes20170308.cs
class changes20170308 (line 7) | public partial class changes20170308 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 30) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170309130025_changes20170309.Designer.cs
class changes20170309 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170309130025_changes20170309.cs
class changes20170309 (line 7) | public partial class changes20170309 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 18) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170310190036_changes20170310.Designer.cs
class changes20170310 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170310190036_changes20170310.cs
class changes20170310 (line 7) | public partial class changes20170310 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 30) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170418142644_changes20170417.Designer.cs
class changes20170417 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170418142644_changes20170417.cs
class changes20170417 (line 7) | public partial class changes20170417 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 39) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170514122601_changes20170514.Designer.cs
class changes20170514 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170514122601_changes20170514.cs
class changes20170514 (line 7) | public partial class changes20170514 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 18) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170724195300_changes20170724.Designer.cs
class changes20170724 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170724195300_changes20170724.cs
class changes20170724 (line 7) | public partial class changes20170724 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 32) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170801140952_changes20170731.Designer.cs
class changes20170731 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170801140952_changes20170731.cs
class changes20170731 (line 7) | public partial class changes20170731 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 29) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170801141349_changes20170801.Designer.cs
class changes20170801 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20170801141349_changes20170801.cs
class changes20170801 (line 7) | public partial class changes20170801 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 183) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20171005175655_changes20171005.Designer.cs
class changes20171005 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20171005175655_changes20171005.cs
class changes20171005 (line 7) | public partial class changes20171005 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 40) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20171016103054_changes20171016.Designer.cs
class changes20171016 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20171016103054_changes20171016.cs
class changes20171016 (line 7) | public partial class changes20171016 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 40) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20171118193027_changes20171118.Designer.cs
class changes20171118 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20171118193027_changes20171118.cs
class changes20171118 (line 7) | public partial class changes20171118 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 33) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180103204131_changes20180103.Designer.cs
class changes20180103 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180103204131_changes20180103.cs
class changes20180103 (line 7) | public partial class changes20180103 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 41) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180206125759_simplecontentchanges20180206.Designer.cs
class simplecontentchanges20180206 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180206125759_simplecontentchanges20180206.cs
class simplecontentchanges20180206 (line 7) | public partial class simplecontentchanges20180206 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 38) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180223151637_simplecontent_changes20180223.Designer.cs
class simplecontent_changes20180223 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180223151637_simplecontent_changes20180223.cs
class simplecontent_changes20180223 (line 7) | public partial class simplecontent_changes20180223 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 19) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180315174300_simplecontent_changes20180315.Designer.cs
class simplecontent_changes20180315 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180315174300_simplecontent_changes20180315.cs
class simplecontent_changes20180315 (line 7) | public partial class simplecontent_changes20180315 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 44) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180704183112_simplecontent-20180704.Designer.cs
class simplecontent20180704 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180704183112_simplecontent-20180704.cs
class simplecontent20180704 (line 6) | public partial class simplecontent20180704 : Migration
method Up (line 8) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 213) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180705124637_simplecontent-20180705.Designer.cs
class simplecontent20180705 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180705124637_simplecontent-20180705.cs
class simplecontent20180705 (line 5) | public partial class simplecontent20180705 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 60) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180710113039_simplecontent-20180710.Designer.cs
class simplecontent20180710 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180710113039_simplecontent-20180710.cs
class simplecontent20180710 (line 5) | public partial class simplecontent20180710 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 15) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180820133027_simplecontent-20180819.Designer.cs
class simplecontent20180819 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180820133027_simplecontent-20180819.cs
class simplecontent20180819 (line 5) | public partial class simplecontent20180819 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 15) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180908121615_simplecontent-20180908.Designer.cs
class simplecontent20180908 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20180908121615_simplecontent-20180908.cs
class simplecontent20180908 (line 5) | public partial class simplecontent20180908 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 24) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190210160956_simplecontent-20190210.Designer.cs
class simplecontent20190210 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190210160956_simplecontent-20190210.cs
class simplecontent20190210 (line 5) | public partial class simplecontent20190210 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 15) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190213120620_simplecontent-20190212.Designer.cs
class simplecontent20190212 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190213120620_simplecontent-20190212.cs
class simplecontent20190212 (line 5) | public partial class simplecontent20190212 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 28) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190213120720_simplecontent-20190213.Designer.cs
class simplecontent20190213 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190213120720_simplecontent-20190213.cs
class simplecontent20190213 (line 5) | public partial class simplecontent20190213 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 24) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190304161740_simplecontent-20190304.Designer.cs
class simplecontent20190304 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190304161740_simplecontent-20190304.cs
class simplecontent20190304 (line 5) | public partial class simplecontent20190304 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 74) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190312154938_simplecontent-20190312.Designer.cs
class simplecontent20190312 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20190312154938_simplecontent-20190312.cs
class simplecontent20190312 (line 5) | public partial class simplecontent20190312 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 34) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20200723185114_AddPostShowCommentsSwitch.Designer.cs
class AddPostShowCommentsSwitch (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20200723185114_AddPostShowCommentsSwitch.cs
class AddPostShowCommentsSwitch (line 5) | public partial class AddPostShowCommentsSwitch : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 16) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20240918131738_ShowArchivedAndBlogCategories-20240918.Designer.cs
class ShowArchivedAndBlogCategories20240918 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20240918131738_ShowArchivedAndBlogCategories-20240918.cs
class ShowArchivedAndBlogCategories20240918 (line 8) | public partial class ShowArchivedAndBlogCategories20240918 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 29) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20241001103518_SetShowArchiveAboutRelatedBlogToTrue020241001.Designer.cs
class SetShowArchiveAboutRelatedBlogToTrue020241001 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20241001103518_SetShowArchiveAboutRelatedBlogToTrue020241001.cs
class SetShowArchiveAboutRelatedBlogToTrue020241001 (line 8) | public partial class SetShowArchiveAboutRelatedBlogToTrue020241001 : Mig...
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 51) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20241108094100_simplecontent-20241108.Designer.cs
class simplecontent20241108 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20241108094100_simplecontent-20241108.cs
class simplecontent20241108 (line 8) | public partial class simplecontent20241108 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 91) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20250423093650_user-script-20250423.Designer.cs
class userscript20250423 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20250423093650_user-script-20250423.cs
class userscript20250423 (line 8) | public partial class userscript20250423 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 33) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20250818152838_remove-pageresource-script.Designer.cs
class removepageresourcescript (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/20250818152838_remove-pageresource-script.cs
class removepageresourcescript (line 8) | public partial class removepageresourcescript : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 19) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/Migrations/SimpleContentDbContextModelSnapshot.cs
class SimpleContentDbContextModelSnapshot (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildModel (line 16) | protected override void BuildModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/ServiceCollectionExtensions.cs
class SimpleContentEFMSSQLServiceCollectionExtensions (line 17) | public static class SimpleContentEFMSSQLServiceCollectionExtensions
method AddCloudscribeSimpleContentEFStorageMSSQL (line 20) | public static IServiceCollection AddCloudscribeSimpleContentEFStorageM...
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/SimpleContentDbContext.cs
class SimpleContentDbContext (line 15) | public class SimpleContentDbContext : SimpleContentDbContextBase, ISimpl...
method SimpleContentDbContext (line 17) | public SimpleContentDbContext(DbContextOptions<SimpleContentDbContext>...
method SimpleContentDbContext (line 22) | protected SimpleContentDbContext() { }
method ConfigureConventions (line 24) | protected override void ConfigureConventions(ModelConfigurationBuilder...
method OnModelCreating (line 29) | protected override void OnModelCreating(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/SimpleContentDbContextDesignTimeFactory.cs
class SimpleContentDbContextDesignTimeFactory (line 6) | public class SimpleContentDbContextDesignTimeFactory : IDesignTimeDbCont...
method CreateDbContext (line 8) | public SimpleContentDbContext CreateDbContext(string[] args)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/SimpleContentDbContextFactory.cs
class SimpleContentDbContextFactory (line 6) | public class SimpleContentDbContextFactory : ISimpleContentDbContextFactory
method SimpleContentDbContextFactory (line 8) | public SimpleContentDbContextFactory(DbContextOptions<SimpleContentDbC...
method CreateContext (line 15) | public ISimpleContentDbContext CreateContext()
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MSSQL/StorageInfo.cs
class StorageInfo (line 5) | public class StorageInfo : IStorageInfo
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20161111152256_Initial.Designer.cs
class Initial (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20161111152256_Initial.cs
class Initial (line 7) | public partial class Initial : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 266) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170108141502_AddMenuOnlyProp.Designer.cs
class AddMenuOnlyProp (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170108141502_AddMenuOnlyProp.cs
class AddMenuOnlyProp (line 7) | public partial class AddMenuOnlyProp : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 64) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170301145042_changes20170301.Designer.cs
class changes20170301 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170301145042_changes20170301.cs
class changes20170301 (line 7) | public partial class changes20170301 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 96) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170308205943_changes20170308.Designer.cs
class changes20170308 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170308205943_changes20170308.cs
class changes20170308 (line 7) | public partial class changes20170308 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 30) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170309130101_changes20170309.Designer.cs
class changes20170309 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170309130101_changes20170309.cs
class changes20170309 (line 7) | public partial class changes20170309 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 18) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170310190111_changes20170310.Designer.cs
class changes20170310 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170310190111_changes20170310.cs
class changes20170310 (line 7) | public partial class changes20170310 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 30) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170418142722_changes20170417.Designer.cs
class changes20170417 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170418142722_changes20170417.cs
class changes20170417 (line 7) | public partial class changes20170417 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 40) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170514135058_changes20170514.Designer.cs
class changes20170514 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170514135058_changes20170514.cs
class changes20170514 (line 7) | public partial class changes20170514 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 18) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170724195817_changes20170724.Designer.cs
class changes20170724 (line 10) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 14) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170724195817_changes20170724.cs
class changes20170724 (line 7) | public partial class changes20170724 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 32) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170801190433_changes20170731.Designer.cs
class changes20170731 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170801190433_changes20170731.cs
class changes20170731 (line 7) | public partial class changes20170731 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 19) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170801190833_changes20170801.Designer.cs
class changes20170801 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170801190833_changes20170801.cs
class changes20170801 (line 7) | public partial class changes20170801 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 76) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170801191031_changes20170801b.Designer.cs
class changes20170801b (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20170801191031_changes20170801b.cs
class changes20170801b (line 7) | public partial class changes20170801b : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 20) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20171005175519_changes20171005.Designer.cs
class changes20171005 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20171005175519_changes20171005.cs
class changes20171005 (line 7) | public partial class changes20171005 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 40) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20171016103020_changes20171016.Designer.cs
class changes20171016 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20171016103020_changes20171016.cs
class changes20171016 (line 7) | public partial class changes20171016 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 40) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20171118201035_changes20171118.Designer.cs
class changes20171118 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20171118201035_changes20171118.cs
class changes20171118 (line 7) | public partial class changes20171118 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 33) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180122125337_changes20180122.Designer.cs
class changes20180122 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180122125337_changes20180122.cs
class changes20180122 (line 7) | public partial class changes20180122 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 41) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180206125859_simplecontentchanges20180206.Designer.cs
class simplecontentchanges20180206 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180206125859_simplecontentchanges20180206.cs
class simplecontentchanges20180206 (line 7) | public partial class simplecontentchanges20180206 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 41) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180315174230_simplecontent_changes20180315.Designer.cs
class simplecontent_changes20180315 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180315174230_simplecontent_changes20180315.cs
class simplecontent_changes20180315 (line 7) | public partial class simplecontent_changes20180315 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 44) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180704183709_simplecontent-20180704.Designer.cs
class simplecontent20180704 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180704183709_simplecontent-20180704.cs
class simplecontent20180704 (line 6) | public partial class simplecontent20180704 : Migration
method Up (line 8) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 213) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180705124549_simplecontent-20180705.Designer.cs
class simplecontent20180705 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180705124549_simplecontent-20180705.cs
class simplecontent20180705 (line 5) | public partial class simplecontent20180705 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 60) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180710112927_simplecontent-20180710.Designer.cs
class simplecontent20180710 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180710112927_simplecontent-20180710.cs
class simplecontent20180710 (line 5) | public partial class simplecontent20180710 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 15) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180820133148_simplecontent-20180819.Designer.cs
class simplecontent20180819 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180820133148_simplecontent-20180819.cs
class simplecontent20180819 (line 5) | public partial class simplecontent20180819 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 15) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180908121712_simplecontent-20180908.Designer.cs
class simplecontent20180908 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20180908121712_simplecontent-20180908.cs
class simplecontent20180908 (line 5) | public partial class simplecontent20180908 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 24) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190210161111_simplecontent-20190210.Designer.cs
class simplecontent20190210 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190210161111_simplecontent-20190210.cs
class simplecontent20190210 (line 5) | public partial class simplecontent20190210 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 15) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190213120841_simplecontent-20190212.Designer.cs
class simplecontent20190212 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190213120841_simplecontent-20190212.cs
class simplecontent20190212 (line 5) | public partial class simplecontent20190212 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 28) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190213120911_simplecontent-20190213.Designer.cs
class simplecontent20190213 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190213120911_simplecontent-20190213.cs
class simplecontent20190213 (line 5) | public partial class simplecontent20190213 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 24) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190304161922_simplecontent-20190304.Designer.cs
class simplecontent20190304 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190304161922_simplecontent-20190304.cs
class simplecontent20190304 (line 5) | public partial class simplecontent20190304 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 74) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190312155536_simplecontent-20190312.Designer.cs
class simplecontent20190312 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20190312155536_simplecontent-20190312.cs
class simplecontent20190312 (line 5) | public partial class simplecontent20190312 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 34) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20200723185158_AddPostShowCommentsSwitch.Designer.cs
class AddPostShowCommentsSwitch (line 11) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 15) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20200723185158_AddPostShowCommentsSwitch.cs
class AddPostShowCommentsSwitch (line 5) | public partial class AddPostShowCommentsSwitch : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 16) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20240918132058_ShowArchivedAndBlogCategories-20240918.Designer.cs
class ShowArchivedAndBlogCategories20240918 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20240918132058_ShowArchivedAndBlogCategories-20240918.cs
class ShowArchivedAndBlogCategories20240918 (line 8) | public partial class ShowArchivedAndBlogCategories20240918 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 29) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20241001104452_SetShowArchiveAboutRelatedBlogToTrue-20241001.Designer.cs
class SetShowArchiveAboutRelatedBlogToTrue20241001 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20241001104452_SetShowArchiveAboutRelatedBlogToTrue-20241001.cs
class SetShowArchiveAboutRelatedBlogToTrue20241001 (line 8) | public partial class SetShowArchiveAboutRelatedBlogToTrue20241001 : Migr...
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 51) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20241108094512_simplecontent-20241108.Designer.cs
class simplecontent20241108 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20241108094512_simplecontent-20241108.cs
class simplecontent20241108 (line 8) | public partial class simplecontent20241108 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 91) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20250423093954_user-script-20250423.Designer.cs
class userscript20250423 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20250423093954_user-script-20250423.cs
class userscript20250423 (line 8) | public partial class userscript20250423 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 36) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20250818153349_remove-pageresource-script.Designer.cs
class removepageresourcescript (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/20250818153349_remove-pageresource-script.cs
class removepageresourcescript (line 8) | public partial class removepageresourcescript : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 19) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/Migrations/SimpleContentDbContextModelSnapshot.cs
class SimpleContentDbContextModelSnapshot (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildModel (line 15) | protected override void BuildModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/ServiceCollectionExtensions.cs
class SimpleContentEFMSSQLServiceCollectionExtensions (line 17) | public static class SimpleContentEFMSSQLServiceCollectionExtensions
method AddCloudscribeSimpleContentEFStorageMySQL (line 20) | public static IServiceCollection AddCloudscribeSimpleContentEFStorageM...
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/SimpleContentDbContext.cs
class SimpleContentDbContext (line 15) | public class SimpleContentDbContext : SimpleContentDbContextBase, ISimpl...
method SimpleContentDbContext (line 17) | public SimpleContentDbContext(DbContextOptions<SimpleContentDbContext>...
method SimpleContentDbContext (line 22) | protected SimpleContentDbContext() { }
method OnModelCreating (line 24) | protected override void OnModelCreating(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/SimpleContentDbContextDesignTimeFactory.cs
class SimpleContentDbContextDesignTimeFactory (line 6) | public class SimpleContentDbContextDesignTimeFactory : IDesignTimeDbCont...
method CreateDbContext (line 8) | public SimpleContentDbContext CreateDbContext(string[] args)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/SimpleContentDbContextFactory.cs
class SimpleContentDbContextFactory (line 6) | public class SimpleContentDbContextFactory : ISimpleContentDbContextFactory
method SimpleContentDbContextFactory (line 8) | public SimpleContentDbContextFactory(DbContextOptions<SimpleContentDbC...
method CreateContext (line 15) | public ISimpleContentDbContext CreateContext()
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.MySQL/StorageInfo.cs
class StorageInfo (line 5) | public class StorageInfo : IStorageInfo
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/DesignTimeFactory.cs
class DesignTimeFactory (line 6) | public class DesignTimeFactory : IDesignTimeDbContextFactory<SimpleConte...
method CreateDbContext (line 8) | public SimpleContentDbContext CreateDbContext(string[] args)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20181009120713_simplecontent-initial.Designer.cs
class simplecontentinitial (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20181009120713_simplecontent-initial.cs
class simplecontentinitial (line 6) | public partial class simplecontentinitial : Migration
method Up (line 8) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 426) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190210161250_simplecontent-20190210.Designer.cs
class simplecontent20190210 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190210161250_simplecontent-20190210.cs
class simplecontent20190210 (line 5) | public partial class simplecontent20190210 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 15) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190213121205_simplecontent-20190212.Designer.cs
class simplecontent20190212 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190213121205_simplecontent-20190212.cs
class simplecontent20190212 (line 5) | public partial class simplecontent20190212 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 28) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190213121232_simplecontent-20190213.Designer.cs
class simplecontent20190213 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190213121232_simplecontent-20190213.cs
class simplecontent20190213 (line 5) | public partial class simplecontent20190213 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 24) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190304162045_simplecontent-20190304.Designer.cs
class simplecontent20190304 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190304162045_simplecontent-20190304.cs
class simplecontent20190304 (line 5) | public partial class simplecontent20190304 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 74) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190312155722_simplecontent-20190312.Designer.cs
class simplecontent20190312 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20190312155722_simplecontent-20190312.cs
class simplecontent20190312 (line 5) | public partial class simplecontent20190312 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 34) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20200723185336_AddPostShowCommentsSwitch.Designer.cs
class AddPostShowCommentsSwitch (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20200723185336_AddPostShowCommentsSwitch.cs
class AddPostShowCommentsSwitch (line 5) | public partial class AddPostShowCommentsSwitch : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 40) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20220420182545_simplecontent-20220420.Designer.cs
class simplecontent20220420 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20220420182545_simplecontent-20220420.cs
class simplecontent20220420 (line 8) | public partial class simplecontent20220420 : Migration
method Up (line 10) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 162) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20240918132310_ShowArchiveAndBlogCategories-20240918.Designer.cs
class ShowArchiveAndBlogCategories20240918 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20240918132310_ShowArchiveAndBlogCategories-20240918.cs
class ShowArchiveAndBlogCategories20240918 (line 8) | public partial class ShowArchiveAndBlogCategories20240918 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 29) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20241001104647_SetShowArchiveAboutRelatedBlogToTrue-20241001.Designer.cs
class SetShowArchiveAboutRelatedBlogToTrue20241001 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20241001104647_SetShowArchiveAboutRelatedBlogToTrue-20241001.cs
class SetShowArchiveAboutRelatedBlogToTrue20241001 (line 8) | public partial class SetShowArchiveAboutRelatedBlogToTrue20241001 : Migr...
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 51) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20241108094644_simplecontent-20241108.Designer.cs
class simplecontent20241108 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20241108094644_simplecontent-20241108.cs
class simplecontent20241108 (line 8) | public partial class simplecontent20241108 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 91) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20250423094338_user-script-20250423.Designer.cs
class userscript20250423 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20250423094338_user-script-20250423.cs
class userscript20250423 (line 8) | public partial class userscript20250423 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 33) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20250818153117_remove-pageresource-script.Designer.cs
class removepageresourcescript (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/20250818153117_remove-pageresource-script.cs
class removepageresourcescript (line 8) | public partial class removepageresourcescript : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 19) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/Migrations/SimpleContentDbContextModelSnapshot.cs
class SimpleContentDbContextModelSnapshot (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildModel (line 16) | protected override void BuildModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/ServiceCollectionExtensions.cs
class SimpleContentEFMSSQLServiceCollectionExtensions (line 17) | public static class SimpleContentEFMSSQLServiceCollectionExtensions
method AddCloudscribeSimpleContentPostgreSqlStorage (line 20) | public static IServiceCollection AddCloudscribeSimpleContentPostgreSql...
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/SimpleContentDbContext.cs
class SimpleContentDbContext (line 17) | public class SimpleContentDbContext : SimpleContentDbContextBase, ISimpl...
method SimpleContentDbContext (line 19) | public SimpleContentDbContext(DbContextOptions<SimpleContentDbContext>...
method SimpleContentDbContext (line 24) | protected SimpleContentDbContext() { }
method OnModelCreating (line 26) | protected override void OnModelCreating(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/SimpleContentDbContextFactory.cs
class SimpleContentDbContextFactory (line 6) | public class SimpleContentDbContextFactory : ISimpleContentDbContextFactory
method SimpleContentDbContextFactory (line 8) | public SimpleContentDbContextFactory(DbContextOptions<SimpleContentDbC...
method CreateContext (line 15) | public ISimpleContentDbContext CreateContext()
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.PostgreSql/StorageInfo.cs
class StorageInfo (line 5) | public class StorageInfo : IStorageInfo
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/DesignTimeFactory.cs
class DesignTimeFactory (line 6) | public class DesignTimeFactory : IDesignTimeDbContextFactory<SimpleConte...
method CreateDbContext (line 8) | public SimpleContentDbContext CreateDbContext(string[] args)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20171222135806_Initial.Designer.cs
class Initial (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 17) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20171222135806_Initial.cs
class Initial (line 7) | public partial class Initial : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 332) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180122125428_changes20180122.Designer.cs
class changes20180122 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180122125428_changes20180122.cs
class changes20180122 (line 7) | public partial class changes20180122 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 42) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180206125939_simplecontentchanges20180206.Designer.cs
class simplecontentchanges20180206 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180206125939_simplecontentchanges20180206.cs
class simplecontentchanges20180206 (line 7) | public partial class simplecontentchanges20180206 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 52) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180315174340_simplecontent_changes20180315.Designer.cs
class simplecontent_changes20180315 (line 14) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180315174340_simplecontent_changes20180315.cs
class simplecontent_changes20180315 (line 7) | public partial class simplecontent_changes20180315 : Migration
method Up (line 9) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 62) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180704183840_simplecontent-20180704.Designer.cs
class simplecontent20180704 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180704183840_simplecontent-20180704.cs
class simplecontent20180704 (line 6) | public partial class simplecontent20180704 : Migration
method Up (line 8) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 231) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180705124759_simplecontent-20180705.Designer.cs
class simplecontent20180705 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180705124759_simplecontent-20180705.cs
class simplecontent20180705 (line 5) | public partial class simplecontent20180705 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 78) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180710113211_simplecontent-20180710.Designer.cs
class simplecontent20180710 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180710113211_simplecontent-20180710.cs
class simplecontent20180710 (line 5) | public partial class simplecontent20180710 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 33) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180820133304_simplecontent-20180819.Designer.cs
class simplecontent20180819 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180820133304_simplecontent-20180819.cs
class simplecontent20180819 (line 5) | public partial class simplecontent20180819 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 33) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180908121905_simplecontent-20180908.Designer.cs
class simplecontent20180908 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20180908121905_simplecontent-20180908.cs
class simplecontent20180908 (line 5) | public partial class simplecontent20180908 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 44) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20190210161404_simplecontent-20190210.Designer.cs
class simplecontent20190210 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20190210161404_simplecontent-20190210.cs
class simplecontent20190210 (line 5) | public partial class simplecontent20190210 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 17) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20190213121319_simplecontent-20190212.Designer.cs
class simplecontent20190212 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20190213121319_simplecontent-20190212.cs
class simplecontent20190212 (line 5) | public partial class simplecontent20190212 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 46) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20190304162117_simplecontent-20190304.Designer.cs
class simplecontent20190304 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20190304162117_simplecontent-20190304.cs
class simplecontent20190304 (line 5) | public partial class simplecontent20190304 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 28) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20190312155759_simplecontent-20190312.Designer.cs
class simplecontent20190312 (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 16) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20190312155759_simplecontent-20190312.cs
class simplecontent20190312 (line 5) | public partial class simplecontent20190312 : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 52) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20200723185404_AddPostShowCommentsSwitch.Designer.cs
class AddPostShowCommentsSwitch (line 11) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 15) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20200723185404_AddPostShowCommentsSwitch.cs
class AddPostShowCommentsSwitch (line 5) | public partial class AddPostShowCommentsSwitch : Migration
method Up (line 7) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 34) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20240920125304_ShowArchiveAndBlogCategories-20240920.Designer.cs
class ShowArchiveAndBlogCategories20240920 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20240920125304_ShowArchiveAndBlogCategories-20240920.cs
class ShowArchiveAndBlogCategories20240920 (line 8) | public partial class ShowArchiveAndBlogCategories20240920 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 29) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20241001104814_SetShowArchiveAboutRelatedBlogToTrue-20241001.Designer.cs
class SetShowArchiveAboutRelatedBlogToTrue20241001 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20241001104814_SetShowArchiveAboutRelatedBlogToTrue-20241001.cs
class SetShowArchiveAboutRelatedBlogToTrue20241001 (line 8) | public partial class SetShowArchiveAboutRelatedBlogToTrue20241001 : Migr...
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 51) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20241108094744_simplecontent-20241108.Designer.cs
class simplecontent20241108 (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20241108094744_simplecontent-20241108.cs
class simplecontent20241108 (line 8) | public partial class simplecontent20241108 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 91) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20250815092116_simplecontent-userscript.Designer.cs
class simplecontentuserscript (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20250815092116_simplecontent-userscript.cs
class simplecontentuserscript (line 8) | public partial class simplecontentuserscript : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 33) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20250818153135_remove-pageresource-script.Designer.cs
class removepageresourcescript (line 13) | [DbContext(typeof(SimpleContentDbContext))]
method BuildTargetModel (line 18) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/20250818153135_remove-pageresource-script.cs
class removepageresourcescript (line 8) | public partial class removepageresourcescript : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 19) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/Migrations/SimpleContentDbContextModelSnapshot.cs
class SimpleContentDbContextModelSnapshot (line 12) | [DbContext(typeof(SimpleContentDbContext))]
method BuildModel (line 15) | protected override void BuildModel(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/SimpleContentDbContext.cs
class SimpleContentDbContext (line 8) | public class SimpleContentDbContext : SimpleContentDbContextBase, ISimpl...
method SimpleContentDbContext (line 10) | public SimpleContentDbContext(DbContextOptions<SimpleContentDbContext>...
method SimpleContentDbContext (line 15) | protected SimpleContentDbContext() { }
method OnModelCreating (line 17) | protected override void OnModelCreating(ModelBuilder modelBuilder)
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/SimpleContentDbContextFactory.cs
class SimpleContentDbContextFactory (line 6) | public class SimpleContentDbContextFactory : ISimpleContentDbContextFactory
method SimpleContentDbContextFactory (line 8) | public SimpleContentDbContextFactory(DbContextOptions<SimpleContentDbC...
method CreateContext (line 15) | public ISimpleContentDbContext CreateContext()
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/StartupExtensions.cs
class StartupExtensions (line 8) | public static class StartupExtensions
method AddCloudscribeSimpleContentEFStorageSQLite (line 10) | public static IServiceCollection AddCloudscribeSimpleContentEFStorageS...
FILE: src/cloudscribe.SimpleContent.Storage.EFCore.SQLite/StorageInfo.cs
class StorageInfo (line 5) | public class StorageInfo : IStorageInfo
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/ConfigProjectQueries.cs
class ConfigProjectQueries (line 23) | public class ConfigProjectQueries : IProjectQueries
method ConfigProjectQueries (line 25) | public ConfigProjectQueries(
method GetProjectSettings (line 34) | public Task<IProjectSettings> GetProjectSettings(
method GetProjectSettingsByUser (line 44) | public async Task<List<IProjectSettings>> GetProjectSettingsByUser(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/ContentHistoryCommands.cs
class ContentHistoryCommands (line 16) | public class ContentHistoryCommands : IContentHistoryCommands, IContentH...
method ContentHistoryCommands (line 18) | public ContentHistoryCommands(
method Create (line 30) | public async Task Create(
method Delete (line 47) | public async Task Delete(
method DeleteByContent (line 56) | public async Task DeleteByContent(
method DeleteByContent (line 75) | public async Task DeleteByContent(
method DeleteDraftHistory (line 95) | public async Task DeleteDraftHistory(
method DeleteByProject (line 114) | public async Task DeleteByProject(
method DeleteOlderThan (line 132) | public async Task DeleteOlderThan(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/ContentHistoryQueries.cs
class ContentHistoryQueries (line 17) | public class ContentHistoryQueries : IContentHistoryQueries, IContentHis...
method ContentHistoryQueries (line 19) | public ContentHistoryQueries(
method Fetch (line 28) | public async Task<ContentHistory> Fetch(
method GetByContent (line 42) | public async Task<PagedResult<ContentHistory>> GetByContent(
method GetList (line 85) | public async Task<PagedResult<ContentHistory>> GetList(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/KeyGenerators/DefaultKeyGenerator.cs
class DefaultKeyGenerator (line 8) | public class DefaultKeyGenerator : GuidKeyGenerator, IKeyGenerator
method GenerateKey (line 10) | public override string GenerateKey(IContentItem item)
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/KeyGenerators/GuidKeyGenerator.cs
class GuidKeyGenerator (line 8) | public class GuidKeyGenerator : IKeyGenerator
method GenerateKey (line 10) | public virtual string GenerateKey(IContentItem item)
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/KeyGenerators/IKeyGenerator.cs
type IKeyGenerator (line 5) | public interface IKeyGenerator
method GenerateKey (line 7) | string GenerateKey(IContentItem item);
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PageCommands.cs
class PageCommands (line 18) | public class PageCommands : IPageCommands, IPageCommandsSingleton
method PageCommands (line 20) | public PageCommands(
method Create (line 36) | public async Task Create(
method Update (line 55) | public async Task Update(
method Delete (line 69) | public async Task Delete(
method GetAllPages (line 84) | private async Task<List<Page>> GetAllPages(
method CloneToNewProject (line 93) | public async Task<string> CloneToNewProject(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PageCompositeSerializer.cs
class PageCompositeSerializer (line 13) | public class PageCompositeSerializer : IStringSerializer<Page>
method PageCompositeSerializer (line 15) | public PageCompositeSerializer(
method Serialize (line 29) | public string Serialize(Page page)
method Deserialize (line 39) | public Page Deserialize(string input, string key)
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PageJsonSerializer.cs
class PageJsonSerializer (line 6) | public class PageJsonSerializer : StringSerializer<Page>
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PageMarkdownSerializer.cs
class PageMarkdownSerializer (line 19) | public class PageMarkdownSerializer : IStringSerializer<Page>
method PageMarkdownSerializer (line 21) | public PageMarkdownSerializer(
method Serialize (line 32) | public string Serialize(Page page)
method Deserialize (line 59) | public Page Deserialize(string markdownWithYaml, string key)
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PageQueries.cs
class PageQueries (line 19) | public class PageQueries : IPageQueries, IPageQueriesSingleton
method PageQueries (line 21) | public PageQueries(
method GetAllPages (line 31) | public async Task<List<IPage>> GetAllPages(
method GetPagesReadyForPublish (line 46) | public async Task<List<IPage>> GetPagesReadyForPublish(
method GetPage (line 59) | public async Task<IPage> GetPage(
method GetRootPages (line 71) | public async Task<List<IPage>> GetRootPages(
method GetChildPages (line 83) | public async Task<List<IPage>> GetChildPages(
method GetPageBySlug (line 96) | public async Task<IPage> GetPageBySlug(
method GetPageByCorrelationKey (line 108) | public async Task<IPage> GetPageByCorrelationKey(
method SlugIsAvailable (line 120) | public async Task<bool> SlugIsAvailable(
method GetChildPageCount (line 136) | public async Task<int> GetChildPageCount(
method GetCount (line 155) | public async Task<int> GetCount(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PageStoragePathResolver.cs
class PageStoragePathResolver (line 10) | public class PageStoragePathResolver : IStoragePathResolver<Page>
method PageStoragePathResolver (line 12) | public PageStoragePathResolver(IStoragePathOptionsResolver storageOpti...
method ResolvePath (line 19) | public async Task<string> ResolvePath(
method ResolvePath (line 80) | public async Task<string> ResolvePath(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PostCache.cs
class PostCache (line 16) | public class PostCache
method PostCache (line 18) | public PostCache(
method GetAllPosts (line 34) | public List<Post> GetAllPosts(
method GetCategories (line 45) | public Dictionary<string, int> GetCategories(string projectId, bool in...
method GetArchiveList (line 52) | public Dictionary<string, int> GetArchiveList(string projectId, bool i...
method AddToCache (line 59) | public void AddToCache(List<Post> postList, string projectId)
method AddCategoriesToCache (line 70) | public void AddCategoriesToCache(Dictionary<string, int> categoryList,...
method AddArchiveListToCache (line 81) | public void AddArchiveListToCache(Dictionary<string, int> archiveList,...
method ClearListCache (line 92) | public void ClearListCache(string projectId)
method GetListCacheKey (line 110) | public string GetListCacheKey(string projectId)
method GetCategoriesCacheKey (line 115) | public string GetCategoriesCacheKey(string projectId, bool includeUnpu...
method GetArchiveListCacheKey (line 128) | public string GetArchiveListCacheKey(string projectId, bool includeUnp...
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PostCacheOptions.cs
class PostCacheOptions (line 8) | public class PostCacheOptions
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PostCommands.cs
class PostCommands (line 18) | public class PostCommands : IPostCommands, IPostCommandsSingleton
method PostCommands (line 20) | public PostCommands(
method Create (line 40) | public async Task Create(
method Update (line 60) | public async Task Update(
method Delete (line 112) | public async Task Delete(
method GetAllPosts (line 130) | private async Task<List<Post>> GetAllPosts(
method CloneToNewProject (line 146) | public async Task<string> CloneToNewProject(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PostCompositeSerializer.cs
class PostCompositeSerializer (line 14) | public class PostCompositeSerializer : IStringSerializer<Post>
method PostCompositeSerializer (line 16) | public PostCompositeSerializer(
method Serialize (line 30) | public string Serialize(Post post)
method Deserialize (line 40) | public Post Deserialize(string input, string key)
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PostMarkdownSerializer.cs
class PostMarkdownSerializer (line 19) | public class PostMarkdownSerializer : IStringSerializer<Post>
method PostMarkdownSerializer (line 21) | public PostMarkdownSerializer(
method Serialize (line 31) | public string Serialize(Post post)
method Deserialize (line 58) | public Post Deserialize(string markdownWithYaml, string key)
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PostQueries.cs
class PostQueries (line 18) | public class PostQueries : IPostQueries, IPostQueriesSingleton
method PostQueries (line 20) | public PostQueries(
method GetAllPosts (line 33) | private async Task<List<Post>> GetAllPosts(
method GetPostsReadyForPublish (line 51) | public async Task<List<IPost>> GetPostsReadyForPublish(
method GetPosts (line 62) | public async Task<List<IPost>> GetPosts(
method GetPosts (line 84) | public async Task<PagedPostResult> GetPosts(
method GetCount (line 143) | public async Task<int> GetCount(
method GetRecentPosts (line 169) | public async Task<List<IPost>> GetRecentPosts(
method GetFeaturedPosts (line 191) | public async Task<List<IPost>> GetFeaturedPosts(
method GetRelatedPosts (line 214) | public async Task<List<IPost>> GetRelatedPosts(
method GetPosts (line 247) | public async Task<PagedPostResult> GetPosts(
method GetCount (line 318) | public async Task<int> GetCount(
method GetPost (line 363) | public async Task<IPost> GetPost(
method GetPostBySlug (line 377) | public async Task<PostResult> GetPostBySlug(
method GetPostByCorrelationKey (line 416) | public async Task<IPost> GetPostByCorrelationKey(
method SlugIsAvailable (line 429) | public async Task<bool> SlugIsAvailable(
method GetCategories (line 445) | public async Task<Dictionary<string, int>> GetCategories(
method GetArchives (line 483) | public async Task<Dictionary<string, int>> GetArchives(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PostStoragePathResolver.cs
class PostStoragePathResolver (line 18) | public class PostStoragePathResolver : IStoragePathResolver<Post>
method PostStoragePathResolver (line 20) | public PostStoragePathResolver(
method ResolvePath (line 42) | public async Task<string> ResolvePath(
method ResolvePath (line 141) | public async Task<string> ResolvePath(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/PostXmlSerializer.cs
class PostXmlSerializer (line 20) | public class PostXmlSerializer : IStringSerializer<Post>
method PostXmlSerializer (line 22) | public PostXmlSerializer(
method Serialize (line 32) | public string Serialize(Post post)
method Deserialize (line 120) | public Post Deserialize(string xmlString, string key)
method LoadCategories (line 169) | protected void LoadCategories(Post post, XElement doc)
method LoadComments (line 185) | protected void LoadComments(Post post, XElement doc)
method GetDate (line 212) | protected DateTime GetDate(XElement doc, XName name)
method GetNullableDate (line 246) | protected DateTime? GetNullableDate(XElement doc, XName name)
method ReadValue (line 283) | protected string ReadValue(XElement doc, XName name, string defaultVal...
method ReadAttribute (line 291) | protected string ReadAttribute(XElement element, XName name, string de...
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/ProjectCommands.cs
class ProjectCommands (line 17) | public class ProjectCommands : IProjectCommands
method ProjectCommands (line 19) | public ProjectCommands(
method Create (line 34) | public async Task Create(
method Update (line 47) | public async Task Update(
method Delete (line 57) | public async Task Delete(
method CloneToNewProject (line 66) | public async Task<string> CloneToNewProject(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/ProjectQueries.cs
class ProjectQueries (line 19) | public class ProjectQueries : IProjectQueries
method ProjectQueries (line 22) | public ProjectQueries(
method GetProjectSettings (line 35) | public async Task<IProjectSettings> GetProjectSettings(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/ServiceCollectionExtensions.cs
class ServiceCollectionExtensions (line 16) | public static class ServiceCollectionExtensions
method AddNoDbStorageForSimpleContent (line 18) | public static IServiceCollection AddNoDbStorageForSimpleContent(
method AddNoDbPageStorage (line 57) | public static IServiceCollection AddNoDbPageStorage(
method AddNoDbPostStorage (line 93) | public static IServiceCollection AddNoDbPostStorage(
method AddNoDbProjectStorage (line 133) | public static IServiceCollection AddNoDbProjectStorage(
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/StorageInfo.cs
class StorageInfo (line 5) | public class StorageInfo : IStorageInfo
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/YamlHelper.cs
class YamlHelper (line 8) | public class YamlHelper
method MatchFrontMatter (line 14) | public Match MatchFrontMatter (string markdownWithYaml)
method RemoveFrontMatterDelimiters (line 19) | public string RemoveFrontMatterDelimiters(string source,
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/YamlPage.cs
class YamlPage (line 8) | public class YamlPage : IPage
method YamlPage (line 10) | public YamlPage()
FILE: src/cloudscribe.SimpleContent.Storage.NoDb/YamlPost.cs
class YamlPost (line 8) | public class YamlPost : IPost
method YamlPost (line 10) | public YamlPost()
FILE: src/cloudscribe.SimpleContent.Syndication/RssChannelProvider.cs
class RssChannelProvider (line 25) | public class RssChannelProvider : IChannelProvider
method RssChannelProvider (line 27) | public RssChannelProvider(
method GetChannel (line 59) | public virtual async Task<RssChannel> GetChannel(CancellationToken can...
FILE: src/cloudscribe.SimpleContent.Syndication/ServiceCollectionExtensions.cs
class ServiceCollectionExtensions (line 8) | public static class ServiceCollectionExtensions
method AddSimpleContentRssSyndiction (line 10) | public static IServiceCollection AddSimpleContentRssSyndiction(this IS...
FILE: src/cloudscribe.SimpleContent.Syndication/VersionProvider.cs
class VersionProvider (line 7) | public class VersionProvider : IVersionProvider
FILE: src/cloudscribe.SimpleContent.Web/ClaimsPrincipalExtensions.cs
class ClaimsPrincipalExtensions (line 16) | public static class ClaimsPrincipalExtensions
method GetUserDisplayName (line 29) | public static string GetUserDisplayName(this ClaimsPrincipal principal)
method GetProjectId (line 39) | public static string GetProjectId(this ClaimsPrincipal principal)
method CanEditProject (line 51) | public static bool CanEditProject(this ClaimsPrincipal principal, stri...
method CanEditPages (line 63) | public static async Task<bool> CanEditPages(
method CanEditBlog (line 91) | public static async Task<bool> CanEditBlog(
method IsInRoles (line 120) | public static bool IsInRoles(this ClaimsPrincipal principal, string al...
FILE: src/cloudscribe.SimpleContent.Web/Controllers/BlogController.cs
class BlogController (line 33) | public class BlogController : Controller
method BlogController (line 36) | public BlogController(
method Index (line 98) | [HttpHead]
method MostRecent (line 150) | [HttpGet]
method Archive (line 171) | [HttpHead]
method Category (line 222) | [HttpHead]
method Post (line 236) | [HttpHead]
method Post (line 249) | [HttpHead]
method NewPost (line 454) | [HttpGet]
method InitTemplatedPost (line 507) | [HttpPost]
method EditWithTemplate (line 579) | [HttpGet]
method EditWithTemplate (line 719) | [HttpPost]
method Edit (line 799) | [HttpGet]
method Edit (line 962) | [HttpPost]
method Delete (line 1069) | [HttpPost]
method UnPublish (line 1117) | [HttpPost]
method DeleteHistoryOlderThan (line 1178) | [Authorize(Policy = "ViewContentHistoryPolicy")]
method History (line 1220) | [HttpGet]
method AjaxPostComment (line 1263) | [HttpPost]
method AjaxApproveComment (line 1403) | [HttpPost]
method AjaxDeleteComment (line 1470) | [HttpPost]
method CanEdit (line 1542) | [HttpGet]
method GetUrl (line 1558) | protected string GetUrl(string website)
FILE: src/cloudscribe.SimpleContent.Web/Controllers/ContentHistoryController.cs
class ContentHistoryController (line 19) | public class ContentHistoryController : Controller
method ContentHistoryController (line 21) | public ContentHistoryController(
method Index (line 42) | [Authorize(Policy = "ViewContentHistoryPolicy")]
method DeleteHistory (line 80) | [Authorize(Policy = "ViewContentHistoryPolicy")]
method DeleteOlderThan (line 125) | [Authorize(Policy = "ViewContentHistoryPolicy")]
FILE: src/cloudscribe.SimpleContent.Web/Controllers/PageController.cs
class PageController (line 26) | public class PageController : Controller
method PageController (line 28) | public PageController(
method Index (line 89) | [HttpHead]
method NewPage (line 262) | [HttpGet]
method InitTemplatedPage (line 329) | [HttpPost]
method EditWithTemplate (line 401) | protected virtual async Task<IActionResult> EditWithTemplate(Cancellat...
method EditWithTemplate (line 477) | [HttpPost]
method Edit (line 553) | [HttpGet]
method Edit (line 716) | [HttpPost]
method Development (line 809) | [HttpGet]
method AddResource (line 861) | [HttpPost]
method AddScriptResource (line 917) | [HttpPost]
method RemoveResource (line 996) | [HttpPost]
method Delete (line 1057) | [HttpPost]
method UnPublish (line 1140) | [HttpPost]
method DeleteHistoryOlderThan (line 1221) | [Authorize(Policy = "ViewContentHistoryPolicy")]
method SiteMap (line 1253) | [HttpGet]
method Tree (line 1259) | [HttpGet]
method TreeJson (line 1286) | [HttpGet]
method Move (line 1319) | [HttpPost]
method SortChildPagesAlpha (line 1344) | [HttpPost]
method History (line 1363) | [HttpGet]
method CanEdit (line 1408) | [HttpGet]
method ShowEditorialItemsResolver (line 1424) | public Dictionary<string, bool?> ShowEditorialItemsResolver(IPage page...
method EditEditorialItemsResolver (line 1471) | public Dictionary<string, bool?> EditEditorialItemsResolver(IPage page...
method InlineScript (line 1520) | [HttpGet]
FILE: src/cloudscribe.SimpleContent.Web/Controllers/csscsrController.cs
class CsscsrController (line 22) | [ApiExplorerSettings(IgnoreApi = true)]
method CsscsrController (line 25) | public CsscsrController(
method GetResult (line 37) | protected virtual IActionResult GetResult(string resourceName, string ...
method Js (line 58) | [HttpGet]
method Css (line 77) | [HttpGet]
FILE: src/cloudscribe.SimpleContent.Web/Design/DefaultSimpleContentThemeHelper.cs
class DefaultSimpleContentThemeHelper (line 5) | public class DefaultSimpleContentThemeHelper : ISimpleContentThemeHelper
method DefaultSimpleContentThemeHelper (line 7) | public DefaultSimpleContentThemeHelper(
method GetThemeSettings (line 19) | public SimpleContentThemeSettings GetThemeSettings()
FILE: src/cloudscribe.SimpleContent.Web/Design/ISimpleContentThemeHelper.cs
type ISimpleContentThemeHelper (line 3) | public interface ISimpleContentThemeHelper
method GetThemeSettings (line 5) | SimpleContentThemeSettings GetThemeSettings();
FILE: src/cloudscribe.SimpleContent.Web/Design/IconCssClasses.cs
class IconCssClasses (line 3) | public class IconCssClasses
FILE: src/cloudscribe.SimpleContent.Web/Design/SimpleContentIconConfig.cs
class SimpleContentIconConfig (line 5) | public class SimpleContentIconConfig
method SimpleContentIconConfig (line 7) | public SimpleContentIconConfig()
method GetIcons (line 16) | public IconCssClasses GetIcons(string setId)
FILE: src/cloudscribe.SimpleContent.Web/Design/SimpleContentThemeConfig.cs
class SimpleContentThemeConfig (line 7) | public class SimpleContentThemeConfig
method SimpleContentThemeConfig (line 9) | public SimpleContentThemeConfig()
FILE: src/cloudscribe.SimpleContent.Web/Design/SimpleContentThemeSettings.cs
class SimpleContentThemeSettings (line 7) | public class SimpleContentThemeSettings
method SimpleContentThemeSettings (line 9) | public SimpleContentThemeSettings()
FILE: src/cloudscribe.SimpleContent.Web/Routes.cs
class Routes (line 6) | public static class Routes
method AddSimpleContentStaticResourceRoutes (line 17) | public static IEndpointRouteBuilder AddSimpleContentStaticResourceRout...
method AddDefaultPageRouteForSimpleContent (line 34) | public static IEndpointRouteBuilder AddDefaultPageRouteForSimpleConten...
method AddCulturePageRouteForSimpleContent (line 96) | public static IEndpointRouteBuilder AddCulturePageRouteForSimpleContent(
method AddDefaultPageRouteForSimpleContent (line 169) | public static IEndpointRouteBuilder AddDefaultPageRouteForSimpleContent(
method AddCulturePageRouteForSimpleContent (line 243) | public static IEndpointRouteBuilder AddCulturePageRouteForSimpleContent(
method AddCustomPageRouteForSimpleContent (line 318) | public static IEndpointRouteBuilder AddCustomPageRouteForSimpleContent(
method AddCultureCustomPageRouteForSimpleContent (line 381) | public static IEndpointRouteBuilder AddCultureCustomPageRouteForSimple...
method AddCustomPageRouteForSimpleContent (line 456) | public static IEndpointRouteBuilder AddCustomPageRouteForSimpleContent(
method AddCultureCustomPageRouteForSimpleContent (line 531) | public static IEndpointRouteBuilder AddCultureCustomPageRouteForSimple...
method GetSegmentpattern (line 607) | private static string GetSegmentpattern(string providedStartSegment)
method AddBlogRoutesForSimpleContent (line 624) | public static IEndpointRouteBuilder AddBlogRoutesForSimpleContent(
method AddCultureBlogRoutesForSimpleContent (line 709) | public static IEndpointRouteBuilder AddCultureBlogRoutesForSimpleContent(
method AddBlogRoutesForSimpleContent (line 803) | public static IEndpointRouteBuilder AddBlogRoutesForSimpleContent(
method AddCultureBlogRoutesForSimpleContent (line 899) | public static IEndpointRouteBuilder AddCultureBlogRoutesForSimpleContent(
FILE: src/cloudscribe.SimpleContent.Web/Routes2x.cs
class Routes2x (line 6) | public static class Routes2x
method AddSimpleContentStaticResourceRoutes (line 8) | public static IRouteBuilder AddSimpleContentStaticResourceRoutes(this ...
method AddDefaultPageRouteForSimpleContent (line 25) | public static IRouteBuilder AddDefaultPageRouteForSimpleContent(this I...
method AddCulturePageRouteForSimpleContent (line 87) | public static IRouteBuilder AddCulturePageRouteForSimpleContent(
method AddDefaultPageRouteForSimpleContent (line 160) | public static IRouteBuilder AddDefaultPageRouteForSimpleContent(
method AddCulturePageRouteForSimpleContent (line 234) | public static IRouteBuilder AddCulturePageRouteForSimpleContent(
method AddCustomPageRouteForSimpleContent (line 309) | public static IRouteBuilder AddCustomPageRouteForSimpleContent(
method AddCultureCustomPageRouteForSimpleContent (line 372) | public static IRouteBuilder AddCultureCustomPageRouteForSimpleContent(
method AddCustomPageRouteForSimpleContent (line 447) | public static IRouteBuilder AddCustomPageRouteForSimpleContent(
method AddCultureCustomPageRouteForSimpleContent (line 522) | public static IRouteBuilder AddCultureCustomPageRouteForSimpleContent(
method GetSegmentTemplate (line 598) | private static string GetSegmentTemplate(string providedStartSegment)
method AddBlogRoutesForSimpleContent (line 615) | public static IRouteBuilder AddBlogRoutesForSimpleContent(
method AddCultureBlogRoutesForSimpleContent (line 700) | public static IRouteBuilder AddCultureBlogRoutesForSimpleContent(
method AddBlogRoutesForSimpleContent (line 794) | public static IRouteBuilder AddBlogRoutesForSimpleContent(
method AddCultureBlogRoutesForSimpleContent (line 890) | public static IRouteBuilder AddCultureBlogRoutesForSimpleContent(
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/BlogService.cs
class BlogService (line 19) | public class BlogService : IBlogService
method BlogService (line 21) | public BlogService(
method EnsureBlogSettings (line 52) | private async Task EnsureBlogSettings()
method PublishReadyDrafts (line 58) | public async Task PublishReadyDrafts(CancellationToken cancellationTok...
method GetPosts (line 96) | public async Task<List<IPost>> GetPosts(bool includeUnpublished, Cance...
method GetPosts (line 107) | public async Task<PagedPostResult> GetPosts(
method GetCount (line 126) | public async Task<int> GetCount(string category, bool includeUnpublish...
method GetCount (line 138) | public async Task<int> GetCount(
method GetRecentPosts (line 157) | public async Task<List<IPost>> GetRecentPosts(int numberToGet, Cancell...
method GetFeaturedPosts (line 168) | public async Task<List<IPost>> GetFeaturedPosts(int numberToGet, Cance...
method GetPosts (line 179) | public async Task<PagedPostResult> GetPosts(
method FirePublishEvent (line 193) | public async Task FirePublishEvent(IPost post)
method FireUnPublishEvent (line 198) | public async Task FireUnPublishEvent(IPost post)
method Create (line 203) | public async Task Create(IPost post)
method Update (line 231) | public async Task Update(IPost post)
method InitializeNewPosts (line 245) | private async Task InitializeNewPosts(string projectId, IPost post, bo...
method GetPost (line 263) | public async Task<IPost> GetPost(string postId, CancellationToken canc...
method GetPostBySlug (line 274) | public async Task<PostResult> GetPostBySlug(string slug, CancellationT...
method CreateSlug (line 285) | public string CreateSlug(string title)
method SlugIsAvailable (line 290) | public async Task<bool> SlugIsAvailable(string slug)
method SlugIsAvailable (line 301) | public async Task<bool> SlugIsAvailable(string projectId, string slug)
method Delete (line 312) | public async Task Delete(string postId)
method GetCategories (line 320) | public async Task<Dictionary<string, int>> GetCategories(bool includeU...
method GetArchives (line 331) | public async Task<Dictionary<string, int>> GetArchives(bool includeUnp...
method CommentsAreOpen (line 342) | public async Task<bool> CommentsAreOpen(IPost post, bool userCanEdit)
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/BlogSiteMapNodeService.cs
class BlogSiteMapNodeService (line 19) | public class BlogSiteMapNodeService : ISiteMapNodeService
method BlogSiteMapNodeService (line 21) | public BlogSiteMapNodeService(
method GetSiteMapNodes (line 58) | public async Task<IEnumerable<ISiteMapNode>> GetSiteMapNodes(
method ResolveUrl (line 103) | private async Task<string> ResolveUrl(IPost post, IProjectSettings pro...
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/BlogUrlResolver.cs
class BlogUrlResolver (line 13) | public class BlogUrlResolver : IBlogUrlResolver
method BlogUrlResolver (line 15) | public BlogUrlResolver(
method ResolveBlogUrl (line 33) | public Task<string> ResolveBlogUrl(IProjectSettings blog)
method ResolvePostUrl (line 48) | public Task<string> ResolvePostUrl(IPost post, IProjectSettings projec...
method ConvertMediaToRelativeUrls (line 112) | public async Task ConvertMediaToRelativeUrls(IPost post)
method ConvertMediaToAbsoluteUrls (line 136) | public Task ConvertMediaToAbsoluteUrls(IPost post, IProjectSettings pr...
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/CreateOrUpdatePostHandler.cs
class CreateOrUpdatePostHandler (line 23) | public class CreateOrUpdatePostHandler : IRequestHandler<CreateOrUpdateP...
method CreateOrUpdatePostHandler (line 25) | public CreateOrUpdatePostHandler(
method Handle (line 61) | public async Task<CommandResult<IPost>> Handle(CreateOrUpdatePostReque...
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/CreateOrUpdatePostRequest.cs
class CreateOrUpdatePostRequest (line 8) | public class CreateOrUpdatePostRequest : IRequest<CommandResult<IPost>>
method CreateOrUpdatePostRequest (line 10) | public CreateOrUpdatePostRequest(
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/InitTemplatedPostHandler.cs
class InitTemplatedPostHandler (line 20) | public class InitTemplatedPostHandler : IRequestHandler<InitTemplatedPos...
method InitTemplatedPostHandler (line 22) | public InitTemplatedPostHandler(
method GetSerializer (line 43) | private IModelSerializer GetSerializer(string name)
method Handle (line 53) | public async Task<CommandResult<IPost>> Handle(InitTemplatedPostReques...
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/InitTemplatedPostRequest.cs
class InitTemplatedPostRequest (line 7) | public class InitTemplatedPostRequest : IRequest<CommandResult<IPost>>
method InitTemplatedPostRequest (line 9) | public InitTemplatedPostRequest(
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/NavigationBlogNodeFinder.cs
class NavigationBlogNodeFinder (line 13) | public class NavigationBlogNodeFinder : IFindCurrentNode
method NavigationBlogNodeFinder (line 15) | public NavigationBlogNodeFinder(
method FindNode (line 24) | public TreeNode<NavigationNode> FindNode(
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/PostEvents.cs
class PostEvents (line 18) | public class PostEvents
method PostEvents (line 20) | public PostEvents(
method HandlePreUpdate (line 47) | public async Task HandlePreUpdate(
method HandlePreDelete (line 67) | public async Task HandlePreDelete(
method HandleCreated (line 87) | public async Task HandleCreated(
method HandleUpdated (line 107) | public async Task HandleUpdated(
method HandlePublished (line 127) | public async Task HandlePublished(
method HandleUnPublished (line 147) | public async Task HandleUnPublished(
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/TeaserCache.cs
class TeaserCache (line 10) | public class TeaserCache
method TeaserCache (line 12) | public TeaserCache(
method GetTeaser (line 26) | public string GetTeaser(string postId)
method AddToCache (line 31) | public void AddToCache(string teaser, string postId)
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/TeaserService.cs
class TeaserService (line 21) | public class TeaserService : ITeaserService
method TeaserService (line 23) | public TeaserService(
method GenerateTeaser (line 48) | public TeaserResult GenerateTeaser(
method IsValidMarkup (line 146) | private bool IsValidMarkup(string html)
method GetMarkupErrors (line 152) | private IEnumerable<HtmlParseError> GetMarkupErrors(string html)
method GetModeDescription (line 161) | private string GetModeDescription(TeaserTruncationMode mode)
method GetContentLength (line 175) | private int GetContentLength(string html, TeaserTruncationMode mode)
method GetDefaultTeaserLength (line 191) | private int GetDefaultTeaserLength(TeaserTruncationMode mode)
method TruncatePost (line 206) | private string TruncatePost(TeaserTruncationMode mode, string content,...
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/TeaserServiceDisabled.cs
class TeaserServiceDisabled (line 8) | public class TeaserServiceDisabled : ITeaserService
method TeaserServiceDisabled (line 10) | public TeaserServiceDisabled()
method GenerateTeaser (line 15) | public TeaserResult GenerateTeaser(
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/UpdateTemplatedPostHandler.cs
class UpdateTemplatedPostHandler (line 25) | public class UpdateTemplatedPostHandler : IRequestHandler<UpdateTemplate...
method UpdateTemplatedPostHandler (line 27) | public UpdateTemplatedPostHandler(
method GetSerializer (line 72) | private IModelSerializer GetSerializer(string name)
method GetFormParser (line 82) | private IParseModelFromForm GetFormParser(string name)
method GetValidator (line 92) | private IValidateTemplateModel GetValidator(string name)
method Handle (line 102) | public async Task<CommandResult<IPost>> Handle(UpdateTemplatedPostRequ...
FILE: src/cloudscribe.SimpleContent.Web/Services/Blog/UpdateTemplatedPostRequest.cs
class UpdateTemplatedPostRequest (line 9) | public class UpdateTemplatedPostRequest : IRequest<CommandResult<IPost>>
method UpdateTemplatedPostRequest (line 11) | public UpdateTemplatedPostRequest(
FILE: src/cloudscribe.SimpleContent.Web/Services/ContentProcessor.cs
class ContentProcessor (line 14) | public class ContentProcessor : IContentProcessor
method ContentProcessor (line 16) | public ContentProcessor(
method Evaluator (line 35) | private static string Evaluator(Match match)
method ShortenUrl (line 41) | private static string ShortenUrl(string url, int max)
method GetPrimaryOrFirstImage (line 115) | private HtmlNode GetPrimaryOrFirstImage(HtmlDocument doc)
method FilterHtmlForRss (line 136) | public ContentFilterResult FilterHtmlForRss(IPost post, IProjectSettin...
method FilterHtmlForList (line 145) | public ContentFilterResult FilterHtmlForList(IPost post, IProjectSetti...
method FilterHtmlForList (line 152) | private ContentFilterResult FilterHtmlForList(IPost post, IProjectSett...
method ConvertMarkdownToHtml (line 259) | public string ConvertMarkdownToHtml(string markdown)
method FilterHtml (line 270) | public string FilterHtml(IContentItem p, IProjectSettings projectSetti...
method MapImageUrlsToCdn (line 286) | public string MapImageUrlsToCdn(
method ConvertMediaUrlsToRelative (line 369) | public Task<string> ConvertMediaUrlsToRelative(
method ConvertUrlsToAbsolute (line 416) | public string ConvertUrlsToAbsolute(
method ExtractFirstImageUrl (line 460) | public string ExtractFirstImageUrl(IContentItem item, IUrlHelper urlHe...
method ExtractFirstImageUrl (line 512) | public string ExtractFirstImageUrl(string htmlInput, string fallbackIm...
method ExtractFirstImageDimensions (line 529) | public ImageSizeResult ExtractFirstImageDimensions(IContentItem item)
method ExtractFirstImageDimensions (line 534) | public ImageSizeResult ExtractFirstImageDimensions(string htmlInput, s...
method ExtractDims (line 557) | private ImageSizeResult ExtractDims(string[] atts, string fallbackWidt...
method RemoveImageStyleAttribute (line 580) | public string RemoveImageStyleAttribute(
method FilterComment (line 620) | public string FilterComment(IComment c)
method FilterCommentLinks (line 625) | public string FilterCommentLinks(string rawComment)
FILE: src/cloudscribe.SimpleContent.Web/Services/CultureHelper.cs
class CultureHelper (line 8) | public class CultureHelper
method CultureHelper (line 10) | public CultureHelper(
method IsDefaultCulture (line 22) | public bool IsDefaultCulture()
method CurrentUICultureName (line 27) | public string CurrentUICultureName()
method UseCultureRoutesAndProjects (line 32) | public bool UseCultureRoutesAndProjects()
FILE: src/cloudscribe.SimpleContent.Web/Services/DefaultAuthorNameResolver.cs
class DefaultAuthorNameResolver (line 8) | public class DefaultAuthorNameResolver : IAuthorNameResolver
method GetAuthorName (line 10) | public Task<string> GetAuthorName(ClaimsPrincipal user, CancellationTo...
FILE: src/cloudscribe.SimpleContent.Web/Services/DefaultProjectSettingsResolver.cs
class DefaultProjectSettingsResolver (line 14) | public class DefaultProjectSettingsResolver : IProjectSettingsResolver
method DefaultProjectSettingsResolver (line 16) | public DefaultProjectSettingsResolver(
method GetCurrentProjectSettings (line 25) | public async Task<IProjectSettings> GetCurrentProjectSettings(Cancella...
FILE: src/cloudscribe.SimpleContent.Web/Services/DefaultTimeZoneIdResolver.cs
class DefaultTimeZoneIdResolver (line 8) | public class DefaultTimeZoneIdResolver : ITimeZoneIdResolver
method DefaultTimeZoneIdResolver (line 10) | public DefaultTimeZoneIdResolver(
method GetUserTimeZoneId (line 19) | public async Task<string> GetUserTimeZoneId(CancellationToken cancella...
method GetSiteTimeZoneId (line 26) | public async Task<string> GetSiteTimeZoneId(CancellationToken cancella...
FILE: src/cloudscribe.SimpleContent.Web/Services/FileSystemMediaProcessor.cs
class FileSystemMediaProcessor (line 18) | public class FileSystemMediaProcessor : IMediaProcessor
method FileSystemMediaProcessor (line 20) | public FileSystemMediaProcessor(
method ResolveMediaUrl (line 32) | public virtual Task<string> ResolveMediaUrl(string mediaVirtualPath, s...
method SaveMedia (line 39) | public virtual Task SaveMedia(string mediaVirtualPath, string fileName...
method EnsureFolderPaths (line 50) | protected void EnsureFolderPaths(string existingPath, string[] folderN...
method EnsureFsPath (line 77) | private void EnsureFsPath(string mediaVirtualPath)
FILE: src/cloudscribe.SimpleContent.Web/Services/HttpRequestExtensions.cs
class HttpRequestExtensions (line 10) | public static class HttpRequestExtensions
method RawUrl (line 12) | public static string RawUrl(this HttpRequest request)
method AppBaseUrl (line 26) | public static string AppBaseUrl(this HttpRequest request)
FILE: src/cloudscribe.SimpleContent.Web/Services/IContentProcessor.cs
type IContentProcessor (line 7) | public interface IContentProcessor
method ExtractFirstImageDimensions (line 9) | ImageSizeResult ExtractFirstImageDimensions(IContentItem item);
method ExtractFirstImageDimensions (line 10) | ImageSizeResult ExtractFirstImageDimensions(string htmlInput, string f...
method ExtractFirstImageUrl (line 11) | string ExtractFirstImageUrl(IContentItem item, IUrlHelper urlHelper, s...
method FilterHtml (line 12) | string FilterHtml(IContentItem p, IProjectSettings projectSettings);
method FilterHtmlForList (line 13) | ContentFilterResult FilterHtmlForList(IPost post, IProjectSettings set...
method FilterHtmlForRss (line 14) | ContentFilterResult FilterHtmlForRss(IPost post, IProjectSettings sett...
method FilterComment (line 15) | string FilterComment(IComment comment);
method ConvertMarkdownToHtml (line 17) | string ConvertMarkdownToHtml(string markdown);
method ConvertMediaUrlsToRelative (line 20) | Task<string> ConvertMediaUrlsToRelative(string absoluteBaseMediaUrl, s...
method ConvertUrlsToAbsolute (line 21) | string ConvertUrlsToAbsolute(string absoluteBaseMediaUrl, string htmlI...
method RemoveImageStyleAttribute (line 22) | string RemoveImageStyleAttribute(string htmlInput);
FILE: src/cloudscribe.SimpleContent.Web/Services/JsonModelSerializer.cs
class JsonModelSerializer (line 9) | public class JsonModelSerializer : IModelSerializer
method JsonModelSerializer (line 11) | public JsonModelSerializer()
method Serialize (line 18) | public string Serialize(string typeName, object obj)
method Deserialize (line 33) | public object Deserialize(string typeName, string serializedObject)
FILE: src/cloudscribe.SimpleContent.Web/Services/MarkdownProcessor.cs
class MarkdownProcessor (line 11) | public class MarkdownProcessor : IMarkdownProcessor
method ExtractFirstImageUrl (line 14) | public string ExtractFirstImageUrl(string markdown)
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/CreateOrUpdatePageHandler.cs
class CreateOrUpdatePageHandler (line 21) | public class CreateOrUpdatePageHandler : IRequestHandler<CreateOrUpdateP...
method CreateOrUpdatePageHandler (line 23) | public CreateOrUpdatePageHandler(
method Handle (line 53) | public async Task<CommandResult<IPage>> Handle(CreateOrUpdatePageReque...
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/CreateOrUpdatePageRequest.cs
class CreateOrUpdatePageRequest (line 8) | public class CreateOrUpdatePageRequest : IRequest<CommandResult<IPage>>
method CreateOrUpdatePageRequest (line 10) | public CreateOrUpdatePageRequest(
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/DraftPublishService.cs
class DraftPublishService (line 11) | public class DraftPublishService
method DraftPublishService (line 13) | public DraftPublishService(
method PublishReadyDrafts (line 42) | public async Task PublishReadyDrafts(CancellationToken cancellationTok...
method Update (line 82) | private async Task Update(IPage page, IProjectSettings settings)
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/InitTemplatedPageHandler.cs
class InitTemplatedPageHandler (line 21) | public class InitTemplatedPageHandler : IRequestHandler<InitTemplatedPag...
method InitTemplatedPageHandler (line 23) | public InitTemplatedPageHandler(
method GetSerializer (line 47) | private IModelSerializer GetSerializer(string name)
method Handle (line 57) | public async Task<CommandResult<IPage>> Handle(InitTemplatedPageReques...
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/InitTemplatedPageRequest.cs
class InitTemplatedPageRequest (line 7) | public class InitTemplatedPageRequest : IRequest<CommandResult<IPage>>
method InitTemplatedPageRequest (line 9) | public InitTemplatedPageRequest(
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/JsSecuritySanitizer.cs
class JsSecuritySanitizer (line 38) | public class JsSecuritySanitizer
method IsSafe (line 80) | public bool IsSafe(string script, out List<string> issues)
method TraverseNode (line 99) | private void TraverseNode(Node node, List<string> issues)
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PageEditContext.cs
class PageEditContext (line 5) | public class PageEditContext
method PageEditContext (line 7) | public PageEditContext(
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PageEditContextRequest.cs
class PageEditContextRequest (line 7) | public class PageEditContextRequest : IRequest<PageEditContext>
method PageEditContextRequest (line 9) | public PageEditContextRequest(
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PageEditContextRequestHandler.cs
class PageEditContextRequestHandler (line 16) | public class PageEditContextRequestHandler : IRequestHandler<PageEditCon...
method PageEditContextRequestHandler (line 18) | public PageEditContextRequestHandler(
method Handle (line 36) | public async Task<PageEditContext> Handle(PageEditContextRequest reque...
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PageEvents.cs
class PageEvents (line 18) | public class PageEvents
method PageEvents (line 20) | public PageEvents(
method HandlePreUpdate (line 50) | public async Task HandlePreUpdate(
method HandlePreDelete (line 70) | public async Task HandlePreDelete(
method HandleCreated (line 90) | public async Task HandleCreated(
method HandleUpdated (line 110) | public async Task HandleUpdated(
method HandlePublished (line 130) | public async Task HandlePublished(
method HandleUnPublished (line 150) | public async Task HandleUnPublished(
method HandleMoved (line 171) | public async Task HandleMoved(
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PageService.cs
class PageService (line 25) | public class PageService : IPageService
method PageService (line 27) | public PageService(
method EnsureProjectSettings (line 62) | private async Task EnsureProjectSettings()
method SlugIsAvailable (line 69) | public async Task<bool> SlugIsAvailable(string slug)
method Create (line 79) | public async Task Create(IPage page)
method Update (line 114) | public async Task Update(IPage page)
method DeletePage (line 122) | public async Task DeletePage(string pageId)
method HandleChildPagesBeforeDelete (line 143) | private async Task HandleChildPagesBeforeDelete(string pageId)
method GetPage (line 155) | public async Task<IPage> GetPage(string pageId, CancellationToken canc...
method GetPageBySlug (line 166) | public async Task<IPage> GetPageBySlug(string slug, CancellationToken ...
method GetAllPages (line 177) | public async Task<List<IPage>> GetAllPages(string projectId, Cancellat...
method GetRootPages (line 185) | public async Task<List<IPage>> GetRootPages(CancellationToken cancella...
method GetChildPages (line 194) | public async Task<List<IPage>> GetChildPages(string pageId, Cancellati...
method GetNextChildPageOrder (line 204) | public async Task<int> GetNextChildPageOrder(string pageSlug, Cancella...
method Move (line 224) | public async Task<PageActionResult> Move(PageMoveModel model)
method SortChildPages (line 318) | public async Task SortChildPages(string pageId)
method SortChildPagesAlpha (line 330) | public async Task<PageActionResult> SortChildPagesAlpha(string pageId)
method GetPageTreeJson (line 347) | public async Task<string> GetPageTreeJson(ClaimsPrincipal user, Func<I...
method BuildPageJson (line 375) | private async Task BuildPageJson(ClaimsPrincipal user, StringBuilder s...
method GetPublishingStatus (line 418) | private string GetPublishingStatus(IPage page)
method FirePublishEvent (line 428) | public async Task FirePublishEvent(IPage page)
method FireUnPublishEvent (line 433) | public async Task FireUnPublishEvent(IPage page)
method Encode (line 438) | private string Encode(string input)
method JsonEscape (line 443) | private static string JsonEscape(string s)
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PageUrlResolver.cs
class PageUrlResolver (line 11) | public class PageUrlResolver : IPageUrlResolver
method PageUrlResolver (line 13) | public PageUrlResolver(
method ResolvePageUrl (line 31) | public Task<string> ResolvePageUrl(IPage page)
method ConvertMediaToRelativeUrls (line 43) | public async Task ConvertMediaToRelativeUrls(IPage page)
method ConvertMediaToAbsoluteUrls (line 69) | public Task ConvertMediaToAbsoluteUrls(IPage page, IProjectSettings pr...
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PageViewContext.cs
class PageViewContext (line 5) | public class PageViewContext
method PageViewContext (line 7) | public PageViewContext(
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PageViewContextRequest.cs
class PageViewContextRequest (line 7) | public class PageViewContextRequest : IRequest<PageViewContext>
method PageViewContextRequest (line 9) | public PageViewContextRequest(
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PageViewContextRequestHandler.cs
class PageViewContextRequestHandler (line 16) | public class PageViewContextRequestHandler : IRequestHandler<PageViewCon...
method PageViewContextRequestHandler (line 18) | public PageViewContextRequestHandler(
method Handle (line 36) | public async Task<PageViewContext> Handle(PageViewContextRequest reque...
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PagesNavigationNodePermissionResolver.cs
class PagesNavigationNodePermissionResolver (line 17) | public class PagesNavigationNodePermissionResolver : INavigationNodePerm...
method PagesNavigationNodePermissionResolver (line 19) | public PagesNavigationNodePermissionResolver(
method ShouldAllowView (line 31) | public virtual async Task<bool> ShouldAllowView(TreeNode<NavigationNod...
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/PagesNavigationTreeBuilder.cs
class PagesNavigationTreeBuilder (line 20) | public class PagesNavigationTreeBuilder : INavigationTreeBuilder
method PagesNavigationTreeBuilder (line 22) | public PagesNavigationTreeBuilder(
method BuildTree (line 55) | public async Task<TreeNode<NavigationNode>> BuildTree(NavigationTreeBu...
method BuildTreeInternal (line 66) | private async Task<TreeNode<NavigationNode>> BuildTreeInternal(Navigat...
method MakeBlogNode (line 187) | private void MakeBlogNode(IProjectSettings project, IUrlHelper urlHelp...
method AddChildNodes (line 211) | private async Task AddChildNodes(
method SetUrl (line 245) | private void SetUrl(NavigationNode node, IPage page, IUrlHelper urlHel...
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/UpdateTemplatedPageHandler.cs
class UpdateTemplatedPageHandler (line 25) | public class UpdateTemplatedPageHandler : IRequestHandler<UpdateTemplate...
method UpdateTemplatedPageHandler (line 27) | public UpdateTemplatedPageHandler(
method GetSerializer (line 69) | private IModelSerializer GetSerializer(string name)
method GetFormParser (line 79) | private IParseModelFromForm GetFormParser(string name)
method GetValidator (line 89) | private IValidateTemplateModel GetValidator(string name)
method Handle (line 99) | public async Task<CommandResult<IPage>> Handle(UpdateTemplatedPageRequ...
FILE: src/cloudscribe.SimpleContent.Web/Services/Page/UpdateTemplatedPageRequest.cs
class UpdateTemplatedPageRequest (line 9) | public class UpdateTemplatedPageRequest : IRequest<CommandResult<IPage>>
method UpdateTemplatedPageRequest (line 11) | public UpdateTemplatedPage
Copy disabled (too large)
Download .json
Condensed preview — 1723 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (29,238K chars).
[
{
"path": ".gitattributes",
"chars": 784,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs diff=csharp\n*.sln"
},
{
"path": ".github/workflows/cloudscribe-develop.yml",
"chars": 1219,
"preview": "# This workflow will build a .NET project\n# For more information see: https://docs.github.com/en/actions/automating-buil"
},
{
"path": ".github/workflows/cloudscribe-master.yml",
"chars": 817,
"preview": "# This workflow will build a .NET project\n # For more information see: https://docs.github.com/en/actions/automating-bui"
},
{
"path": ".github/workflows/nuget-push-to-production.yml",
"chars": 2399,
"preview": "name: NuGet Push to Production - ESDM Nexus and nuget.org\n\non:\n workflow_dispatch:\n\njobs:\n push-nuget:\n runs-on: ub"
},
{
"path": ".gitignore",
"chars": 4748,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User"
},
{
"path": ".travis.yml",
"chars": 430,
"preview": "language: csharp\nsolution: cloudscribe.SimpleContent.sln\nsudo: false\ndist: xenial\nmono: none\ndotnet: 3.0.100\nenv:\n glob"
},
{
"path": ".vscode/launch.json",
"chars": 2492,
"preview": "{\n // Use IntelliSense to learn about possible attributes.\n // Hover to view descriptions of existing attributes.\n"
},
{
"path": ".vscode/tasks.json",
"chars": 437,
"preview": "{\n // See https://go.microsoft.com/fwlink/?LinkId=733558\n // for the documentation about the tasks.json format\n "
},
{
"path": "CONTRIBUTING.md",
"chars": 283,
"preview": "# Contributing to cloudscribe\n\nThis project is part of the cloudscribe set of projects which are all being managed under"
},
{
"path": "LICENSE",
"chars": 11358,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "NuGet.Config",
"chars": 73,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n</configuration>\n"
},
{
"path": "README.md",
"chars": 7477,
"preview": "# cloudscribe SimpleContent\n\nA simple, yet flexible content and blog engine for ASP.NET Core that can work with or witho"
},
{
"path": "appveyor-cake-backup.yml",
"chars": 384,
"preview": "image: Visual Studio 2019\nenvironment:\n nodejs_version: \"13.0.1\"\ninstall:\n # Get the latest stable version of Node.js "
},
{
"path": "appveyor.yml",
"chars": 437,
"preview": "image: Visual Studio 2022\nenvironment:\n nodejs_version: \"13.0.1\"\n# Install scripts. (runs after repo cloning)\ninstall:\n"
},
{
"path": "build.cake",
"chars": 1009,
"preview": "#tool nuget:?package=xunit.runner.console&version=2.3.0\n#tool nuget:?package=xunit.runner.visualstudio&version=2.3.0\n\n#l"
},
{
"path": "build.ps1",
"chars": 7437,
"preview": "##########################################################################\n# This is the Cake bootstrapper script for Po"
},
{
"path": "build.sh",
"chars": 2939,
"preview": "#!/usr/bin/env bash\n\n##########################################################################\n# This is the Cake boots"
},
{
"path": "cake/paths.cake",
"chars": 653,
"preview": "public static class Paths\n{\n public static FilePath SolutionFile => \"cloudscribe.SimpleContent.sln\";\n \n}\n\npublic s"
},
{
"path": "cloudscribe.SimpleContent.code-workspace",
"chars": 60,
"preview": "{\n\t\"folders\": [\n\t\t{\n\t\t\t\"path\": \".\"\n\t\t}\n\t],\n\t\"settings\": {}\n}"
},
{
"path": "cloudscribe.SimpleContent.sln",
"chars": 13247,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.12.355"
},
{
"path": "package.json",
"chars": 182,
"preview": "{\n \"name\": \"approot\",\n \"version\": \"1.0.0\",\n \"private\": true,\n \"devDependencies\": {\n \n },\n\n \"scripts\": {\n \"po"
},
{
"path": "samples/README.md",
"chars": 644,
"preview": "# cloudscribe SimpleContent Samples \n\nAll of the samples have been moved to https://github.com/joeaudette/cloudscribe.St"
},
{
"path": "src/cloudscribe.ContentUtils/ExcerptHelper.cs",
"chars": 7593,
"preview": "using cloudscribe.HtmlAgilityPack;\nusing System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing Sy"
},
{
"path": "src/cloudscribe.ContentUtils/ExcerptResult.cs",
"chars": 177,
"preview": "namespace cloudscribe.ContentUtils\n{\n public class ExcerptResult\n {\n public string HtmlContent { get; set;"
},
{
"path": "src/cloudscribe.ContentUtils/MarkdownHelper.cs",
"chars": 1251,
"preview": "using Markdig;\nusing Markdig.Syntax;\nusing Markdig.Syntax.Inlines;\nusing System;\nusing System.Linq;\n\nnamespace cloudscr"
},
{
"path": "src/cloudscribe.ContentUtils/README.md",
"chars": 895,
"preview": "# cloudscribe.ContentUtils\n\n[](https://www.nuget.or"
},
{
"path": "src/cloudscribe.ContentUtils/SlugHelper.cs",
"chars": 1991,
"preview": "using System.Collections.Generic;\nusing System.Globalization;\nusing System.Text;\n\nnamespace cloudscribe.ContentUtils\n{\n"
},
{
"path": "src/cloudscribe.ContentUtils/Truncation.cs",
"chars": 10008,
"preview": "using System;\nusing System.Linq;\n\nnamespace cloudscribe.ContentUtils\n{\n public static class Truncation\n {\n "
},
{
"path": "src/cloudscribe.ContentUtils/cloudscribe.ContentUtils.csproj",
"chars": 1069,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <Description>Content utilities for html and markdown</Descripti"
},
{
"path": "src/cloudscribe.Core.SimpleContent/AuthorNameResolver.cs",
"chars": 1372,
"preview": "using cloudscribe.Core.Models;\nusing cloudscribe.SimpleContent.Models;\nusing cloudscribe.SimpleContent.Web;\nusing Syste"
},
{
"path": "src/cloudscribe.Core.SimpleContent/ClaimsPrincipalExtensions.cs",
"chars": 3137,
"preview": "//// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\n//// "
},
{
"path": "src/cloudscribe.Core.SimpleContent/ContentSettingsUIConfig.cs",
"chars": 476,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace cloudscribe.Core.SimpleContent\n{\n publ"
},
{
"path": "src/cloudscribe.Core.SimpleContent/Controllers/ContentCloningController.cs",
"chars": 16483,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See"
},
{
"path": "src/cloudscribe.Core.SimpleContent/Controllers/ContentSettingsController.cs",
"chars": 13929,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.Core.SimpleContent/Controllers/CultureMetaweblogController.cs",
"chars": 1307,
"preview": "using cloudscribe.MetaWeblog;\nusing cloudscribe.MetaWeblog.Controllers;\nusing cloudscribe.MetaWeblog.Models;\nusing Micr"
},
{
"path": "src/cloudscribe.Core.SimpleContent/Controllers/CultureRssController.cs",
"chars": 947,
"preview": "using cloudscribe.Syndication.Models.Rss;\nusing cloudscribe.Syndication.Web.Controllers;\nusing Microsoft.AspNetCore.Mvc"
},
{
"path": "src/cloudscribe.Core.SimpleContent/Controllers/CultureSiteMapController.cs",
"chars": 759,
"preview": "using cloudscribe.Web.SiteMap;\nusing cloudscribe.Web.SiteMap.Controllers;\nusing Microsoft.AspNetCore.Mvc;\nusing Microso"
},
{
"path": "src/cloudscribe.Core.SimpleContent/Controllers/FolderMetaweblogController.cs",
"chars": 1304,
"preview": "using cloudscribe.MetaWeblog;\nusing cloudscribe.MetaWeblog.Controllers;\nusing cloudscribe.MetaWeblog.Models;\nusing Micr"
},
{
"path": "src/cloudscribe.Core.SimpleContent/Controllers/FolderRssController.cs",
"chars": 943,
"preview": "using cloudscribe.Syndication.Models.Rss;\nusing cloudscribe.Syndication.Web.Controllers;\nusing Microsoft.AspNetCore.Mvc"
},
{
"path": "src/cloudscribe.Core.SimpleContent/CoreProjectEmailService.cs",
"chars": 3650,
"preview": "using cloudscribe.Core.Models;\nusing cloudscribe.Core.SimpleContent.ViewModels;\n// Copyright (c) Source Tree Solutions,"
},
{
"path": "src/cloudscribe.Core.SimpleContent/CustomClaimProvider.cs",
"chars": 1359,
"preview": "\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing cloudscribe.Co"
},
{
"path": "src/cloudscribe.Core.SimpleContent/EventHandlers/HandleRoleDeletred.cs",
"chars": 1855,
"preview": "using cloudscribe.Core.Models;\nusing cloudscribe.Core.Models.EventHandlers;\nusing cloudscribe.SimpleContent.Models;\nusi"
},
{
"path": "src/cloudscribe.Core.SimpleContent/EventHandlers/HandleRoleUpdated.cs",
"chars": 3720,
"preview": "using cloudscribe.Core.Models;\nusing cloudscribe.Core.Models.EventHandlers;\nusing cloudscribe.SimpleContent.Models;\nusi"
},
{
"path": "src/cloudscribe.Core.SimpleContent/MultiTenantBlogRoutes.cs",
"chars": 12492,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.Core.SimpleContent/MultiTenantPageRoutes.cs",
"chars": 9574,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.Core.SimpleContent/ProjectSecurityResolver.cs",
"chars": 3468,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.Core.SimpleContent/README.md",
"chars": 909,
"preview": "# cloudscribe.Core.SimpleContent\n\n[](https://"
},
{
"path": "src/cloudscribe.Core.SimpleContent/Resources.cs",
"chars": 325,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace cloudscribe"
},
{
"path": "src/cloudscribe.Core.SimpleContent/SiteFileSystemMediaProcessor.cs",
"chars": 2724,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.Core.SimpleContent/SiteNavigationCacheKeyResolver.cs",
"chars": 1087,
"preview": "using cloudscribe.Core.Models;\nusing cloudscribe.SimpleContent.Web.Services;\nusing cloudscribe.Web.Navigation;\nusing cl"
},
{
"path": "src/cloudscribe.Core.SimpleContent/SiteProjectSettingsResolver.cs",
"chars": 3871,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.Core.SimpleContent/SiteRoleSelectorProperties.cs",
"chars": 2116,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.Core.SimpleContent/SiteSimpleContentThemeHelper.cs",
"chars": 1730,
"preview": "using cloudscribe.Core.Models;\nusing cloudscribe.SimpleContent.Web.Design;\nusing Microsoft.Extensions.Options;\n\nnamespa"
},
{
"path": "src/cloudscribe.Core.SimpleContent/StartupExtenstions.cs",
"chars": 3599,
"preview": "using cloudscribe.Core.Models.EventHandlers;\nusing cloudscribe.Core.SimpleContent;\nusing cloudscribe.Core.SimpleContent"
},
{
"path": "src/cloudscribe.Core.SimpleContent/VersionProvider.cs",
"chars": 1035,
"preview": "using cloudscribe.Core.SimpleContent.Integration;\nusing cloudscribe.Versioning;\nusing cloudscribe.Web.Common;\nusing Sys"
},
{
"path": "src/cloudscribe.Core.SimpleContent/ViewModels/ContentCloningViewModel.cs",
"chars": 2011,
"preview": "// Copyright (c) Idox Software Ltd All rights reserved.\n// Licensed under the Apache License, Version 2.0.\n// See Licens"
},
{
"path": "src/cloudscribe.Core.SimpleContent/ViewModels/ContentSettingsViewModel.cs",
"chars": 5607,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.Core.SimpleContent/ViewModels/CoreCommentNotificationModel.cs",
"chars": 886,
"preview": "using cloudscribe.Core.Models;\nusing cloudscribe.SimpleContent.Models;\nusing System;\nusing System.Collections.Generic;\n"
},
{
"path": "src/cloudscribe.Core.SimpleContent/cloudscribe.Core.SimpleContent.csproj",
"chars": 2352,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <Description>integration library for integrating cloudscribe Si"
},
{
"path": "src/cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5/README.md",
"chars": 998,
"preview": "# cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5\n\n[ Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.MetaWeblog/IMetaWeblogService.cs",
"chars": 4166,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.MetaWeblog/MetaWeblogRequest.cs",
"chars": 2744,
"preview": "\n\nusing cloudscribe.MetaWeblog.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System."
},
{
"path": "src/cloudscribe.MetaWeblog/MetaWeblogRequestParser.cs",
"chars": 26964,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.MetaWeblog/MetaWeblogRequestProcessor.cs",
"chars": 10508,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.MetaWeblog/MetaWeblogRequestValidator.cs",
"chars": 3207,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.MetaWeblog/MetaWeblogResult.cs",
"chars": 2543,
"preview": "\nusing cloudscribe.MetaWeblog.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.T"
},
{
"path": "src/cloudscribe.MetaWeblog/MetaWeblogResultExtensions.cs",
"chars": 828,
"preview": "using cloudscribe.MetaWeblog.Models;\n\nnamespace cloudscribe.MetaWeblog\n{\n public static class MetaWeblogResultExtens"
},
{
"path": "src/cloudscribe.MetaWeblog/MetaWeblogResultFormatter.cs",
"chars": 52063,
"preview": "// Copyright (c) Source Tree Solutions, LLC. All rights reserved.\n// Licensed under the Apache License, Version 2.0. Se"
},
{
"path": "src/cloudscribe.MetaWeblog/MetaWeblogSecurityResult.cs",
"chars": 1344,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace cloudscribe"
},
{
"path": "src/cloudscribe.MetaWeblog/Models/ApiOptions.cs",
"chars": 585,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace cloudscribe"
},
{
"path": "src/cloudscribe.MetaWeblog/Models/AuthorStruct.cs",
"chars": 426,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace cloudscribe"
},
{
"path": "src/cloudscribe.MetaWeblog/Models/BlogInfoStruct.cs",
"chars": 542,
"preview": "\n\nnamespace cloudscribe.MetaWeblog.Models\n{\n /// <summary>\n /// MetaWeblog BlogInfo struct\n /// returned a"
},
{
"path": "src/cloudscribe.MetaWeblog/Models/CategoryStruct.cs",
"chars": 400,
"preview": "\n\nnamespace cloudscribe.MetaWeblog.Models\n{\n /// <summary>\n /// MetaWeblog Category struct\n /// returned a"
},
{
"path": "src/cloudscribe.MetaWeblog/Models/FaultStruct.cs",
"chars": 265,
"preview": "\n\nnamespace cloudscribe.MetaWeblog.Models\n{\n /// <summary>\n /// MetaWeblog Fault struct\n /// returned when"
},
{
"path": "src/cloudscribe.MetaWeblog/Models/MediaInfoStruct.cs",
"chars": 469,
"preview": "\n\nnamespace cloudscribe.MetaWeblog.Models\n{\n /// <summary>\n /// MetaWeblog MediaInfo struct\n /// returned "
},
{
"path": "src/cloudscribe.MetaWeblog/Models/MediaObjectStruct.cs",
"chars": 550,
"preview": "\n\nnamespace cloudscribe.MetaWeblog.Models\n{\n /// <summary>\n /// MetaWeblog MediaObject struct\n /// passed "
},
{
"path": "src/cloudscribe.MetaWeblog/Models/MetaWeblogException.cs",
"chars": 881,
"preview": "using System;\n\nnamespace cloudscribe.MetaWeblog.Models\n{\n public class MetaWeblogException : Exception\n {\n "
},
{
"path": "src/cloudscribe.MetaWeblog/Models/PageStruct.cs",
"chars": 1968,
"preview": "using System;\n\n\nnamespace cloudscribe.MetaWeblog.Models\n{\n /// <summary>\n /// wp Page Struct\n /// </summary> \n"
},
{
"path": "src/cloudscribe.MetaWeblog/Models/PostStruct.cs",
"chars": 2490,
"preview": "using System;\nusing System.Collections.Generic;\n\n\nnamespace cloudscribe.MetaWeblog.Models\n{\n /// <summary>\n /// M"
},
{
"path": "src/cloudscribe.MetaWeblog/Models/UserInfoStruct.cs",
"chars": 919,
"preview": "\nnamespace cloudscribe.MetaWeblog.Models\n{\n /// <summary>\n /// MetaWeblog UserInfo struct\n /// returned from G"
},
{
"path": "src/cloudscribe.MetaWeblog/README.md",
"chars": 900,
"preview": "# cloudscribe.MetaWeblog\n\n[](https://www.nuget.org/pa"
},
{
"path": "src/cloudscribe.MetaWeblog/ServiceCollectionExtensions.cs",
"chars": 1126,
"preview": "using cloudscribe.MetaWeblog;\nusing cloudscribe.MetaWeblog.Models;\nusing Microsoft.Extensions.Configuration;\nusing Micr"
},
{
"path": "src/cloudscribe.MetaWeblog/Utils.cs",
"chars": 3594,
"preview": "\nusing System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing System.Threading."
},
{
"path": "src/cloudscribe.MetaWeblog/XmlResult.cs",
"chars": 1475,
"preview": "using Microsoft.AspNetCore.Mvc;\nusing System.IO;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml"
},
{
"path": "src/cloudscribe.MetaWeblog/cloudscribe.MetaWeblog.csproj",
"chars": 1029,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <Description>a re-useable implementation of the metaweblog api "
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/README.md",
"chars": 973,
"preview": "# cloudscribe.SimpleContent.CompiledViews.Bootstrap5\n\n[ ? headerClass = "
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/BlogMetaPartial.cshtml",
"chars": 2247,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@using cloudscribe.Web.Common.Extensions\n@{\n var image"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/BlogScriptsPartial.cshtml",
"chars": 955,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@if (Model.Template != null)\n{\n <environment names=\"De"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/BlogStylePartial.cshtml",
"chars": 1090,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n<link rel=\"stylesheet\" href=\"~/csscsr/css/blog-common.min"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/CategoryListPartial.cshtml",
"chars": 805,
"preview": "@model Dictionary<string, int>\n@inject IStringLocalizer<SimpleContent> sr\n@inject IBlogRoutes blogRoutes\n@inject ISimpl"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/CommentLinkDetail.cshtml",
"chars": 2233,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject ISimpleContentThemeHelper themeHelper\n@inject ISt"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/CommentLinkList.cshtml",
"chars": 2004,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject ISimpleContentThemeHelper themeHelper\n@inject ISt"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/CommentWrapperPartial.cshtml",
"chars": 927,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@if ((Model.Cu"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/DisqusCommentsPartial.cshtml",
"chars": 1086,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@using Microsoft.AspNetCore.Http.Features\n@inject IString"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/DraftInfoPartial.cshtml",
"chars": 2074,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject IBlogR"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/Edit.cshtml",
"chars": 9073,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject IB"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditContentHtmlPartial.cshtml",
"chars": 914,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject ISummernoteOptionsResolver summernoteOptionsR"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditContentMarkdownPartial.cshtml",
"chars": 1646,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject ISummernoteOptionsResolver summernoteOptionsR"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditCorrelationKeyPartial.cshtml",
"chars": 499,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@* comment"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditDraftPubDatePartial.cshtml",
"chars": 521,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@{ \n va"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditHistoryInfoPartial.cshtml",
"chars": 911,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@if (Model"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditImageUrlPartial.cshtml",
"chars": 764,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@* comment"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditPubDate.cshtml",
"chars": 687,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n<input asp"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditScriptsPartial.cshtml",
"chars": 1520,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n<script src=\"~/cr/js/jquery.validate.min.js\"></script"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditSlugPartial.cshtml",
"chars": 431,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@* comment"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditStylesPartial.cshtml",
"chars": 410,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n<link rel=\"stylesheet\" href=\"~/cr/css/bootstrap4-date"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditTeaserDisabledPartial.cshtml",
"chars": 116,
"preview": "<input type=\"hidden\" name=\"TeaserOverride\" value=\"\" />\n<input type=\"hidden\" name=\"SuppressTeaser\" value=\"false\" />\n"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditTeaserHtmlPartial.cshtml",
"chars": 1490,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject ISummernoteOptionsResolver summernoteOptionsR"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditTeaserMarkdownPartial.cshtml",
"chars": 1641,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditViewModel\n@inject ISummernoteOptionsResolver summernoteOptionsR"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplate.cshtml",
"chars": 8958,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplateCorrelationKeyPartial.cshtml",
"chars": 511,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplateDraftPubDatePartial.cshtml",
"chars": 533,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplateHistoryInfoPartial.cshtml",
"chars": 923,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplateImageUrlPartial.cshtml",
"chars": 776,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplatePubDate.cshtml",
"chars": 699,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplateScriptsPartial.cshtml",
"chars": 1544,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n<script src=\"~/cr/js/jquery.validate.min."
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplateSlugPartial.cshtml",
"chars": 443,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplateStylesPartial.cshtml",
"chars": 878,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n<link rel=\"stylesheet\" href=\"~/cr/css/boo"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/EditWithTemplateTeaserHtmlPartial.cshtml",
"chars": 1502,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PostEditWithTemplateViewModel\n@inject ISummernoteOptionsResolver summer"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/History.cshtml",
"chars": 2359,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.ContentHistoryViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inj"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/HistoryInfoPartial.cshtml",
"chars": 2283,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject IBlogR"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/Index.cshtml",
"chars": 2590,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject IUrlHelper myhelper\n@inject IStringLocalizer<Simp"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/NewPost.cshtml",
"chars": 818,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.NewContentViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject "
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/NextPreviousPartial.cshtml",
"chars": 1117,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject ISimpl"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/Post.cshtml",
"chars": 1569,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@{\n var disqusCommentCountScriptPath = \"//\" + Model.Pr"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/PostContentBodyPartial.cshtml",
"chars": 965,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject IConte"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/PostDetailPartial.cshtml",
"chars": 6335,
"preview": "@using cloudscribe.SimpleContent.Web\n@using cloudscribe.SimpleContent.Models\n@using Microsoft.AspNetCore.Mvc.ViewFeatur"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/PostListPartial.cshtml",
"chars": 177,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@foreach (var post in Model.Posts)\n{\n Model.TmpPost = "
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/PostPartial.cshtml",
"chars": 5548,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject ISimpl"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/RelatedPostsPartial.cshtml",
"chars": 286,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@{\n}\n@if (Model.CurrentPost != null && Model.CurrentPost."
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/SideBarPartial.cshtml",
"chars": 507,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@if (Model.ProjectSettings.ShowAboutBox)\n{\n <partial n"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Blog/ToolsPartial.cshtml",
"chars": 1498,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel\n@inject ISimpleContentThemeHelper themeHelper\n@inject ISt"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/ContentHistory/Index.cshtml",
"chars": 1794,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.ContentHistoryViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@{\n "
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/AddCssPartial.cshtml",
"chars": 1373,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.AddPageResourceViewModel\n@inject IPageRoutes pageRoutes\n@inject IString"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/AddJsPartial.cshtml",
"chars": 1396,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.AddPageResourceViewModel\n@inject IPageRoutes pageRoutes\n@inject IString"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/ChildMenu.cshtml",
"chars": 545,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@inject IRoleSelectorProperties roleSelector\n@section Met"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/CommentWrapperPartial.cshtml",
"chars": 283,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@if ((Model.CurrentPage.ShowComments) && (!string.IsNullO"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/Development.cshtml",
"chars": 3799,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageDevelopmentViewModel\n@inject IPageRoutes pageRoutes\n@inject IString"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/DisqusCommentsPartial.cshtml",
"chars": 1061,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@using Microsoft.AspNetCore.Http.Features\n@inject IString"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/DraftInfoPartial.cshtml",
"chars": 1007,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject IPageR"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/Edit.cshtml",
"chars": 15375,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n@inject IPageRoutes pageRoutes\n@inject IRoleSelectorP"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditCommentsEnabledPartial.cshtml",
"chars": 474,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@if (strin"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditCorrelationKeyPartial.cshtml",
"chars": 513,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@* comment"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditDraftPubDatePartial.cshtml",
"chars": 521,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@{ \n va"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditHistoryInfoPartial.cshtml",
"chars": 911,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@if (Model"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditPubDate.cshtml",
"chars": 682,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n<input asp"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditScriptsPartial.cshtml",
"chars": 1331,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n@inject IRoleSelectorProperties roleSelector\n<script "
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditStylesPartial.cshtml",
"chars": 410,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n<link rel=\"stylesheet\" href=\"~/cr/css/bootstrap4-date"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditWithTemplate.cshtml",
"chars": 13796,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditWithTemplateViewModel\n@inject IPageRoutes pageRoutes\n@inject IR"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditWithTemplateCommentsEnabledPartial.cshtml",
"chars": 486,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditWithTemplateCorrelationKeyPartial.cshtml",
"chars": 525,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditWithTemplateDraftPubDatePartial.cshtml",
"chars": 533,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditWithTemplateHistoryInfoPartial.cshtml",
"chars": 923,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditWithTemplatePubDate.cshtml",
"chars": 702,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditWithTemplateScriptsPartial.cshtml",
"chars": 1861,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditWithTemplateViewModel\n@inject IRoleSelectorProperties roleSelec"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditWithTemplateStylesPartial.cshtml",
"chars": 878,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditWithTemplateViewModel\n<link rel=\"stylesheet\" href=\"~/cr/css/boo"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditorPartial.cshtml",
"chars": 3003,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject IS"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditorialDetailsPartial.cshtml",
"chars": 2014,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject ISimpl"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditorialShowHidePartial.cshtml",
"chars": 3876,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditViewModel\n@inject IStringLocalizer<SimpleContent> sr\n\n<div clas"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/EditorialShowHidePartialTemplates.cshtml",
"chars": 3888,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageEditWithTemplateViewModel\n@inject IStringLocalizer<SimpleContent> s"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/FeaturedPostsPartial.cshtml",
"chars": 473,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@inject ISimpleContentThemeHelper themeHelper\n@{\n var "
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/History.cshtml",
"chars": 2288,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.ContentHistoryViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inj"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/HistoryInfoPartial.cshtml",
"chars": 2273,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject IPageR"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/Index.cshtml",
"chars": 4173,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n\n@section Meta {\n <partial name=\"MetaPartial\" model=\"@"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/IndexMenu.cshtml",
"chars": 439,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@section Meta {\n <meta name=\"robots\" content=\"noindex,"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/MetaPartial.cshtml",
"chars": 2065,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@{\n var imageUrl = Model.ExtractFirstImageUrl(Model.Cu"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/NewPage.cshtml",
"chars": 892,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.NewContentViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject "
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/NoPages.cshtml",
"chars": 712,
"preview": "@model int\n@inject IStringLocalizer<SimpleContent> sr\n@inject ISimpleContentThemeHelper themeHelper\n@{\n var themeSet"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/NotFound.cshtml",
"chars": 1953,
"preview": "@model int\n@inject ISimpleContentThemeHelper themeHelper\n@inject IStringLocalizer<SimpleContent> sr\n@{\n var themeSet"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/PageBottomPartial.cshtml",
"chars": 64,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n\n"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/PageContentBodyPartial.cshtml",
"chars": 1357,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject IConte"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/PageDetailPartial.cshtml",
"chars": 5271,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@inject IStringLocalizer<SimpleContent> sr\n@inject ISimpl"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/PageScriptsPartial.cshtml",
"chars": 216,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n<script src=\"~/cr/js/ckeditor4114/plugins/codesnippet/lib"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/PageTopPartial.cshtml",
"chars": 64,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n\n"
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/RecentPostsPartial.cshtml",
"chars": 465,
"preview": "@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel\n@inject ISimpleContentThemeHelper themeHelper\n@{\n var "
},
{
"path": "src/cloudscribe.SimpleContent.CompiledViews.Bootstrap5/Views/Page/SiteMapIndex.cshtml",
"chars": 241,
"preview": "@inject IStringLocalizer<SimpleContent> sr\n@{\n ViewData[\"Title\"] = sr[\"Site Map\"];\n}\n<h1>@sr[\"Site Map\"]</h1>\n@await"
}
]
// ... and 1523 more files (download for full content)
About this extraction
This page contains the full source code of the cloudscribe/cloudscribe.SimpleContent GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1723 files (25.8 MB), approximately 6.9M tokens, and a symbol index with 19519 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.