From d28790558b2606c9e3370201de9ea673a42db6a2 Mon Sep 17 00:00:00 2001 From: William Kratochvil Date: Sat, 8 Feb 2025 09:07:06 -0600 Subject: [PATCH 01/19] BillKrat fork updates --- .gitignore | 8 + BlogEngine.sln | 82 + .../Adventure.Common/Adventure.Common.csproj | 49 + .../Profile/DynamicProfile.cs | 39 + .../Properties/AssemblyInfo.cs | 36 + .../Adventure.Tests/Adventure.Tests.csproj | 22 + BlogEngine/Adventure.Tests/UnitTest1.cs | 18 + .../API/MetaWeblog/MetaWeblogHandler.cs | 2 +- .../API/MetaWeblog/XMLRPCRequest.cs | 4 +- BlogEngine/BlogEngine.Core/AuthorProfile.cs | 552 +- BlogEngine/BlogEngine.Core/Blog.cs | 4 +- .../BlogEngine.Core/BlogEngine.Core.csproj | 24 +- BlogEngine/BlogEngine.Core/BlogSettings.cs | 37 +- .../Data/CategoryRepository.cs | 2 +- .../Data/Contracts/IMembershipProvider.cs | 14 + .../Data/Contracts/IUsersRepository.cs | 2 +- .../Data/FileManagerRepository.cs | 2 - .../BlogEngine.Core/Data/LookupsRepository.cs | 4 + .../Data/Models/EditorOptions.cs | 7 + .../BlogEngine.Core/Data/Models/PageDetail.cs | 6 + .../BlogEngine.Core/Data/Models/Profile.cs | 220 +- .../BlogEngine.Core/Data/PageRepository.cs | 5 +- .../BlogEngine.Core/Data/RolesRepository.cs | 2 +- .../BlogEngine.Core/Data/Services/Avatar.cs | 3 + .../BlogEngine.Core/Data/Services/Json.cs | 1 + .../BlogEngine.Core/Data/Services/TagCloud.cs | 10 + .../BlogEngine.Core/Data/Services/Updater.cs | 2 + .../BlogEngine.Core/Data/UsersRepository.cs | 260 +- .../Data/ViewModels/DashboardVM.cs | 2 +- .../Data/ViewModels/WidgetsVM.cs | 31 +- BlogEngine/BlogEngine.Core/Extensions.cs | 22 - BlogEngine/BlogEngine.Core/Page.cs | 26 + BlogEngine/BlogEngine.Core/Post.cs | 63 +- .../Properties/AssemblyInfo.cs | 6 +- .../BlogEngine.Core/Providers/BlogService.cs | 2 +- .../Providers/DbProvider/DbBlogProvider.cs | 187 +- .../DbProvider/DbMembershipProvider.cs | 415 +- .../XmlFileSystemProvider.cs | 2 +- .../Providers/XmlProvider/Pages.cs | 2 + .../Providers/XmlProvider/Profiles.cs | 4 +- .../XmlProvider/XmlMembershipProvider.cs | 95 +- .../GalleryServer/Reference.cs | 4 +- .../Services/FileSystem/Directory.cs | 2 +- .../Services/FileSystem/File.cs | 2 +- .../Services/Security/Rights.cs | 7 +- .../Services/Security/Security.cs | 105 +- .../Services/Syndication/BlogML/BlogReader.cs | 6 +- .../Web/Controls/ExtensionAttribute.cs | 2 + .../Web/Extensions/ExtensionManager.cs | 4 +- .../Web/Extensions/ManagedExtension.cs | 14 +- .../Web/HttpHandlers/PingbackHandler.cs | 4 +- .../Web/HttpHandlers/SyndicationHandler.cs | 4 +- BlogEngine/BlogEngine.NET/Account/account.js | 26 + .../BlogEngine.NET/Account/account.master | 74 +- BlogEngine/BlogEngine.NET/Account/login.aspx | 5 +- .../BlogEngine.NET/Account/login.aspx.cs | 15 + .../Account/login.aspx.designer.cs | 18 + .../BlogEngine.NET/Account/register.aspx | 24 +- .../BlogEngine.NET/Account/register.aspx.cs | 13 +- .../Account/register.aspx.designer.cs | 9 + .../AppCode/Api/FileManagerController.cs | 18 +- .../AppCode/Api/LogsController.cs | 4 +- .../AppCode/Api/UploadController.cs | 8 +- .../AppCode/Api/UsersController.cs | 11 +- .../AppCode/App_Start/BlogEngineConfig.cs | 9 +- .../AppCode/Controls/WidgetZone.cs | 3 +- .../BlogEngine.NET/AppCode/RazorHelpers.cs | 6 +- .../BlogEngine.NET/App_Data/customfields.xml | 30 +- .../datastore/widgets/be_WIDGET_ZONE.xml | 4 +- BlogEngine/BlogEngine.NET/App_Data/logger.txt | 0 .../BlogEngine.NET/App_Data/packagefiles.xml | 22 + .../BlogEngine.NET/App_Data/packages.xml | 1 + .../f39c3289-e861-48f7-a4b7-edaaffe6f6dc.xml | 10 +- .../App_Data/profiles/admin.xml | 9 +- BlogEngine/BlogEngine.NET/App_Data/rights.xml | 86 +- BlogEngine/BlogEngine.NET/App_Data/roles.xml | 4 + .../BlogEngine.NET/App_Data/settings.xml | 170 +- BlogEngine/BlogEngine.NET/App_Data/users.xml | 2 +- .../App_GlobalResources/labels.designer.cs | 13 +- .../App_GlobalResources/labels.es.resx | 5 +- .../App_GlobalResources/labels.resx | 6 +- .../BlogEngine.NET/BlogEngine.NET.csproj | 133 +- .../Content/images/HeadBang.gif | Bin 0 -> 1579 bytes .../BlogEngine.NET/Content/images/logo.png | Bin 0 -> 221171 bytes .../Custom/Controls/CommentList.ascx.cs | 14 +- .../Controls/CommentList.ascx.designer.cs | 28 +- .../Custom/Controls/Defaults/CommentForm.ascx | 4 +- .../Custom/Controls/PostList.ascx.cs | 17 +- .../Custom/Extensions/Logger.cs | 4 +- .../Custom/Extensions/Recaptcha/Recaptcha.cs | 8 +- .../Extensions/Recaptcha/RecaptchaControl.cs | 105 +- .../Recaptcha/RecaptchaValidator.cs | 26 +- .../Themes/ContactManager/Changelog.txt | 1 + .../Themes/ContactManager/CommentView.ascx | 22 + .../Themes/ContactManager/PostView.ascx | 28 + .../ContactManager/WidgetContainer.ascx | 12 + .../Themes/ContactManager/img/BtnSearch.png | Bin 0 -> 1292 bytes .../Themes/ContactManager/img/effect_1.png | Bin 0 -> 2704 bytes .../Themes/ContactManager/img/effect_2.png | Bin 0 -> 4858 bytes .../Themes/ContactManager/img/effect_3.png | Bin 0 -> 3862 bytes .../Custom/Themes/ContactManager/img/logo.png | Bin 0 -> 168189 bytes .../Custom/Themes/ContactManager/img/nav.png | Bin 0 -> 950 bytes .../Themes/ContactManager/img/social.png | Bin 0 -> 5443 bytes .../Themes/ContactManager/img/success.png | Bin 0 -> 1170 bytes .../Custom/Themes/ContactManager/img/up.png | Bin 0 -> 1132 bytes .../Themes/ContactManager/include/index.js | 126 + .../ContactManager/include/modernizr.js | 5 + .../ContactManager/include/styles.min.css | 3575 +++++++ .../Themes/ContactManager/newsletter.html | 11 + .../Custom/Themes/ContactManager/site.master | 138 + .../Themes/ContactManager/site.master.cs | 48 + .../Custom/Themes/ContactManager/theme.xml | 9 + .../Custom/Themes/Standard/PostView.ascx | 4 +- .../Custom/Themes/Standard/page.master | 8 + .../Custom/Themes/Standard/site.master | 28 +- .../Themes/Standard/src/css/styles.min.css | 4 +- .../Widgets/Administration/widget.cshtml | 6 + .../Custom/Widgets/BlogRoll/widget.cshtml | 4 +- .../Custom/Widgets/Newsletter/Newsletter.cs | 232 +- .../Custom/Widgets/Newsletter/edit.cshtml | 45 +- .../Custom/Widgets/Newsletter/widget.cshtml | 109 +- .../Custom/Widgets/PostList/widget.cshtml | 12 +- .../Custom/Widgets/TextBox/edit.cshtml | 6 +- .../Custom/Widgets/TextBox/widget.cshtml | 2 +- BlogEngine/BlogEngine.NET/Global.asax | 13 - .../BlogEngine.NET/Scripts/Auto/blog.js | 2 +- BlogEngine/BlogEngine.NET/Scripts/contact.js | 114 +- .../Scripts/jQuery/jquery-2.1.4.js | 9213 +++++++++++++++++ .../Scripts/jQuery/jquery-2.1.4.min.js | 14 + BlogEngine/BlogEngine.NET/TextFile1.txt | 1 + BlogEngine/BlogEngine.NET/Web.Config | 25 +- .../BlogEngine.NET/Web.Config.SQL.Config | 275 + .../admin/Extensions/Settings.aspx | 8 +- BlogEngine/BlogEngine.NET/admin/about.cshtml | 1 + BlogEngine/BlogEngine.NET/admin/app/app.js | 6 +- BlogEngine/BlogEngine.NET/admin/app/common.js | 108 + .../content/categories/categoryController.js | 3 +- .../app/custom/themes/themeController.js | 4 +- .../admin/app/custom/themes/themeView.html | 42 +- .../app/dashboard/dashboardController.js | 4 +- .../admin/app/dashboard/dashboardView.html | 37 +- .../admin/app/editor/editpage.cshtml | 7 + .../admin/app/editor/editpost.cshtml | 4 +- .../admin/app/editor/filemanager.cshtml | 2 +- .../admin/app/editor/pageeditorController.js | 8 + .../BlogEngine.NET/admin/app/grid-helpers.js | 9 +- .../security/contacts/contactController.js | 150 + .../app/security/contacts/contactView.html | 122 + .../app/security/profile/profileController.js | 25 +- .../app/security/profile/profileView.html | 134 +- .../app/security/roles/roleController.js | 12 +- .../admin/app/security/roles/roleView.html | 2 +- .../app/security/users/userController.js | 43 +- .../admin/app/security/users/userView.html | 16 +- .../admin/app/settings/basicView.html | 8 +- .../admin/app/settings/commentView.html | 2 +- .../admin/app/settings/settingController.js | 328 +- .../tinymce/skins/lightgray/skin.min.css | 2062 +++- BlogEngine/BlogEngine.NET/admin/index.cshtml | 2 +- .../admin/themes/standard/css/styles.css | 5681 +++++++++- .../admin/themes/standard/layout.cshtml | 4 +- .../admin/themes/standard/sidebar.cshtml | 54 +- BlogEngine/BlogEngine.NET/archive.aspx.cs | 19 +- .../BlogEngine.NET/archive.aspx.designer.cs | 13 +- BlogEngine/BlogEngine.NET/contact.aspx | 126 +- BlogEngine/BlogEngine.NET/contact.aspx.cs | 68 +- .../BlogEngine.NET/contact.aspx.designer.cs | 63 +- BlogEngine/BlogEngine.NET/error404.aspx | 1 + BlogEngine/BlogEngine.NET/favicon.ico | Bin 0 -> 8522 bytes BlogEngine/BlogEngine.NET/packages.config | 2 +- BlogEngine/BlogEngine.NET/page.aspx.cs | 3 +- BlogEngine/BlogEngine.NET/pics/blogengine.ico | Bin 0 -> 3638 bytes BlogEngine/BlogEngine.NET/pics/headbang.gif | Bin 0 -> 1579 bytes BlogEngine/BlogEngine.NET/pics/logo.png | Bin 0 -> 221171 bytes BlogEngine/BlogEngine.NET/post.aspx.cs | 28 +- .../setup/BillKrat-Upgrade.2018.12.30.sql | 59 + .../BlogEngine.NET/setup/SQLServer/Setup.sql | Bin 235788 -> 238806 bytes .../BlogEngine.NET/setup/upgrade/setup.txt | 2 +- BlogEngine/BlogEngine.NET/styles/domine.css | 88 + BlogEngine/BlogEngine.NET/styles/roboto.css | 168 + .../BlogEngine.Tests/BlogEngine.Tests.csproj | 3 +- .../Fakes/FakeUsersRepository.cs | 2 +- BlogEngine/BlogEngine.Tests/app.config | 32 +- BlogEngine/BlogEngine.Wiki.Test/App.config | 41 + .../BlogEngine.Wiki.Test.csproj | 97 + .../Constants/BlogEngineConstants.cs | 13 + .../Constants/UnitTestConstants.cs | 18 + .../GwnWikiExtensionFixture.cs | 73 + .../Helper/MockBlogHelper.cs | 61 + .../Helper/UnitTestHelper.cs | 74 + .../BlogEngine.Wiki.Test/Mocks/MockPost.cs | 33 + .../Mocks/SimulatedHttpRequest.cs | 59 + .../Properties/AssemblyInfo.cs | 35 + .../BlogEngine.Wiki.Test/TestOutput/Blog.html | 3 + .../TestOutput/OutputWillBeStoredInThisFolder | 1 + .../BlogEngine.Wiki.Test/TestOutput/init.xml | 83 + .../BlogEngine.Wiki/Artifacts/RegExPOC.linq | 273 + .../RequiredUpdatesToUseUnitTest.JPG | Bin 0 -> 115611 bytes .../BlogEngine.Wiki/BlogEngine.Wiki.csproj | 80 + BlogEngine/BlogEngine.Wiki/GwnWikiEngine.cs | 136 + .../BlogEngine.Wiki/GwnWikiExtension.cs | 22 + BlogEngine/BlogEngine.Wiki/GwnWikiProvider.cs | 192 + .../Interfaces/IGwnWikiProvider.cs | 18 + .../Properties/AssemblyInfo.cs | 36 + BlogEngine/BlogEngine.sln | 52 +- .../Attributes/BeSettingAttribute.cs | 121 + .../Base/BeExtensionBase.cs | 154 + .../Base/BeExtensionEngineBase.cs | 115 + .../Base/BeExtensionProviderBase.cs | 325 + .../Entities/BeSettingRecord.cs | 107 + .../Events/BeEventArgs.cs | 70 + .../Extensions/BeDataTableExtension.cs | 62 + .../Extensions/BePostExtension.cs | 23 + .../Extensions/BeRecordExtension.cs | 31 + .../Extensions/BeSettingExtension.cs | 72 + .../Extensions/BeStringExtension.cs | 164 + .../Extensions/ByteExtension.cs | 31 + .../Extensions/ObjectExtension.cs | 78 + .../Gwn.BlogEngine.Library.csproj | 89 + .../Interfaces/IBeEngine.cs | 17 + .../Interfaces/IBeExtensionSettingsData.cs | 9 + .../Interfaces/IBeLogger.cs | 7 + .../Interfaces/IBeProvider.cs | 42 + .../Logger/DebugLogger.cs | 27 + .../Properties/AssemblyInfo.cs | 35 + .../Types/BeProcessType.cs | 11 + .../AzureContinuousDeployment.11.xaml | 686 ++ .../DefaultTemplate.11.1.xaml | 543 + BuildProcessTemplates/UpgradeTemplate.xaml | 76 + Custom/Controls/CommentList.ascx | 67 + Custom/Controls/Defaults/CommentForm.ascx | 29 + Custom/Controls/Defaults/CommentView.ascx | 5 + Custom/Controls/Defaults/PostNavigation.ascx | 5 + Custom/Controls/Defaults/PostView.ascx | 5 + Custom/Controls/PostList.ascx | 11 + Custom/Media/sample.flv | Bin 0 -> 88722 bytes Custom/Themes/AllTuts/CommentView.cshtml | 25 + Custom/Themes/AllTuts/PostView.cshtml | 96 + Custom/Themes/AllTuts/ReleaseNotes.txt | 8 + Custom/Themes/AllTuts/WidgetContainer.cshtml | 38 + Custom/Themes/AllTuts/css/ddsmoothmenu-v.css | 53 + Custom/Themes/AllTuts/css/ddsmoothmenu.css | 102 + .../Themes/AllTuts/images/bk_blockquote.jpg | Bin 0 -> 926 bytes Custom/Themes/AllTuts/images/bk_body.png | Bin 0 -> 763 bytes .../Themes/AllTuts/images/bk_box_bottom.png | Bin 0 -> 288 bytes .../AllTuts/images/bk_box_bottom_right.png | Bin 0 -> 279 bytes Custom/Themes/AllTuts/images/bk_box_mid.png | Bin 0 -> 246 bytes .../AllTuts/images/bk_box_mid_inner.jpg | Bin 0 -> 3803 bytes .../AllTuts/images/bk_box_mid_right.png | Bin 0 -> 240 bytes Custom/Themes/AllTuts/images/bk_box_top.png | Bin 0 -> 286 bytes .../AllTuts/images/bk_box_top_right.jpg | Bin 0 -> 412 bytes .../AllTuts/images/bk_box_top_right.png | Bin 0 -> 275 bytes .../Themes/AllTuts/images/bk_but_search.jpg | Bin 0 -> 1444 bytes Custom/Themes/AllTuts/images/bk_date.png | Bin 0 -> 5646 bytes Custom/Themes/AllTuts/images/bk_footer.jpg | Bin 0 -> 436 bytes Custom/Themes/AllTuts/images/bk_h2_right.png | Bin 0 -> 11631 bytes Custom/Themes/AllTuts/images/bk_header.jpg | Bin 0 -> 6948 bytes .../Themes/AllTuts/images/bk_link_reply.png | Bin 0 -> 563 bytes Custom/Themes/AllTuts/images/bk_pagenavi.jpg | Bin 0 -> 295 bytes .../Themes/AllTuts/images/bk_pagenavi_ov.jpg | Bin 0 -> 661 bytes Custom/Themes/AllTuts/images/bk_slider.png | Bin 0 -> 11151 bytes .../AllTuts/images/bk_slider_caption.png | Bin 0 -> 941 bytes .../Themes/AllTuts/images/bk_social_links.png | Bin 0 -> 2082 bytes Custom/Themes/AllTuts/images/bk_top_hover.png | Bin 0 -> 831 bytes .../AllTuts/images/bk_twitter_box_bottom.png | Bin 0 -> 5381 bytes .../AllTuts/images/bk_twitter_box_top.png | Bin 0 -> 2489 bytes Custom/Themes/AllTuts/images/bullet_list.png | Bin 0 -> 521 bytes .../Themes/AllTuts/images/but_addcomment.png | Bin 0 -> 791 bytes Custom/Themes/AllTuts/images/but_next.png | Bin 0 -> 2439 bytes Custom/Themes/AllTuts/images/but_previous.png | Bin 0 -> 2369 bytes Custom/Themes/AllTuts/images/delicious.png | Bin 0 -> 2023 bytes Custom/Themes/AllTuts/images/digg.png | Bin 0 -> 2024 bytes Custom/Themes/AllTuts/images/down.gif | Bin 0 -> 854 bytes Custom/Themes/AllTuts/images/facebook.png | Bin 0 -> 2070 bytes Custom/Themes/AllTuts/images/ico_author.png | Bin 0 -> 1566 bytes .../AllTuts/images/ico_becomeauthor.png | Bin 0 -> 5065 bytes Custom/Themes/AllTuts/images/ico_comments.png | Bin 0 -> 984 bytes Custom/Themes/AllTuts/images/ico_facebook.png | Bin 0 -> 869 bytes Custom/Themes/AllTuts/images/ico_linkedin.png | Bin 0 -> 1061 bytes Custom/Themes/AllTuts/images/ico_readmore.png | Bin 0 -> 931 bytes Custom/Themes/AllTuts/images/ico_rss.png | Bin 0 -> 1438 bytes Custom/Themes/AllTuts/images/ico_tag.png | Bin 0 -> 3352 bytes Custom/Themes/AllTuts/images/ico_twitter.png | Bin 0 -> 1093 bytes .../Themes/AllTuts/images/list_red_bullet.png | Bin 0 -> 245 bytes Custom/Themes/AllTuts/images/logo.png | Bin 0 -> 6994 bytes Custom/Themes/AllTuts/images/reddit.png | Bin 0 -> 2083 bytes Custom/Themes/AllTuts/images/right.gif | Bin 0 -> 860 bytes Custom/Themes/AllTuts/images/site5.png | Bin 0 -> 3171 bytes .../Themes/AllTuts/images/site5_125x125.jpg | Bin 0 -> 9650 bytes Custom/Themes/AllTuts/images/site5bottom.png | Bin 0 -> 4745 bytes Custom/Themes/AllTuts/images/star.png | Bin 0 -> 335 bytes Custom/Themes/AllTuts/images/stumbleupon.png | Bin 0 -> 2304 bytes Custom/Themes/AllTuts/images/twitter.png | Bin 0 -> 2086 bytes Custom/Themes/AllTuts/images/youradhere.jpg | Bin 0 -> 2381 bytes Custom/Themes/AllTuts/js/ddsmoothmenu.js | 153 + Custom/Themes/AllTuts/js/jquery-1.7.2.min.js | 4 + Custom/Themes/AllTuts/js/jquery.form.js | 870 ++ Custom/Themes/AllTuts/noavatar.jpg | Bin 0 -> 1556 bytes Custom/Themes/AllTuts/site.cshtml | 139 + Custom/Themes/AllTuts/style.css | 1585 +++ Custom/Themes/AllTuts/theme.png | Bin 0 -> 275864 bytes Custom/Themes/AllTuts/theme.xml | 9 + Custom/Themes/ContactManager/Changelog.txt | 1 + Custom/Themes/ContactManager/CommentView.ascx | 22 + Custom/Themes/ContactManager/PostView.ascx | 28 + .../ContactManager/WidgetContainer.ascx | 12 + .../Themes/ContactManager/img/BtnSearch.png | Bin 0 -> 1292 bytes Custom/Themes/ContactManager/img/effect_1.png | Bin 0 -> 2704 bytes Custom/Themes/ContactManager/img/effect_2.png | Bin 0 -> 4858 bytes Custom/Themes/ContactManager/img/effect_3.png | Bin 0 -> 3862 bytes Custom/Themes/ContactManager/img/logo.png | Bin 0 -> 168189 bytes Custom/Themes/ContactManager/img/nav.png | Bin 0 -> 950 bytes Custom/Themes/ContactManager/img/social.png | Bin 0 -> 5443 bytes Custom/Themes/ContactManager/img/success.png | Bin 0 -> 1170 bytes Custom/Themes/ContactManager/img/up.png | Bin 0 -> 1132 bytes Custom/Themes/ContactManager/include/index.js | 126 + .../ContactManager/include/modernizr.js | 5 + .../ContactManager/include/styles.min.css | 3575 +++++++ Custom/Themes/ContactManager/newsletter.html | 11 + Custom/Themes/ContactManager/site.master | 138 + Custom/Themes/ContactManager/site.master.cs | 48 + Custom/Themes/ContactManager/theme.xml | 9 + Custom/Themes/Photosbydi/Changelog.txt | 1 + Custom/Themes/Photosbydi/CommentView.ascx | 22 + Custom/Themes/Photosbydi/PostView.ascx | 28 + Custom/Themes/Photosbydi/WidgetContainer.ascx | 12 + Custom/Themes/Photosbydi/img/BtnSearch.png | Bin 0 -> 1292 bytes Custom/Themes/Photosbydi/img/effect_1.png | Bin 0 -> 2704 bytes Custom/Themes/Photosbydi/img/effect_2.png | Bin 0 -> 4858 bytes Custom/Themes/Photosbydi/img/effect_3.png | Bin 0 -> 3862 bytes Custom/Themes/Photosbydi/img/logo.png | Bin 0 -> 168189 bytes Custom/Themes/Photosbydi/img/nav.png | Bin 0 -> 950 bytes Custom/Themes/Photosbydi/img/social.png | Bin 0 -> 5443 bytes Custom/Themes/Photosbydi/img/success.png | Bin 0 -> 1170 bytes Custom/Themes/Photosbydi/img/up.png | Bin 0 -> 1132 bytes Custom/Themes/Photosbydi/include/index.js | 126 + Custom/Themes/Photosbydi/include/modernizr.js | 5 + .../Themes/Photosbydi/include/styles.min.css | 3575 +++++++ Custom/Themes/Photosbydi/newsletter.html | 11 + Custom/Themes/Photosbydi/site.master | 135 + Custom/Themes/Photosbydi/site.master.cs | 48 + Custom/Themes/Photosbydi/theme.xml | 9 + Custom/Themes/StFrancis/Changelog.txt | 1 + Custom/Themes/StFrancis/CommentView.ascx | 22 + Custom/Themes/StFrancis/PostView.ascx | 28 + Custom/Themes/StFrancis/WidgetContainer.ascx | 12 + Custom/Themes/StFrancis/img/BtnSearch.png | Bin 0 -> 1292 bytes Custom/Themes/StFrancis/img/effect_1.png | Bin 0 -> 47731 bytes Custom/Themes/StFrancis/img/effect_2.png | Bin 0 -> 79029 bytes Custom/Themes/StFrancis/img/effect_3.png | Bin 0 -> 46660 bytes Custom/Themes/StFrancis/img/logo.png | Bin 0 -> 168189 bytes Custom/Themes/StFrancis/img/nav.png | Bin 0 -> 950 bytes Custom/Themes/StFrancis/img/social.png | Bin 0 -> 5443 bytes Custom/Themes/StFrancis/img/success.png | Bin 0 -> 1170 bytes Custom/Themes/StFrancis/img/up.png | Bin 0 -> 1132 bytes Custom/Themes/StFrancis/include/index.js | 126 + Custom/Themes/StFrancis/include/modernizr.js | 5 + .../Themes/StFrancis/include/styles.min.css | 3605 +++++++ Custom/Themes/StFrancis/newsletter.html | 10 + Custom/Themes/StFrancis/site.master.cs | 48 + Custom/Themes/StFrancis/theme.xml | 9 + Custom/Themes/Standard-2017/CommentForm.ascx | 38 + Custom/Themes/Standard-2017/CommentView.ascx | 23 + .../Themes/Standard-2017/PostNavigation.ascx | 15 + Custom/Themes/Standard-2017/PostView.ascx | 30 + Custom/Themes/Standard-2017/RelatedPosts.ascx | 12 + .../Themes/Standard-2017/WidgetContainer.ascx | 15 + Custom/Themes/Standard-2017/newsletter.html | 10 + Custom/Themes/Standard-2017/site.master | 102 + .../Standard-2017/src/css/bootstrap.min.css | 14 + .../src/css/font-awesome.min.css | 4 + .../Standard-2017/src/css/styles.min.css | 1 + .../Standard-2017/src/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes .../src/fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes .../src/fonts/fontawesome-webfont.svg | 685 ++ .../src/fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes .../src/fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes .../src/fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes Custom/Themes/Standard-2017/src/img/logo.png | Bin 0 -> 27270 bytes .../Standard-2017/src/js/bootstrap.min.js | 12 + Custom/Themes/Standard-2017/src/js/custom.js | 82 + Custom/Themes/Standard-2017/theme.png | Bin 0 -> 147039 bytes Custom/Themes/Standard-2017/theme.xml | 9 + Custom/Themes/Standard/CommentForm.ascx | 24 + Custom/Themes/Standard/CommentView.ascx | 23 + Custom/Themes/Standard/PostNavigation.ascx | 15 + Custom/Themes/Standard/PostView.ascx | 128 + Custom/Themes/Standard/RelatedPosts.ascx | 13 + Custom/Themes/Standard/WidgetContainer.ascx | 15 + Custom/Themes/Standard/newsletter.html | 10 + Custom/Themes/Standard/page.master | 131 + Custom/Themes/Standard/site.master | 146 + .../Themes/Standard/src/css/bootstrap.min.css | 6 + .../Standard/src/css/font-awesome.min.css | 4 + Custom/Themes/Standard/src/css/styles.min.css | 3175 ++++++ .../Themes/Standard/src/fonts/FontAwesome.otf | Bin 0 -> 134808 bytes .../src/fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../src/fonts/fontawesome-webfont.svg | 2671 +++++ .../src/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../src/fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../src/fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes Custom/Themes/Standard/src/img/logo.png | Bin 0 -> 1836 bytes .../Themes/Standard/src/js/bootstrap.min.js | 6 + Custom/Themes/Standard/src/js/custom.js | 84 + .../Standard/src/js/jquery-3.2.1.min.js | 4 + .../Standard/src/js/perfect-scrollbar.min.js | 6 + Custom/Themes/Standard/src/js/popper.min.js | 5 + Custom/Themes/Standard/theme.png | Bin 0 -> 7768 bytes Custom/Themes/Standard/theme.xml | 9 + Custom/Themes/WingFlash/Changelog.txt | 1 + Custom/Themes/WingFlash/CommentView.ascx | 22 + Custom/Themes/WingFlash/PostView.ascx | 28 + Custom/Themes/WingFlash/WidgetContainer.ascx | 12 + Custom/Themes/WingFlash/img/BtnSearch.png | Bin 0 -> 1292 bytes Custom/Themes/WingFlash/img/effect_1.png | Bin 0 -> 2704 bytes Custom/Themes/WingFlash/img/effect_2.png | Bin 0 -> 4858 bytes Custom/Themes/WingFlash/img/effect_3.png | Bin 0 -> 3862 bytes Custom/Themes/WingFlash/img/logo.png | Bin 0 -> 168189 bytes Custom/Themes/WingFlash/img/nav.png | Bin 0 -> 950 bytes Custom/Themes/WingFlash/img/social.png | Bin 0 -> 5443 bytes Custom/Themes/WingFlash/img/success.png | Bin 0 -> 1170 bytes Custom/Themes/WingFlash/img/up.png | Bin 0 -> 1132 bytes Custom/Themes/WingFlash/include/index.js | 126 + Custom/Themes/WingFlash/include/modernizr.js | 5 + .../Themes/WingFlash/include/styles.min.css | 3575 +++++++ Custom/Themes/WingFlash/newsletter.html | 11 + Custom/Themes/WingFlash/site.master | 135 + Custom/Themes/WingFlash/site.master.cs | 48 + Custom/Themes/WingFlash/theme.xml | 9 + Custom/Widgets/Administration/screenshot.png | Bin 0 -> 8256 bytes Custom/Widgets/Administration/widget.cshtml | 45 + Custom/Widgets/Administration/widget.xml | 9 + Custom/Widgets/AuthorList/screenshot.png | Bin 0 -> 6253 bytes Custom/Widgets/AuthorList/widget.cshtml | 35 + Custom/Widgets/AuthorList/widget.xml | 9 + Custom/Widgets/BlogList/screenshot.png | Bin 0 -> 3062 bytes Custom/Widgets/BlogList/widget.cshtml | 20 + Custom/Widgets/BlogList/widget.xml | 9 + Custom/Widgets/BlogRoll/edit.cshtml | 199 + Custom/Widgets/BlogRoll/screenshot.png | Bin 0 -> 13134 bytes Custom/Widgets/BlogRoll/widget.cshtml | 43 + Custom/Widgets/BlogRoll/widget.xml | 9 + Custom/Widgets/CategoryList/edit.cshtml | 52 + Custom/Widgets/CategoryList/screenshot.png | Bin 0 -> 5011 bytes Custom/Widgets/CategoryList/widget.cshtml | 56 + Custom/Widgets/CategoryList/widget.xml | 9 + Custom/Widgets/CommentList/edit.cshtml | 44 + Custom/Widgets/CommentList/screenshot.png | Bin 0 -> 11059 bytes Custom/Widgets/CommentList/widget.cshtml | 66 + Custom/Widgets/CommentList/widget.xml | 9 + Custom/Widgets/LinkList/edit.cshtml | 157 + Custom/Widgets/LinkList/screenshot.png | Bin 0 -> 6021 bytes Custom/Widgets/LinkList/widget.cshtml | 27 + Custom/Widgets/LinkList/widget.xml | 9 + Custom/Widgets/MonthList/screenshot.png | Bin 0 -> 5197 bytes Custom/Widgets/MonthList/widget.cshtml | 30 + Custom/Widgets/MonthList/widget.xml | 9 + Custom/Widgets/Newsletter/edit.cshtml | 75 + Custom/Widgets/Newsletter/screenshot.png | Bin 0 -> 10740 bytes Custom/Widgets/Newsletter/widget.cshtml | 109 + Custom/Widgets/Newsletter/widget.xml | 9 + Custom/Widgets/NewsletterR1/edit.cshtml | 44 + Custom/Widgets/NewsletterR1/screenshot.png | Bin 0 -> 10740 bytes Custom/Widgets/NewsletterR1/widget.cshtml | 112 + Custom/Widgets/NewsletterR1/widget.xml | 9 + Custom/Widgets/PageList/screenshot.png | Bin 0 -> 3813 bytes Custom/Widgets/PageList/widget.cshtml | 20 + Custom/Widgets/PageList/widget.xml | 9 + Custom/Widgets/PostList/edit.cshtml | 113 + Custom/Widgets/PostList/screenshot.png | Bin 0 -> 4755 bytes Custom/Widgets/PostList/widget.cshtml | 112 + Custom/Widgets/PostList/widget.xml | 9 + Custom/Widgets/Search/screenshot.png | Bin 0 -> 4204 bytes Custom/Widgets/Search/widget.cshtml | 15 + Custom/Widgets/Search/widget.xml | 9 + Custom/Widgets/TagCloud/edit.cshtml | 73 + Custom/Widgets/TagCloud/screenshot.png | Bin 0 -> 4526 bytes Custom/Widgets/TagCloud/widget.cshtml | 16 + Custom/Widgets/TagCloud/widget.xml | 9 + Custom/Widgets/TextBox/edit.cshtml | 59 + Custom/Widgets/TextBox/screenshot.png | Bin 0 -> 9165 bytes Custom/Widgets/TextBox/widget.cshtml | 12 + Custom/Widgets/TextBox/widget.xml | 9 + Custom/Widgets/common.cshtml | 8 + lib/AjaxMin.dll | Bin 0 -> 241664 bytes lib/BlogEngine.Core.dll | Bin 0 -> 587776 bytes lib/BlogEngine.Wiki.dll | Bin 0 -> 9728 bytes lib/BlogML.dll | Bin 0 -> 53248 bytes lib/Gwn.BlogEngine.Library.dll | Bin 0 -> 30720 bytes lib/Microsoft.Web.Infrastructure.dll | Bin 0 -> 45416 bytes lib/NuGet.Core.dll | Bin 0 -> 351528 bytes lib/System.Web.Helpers.dll | Bin 0 -> 130408 bytes lib/System.Web.Optimization.dll | Bin 0 -> 311616 bytes lib/System.Web.Razor.dll | Bin 0 -> 178536 bytes lib/System.Web.WebPages.Deployment.dll | Bin 0 -> 25960 bytes lib/System.Web.WebPages.Razor.dll | Bin 0 -> 37224 bytes lib/System.Web.WebPages.dll | Bin 0 -> 136552 bytes 497 files changed, 57770 insertions(+), 1747 deletions(-) create mode 100644 BlogEngine.sln create mode 100644 BlogEngine/Adventure.Common/Adventure.Common.csproj create mode 100644 BlogEngine/Adventure.Common/Profile/DynamicProfile.cs create mode 100644 BlogEngine/Adventure.Common/Properties/AssemblyInfo.cs create mode 100644 BlogEngine/Adventure.Tests/Adventure.Tests.csproj create mode 100644 BlogEngine/Adventure.Tests/UnitTest1.cs create mode 100644 BlogEngine/BlogEngine.Core/Data/Contracts/IMembershipProvider.cs create mode 100644 BlogEngine/BlogEngine.NET/App_Data/logger.txt create mode 100644 BlogEngine/BlogEngine.NET/Content/images/HeadBang.gif create mode 100644 BlogEngine/BlogEngine.NET/Content/images/logo.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/Changelog.txt create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/CommentView.ascx create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/PostView.ascx create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/WidgetContainer.ascx create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/BtnSearch.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/effect_1.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/effect_2.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/effect_3.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/logo.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/nav.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/social.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/success.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/up.png create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/include/index.js create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/include/modernizr.js create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/include/styles.min.css create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/newsletter.html create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/site.master create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/site.master.cs create mode 100644 BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/theme.xml create mode 100644 BlogEngine/BlogEngine.NET/Scripts/jQuery/jquery-2.1.4.js create mode 100644 BlogEngine/BlogEngine.NET/Scripts/jQuery/jquery-2.1.4.min.js create mode 100644 BlogEngine/BlogEngine.NET/TextFile1.txt create mode 100644 BlogEngine/BlogEngine.NET/Web.Config.SQL.Config create mode 100644 BlogEngine/BlogEngine.NET/admin/app/security/contacts/contactController.js create mode 100644 BlogEngine/BlogEngine.NET/admin/app/security/contacts/contactView.html create mode 100644 BlogEngine/BlogEngine.NET/favicon.ico create mode 100644 BlogEngine/BlogEngine.NET/pics/blogengine.ico create mode 100644 BlogEngine/BlogEngine.NET/pics/headbang.gif create mode 100644 BlogEngine/BlogEngine.NET/pics/logo.png create mode 100644 BlogEngine/BlogEngine.NET/setup/BillKrat-Upgrade.2018.12.30.sql create mode 100644 BlogEngine/BlogEngine.NET/styles/domine.css create mode 100644 BlogEngine/BlogEngine.NET/styles/roboto.css create mode 100644 BlogEngine/BlogEngine.Wiki.Test/App.config create mode 100644 BlogEngine/BlogEngine.Wiki.Test/BlogEngine.Wiki.Test.csproj create mode 100644 BlogEngine/BlogEngine.Wiki.Test/Constants/BlogEngineConstants.cs create mode 100644 BlogEngine/BlogEngine.Wiki.Test/Constants/UnitTestConstants.cs create mode 100644 BlogEngine/BlogEngine.Wiki.Test/GwnWikiExtensionFixture.cs create mode 100644 BlogEngine/BlogEngine.Wiki.Test/Helper/MockBlogHelper.cs create mode 100644 BlogEngine/BlogEngine.Wiki.Test/Helper/UnitTestHelper.cs create mode 100644 BlogEngine/BlogEngine.Wiki.Test/Mocks/MockPost.cs create mode 100644 BlogEngine/BlogEngine.Wiki.Test/Mocks/SimulatedHttpRequest.cs create mode 100644 BlogEngine/BlogEngine.Wiki.Test/Properties/AssemblyInfo.cs create mode 100644 BlogEngine/BlogEngine.Wiki.Test/TestOutput/Blog.html create mode 100644 BlogEngine/BlogEngine.Wiki.Test/TestOutput/OutputWillBeStoredInThisFolder create mode 100644 BlogEngine/BlogEngine.Wiki.Test/TestOutput/init.xml create mode 100644 BlogEngine/BlogEngine.Wiki/Artifacts/RegExPOC.linq create mode 100644 BlogEngine/BlogEngine.Wiki/Artifacts/RequiredUpdatesToUseUnitTest.JPG create mode 100644 BlogEngine/BlogEngine.Wiki/BlogEngine.Wiki.csproj create mode 100644 BlogEngine/BlogEngine.Wiki/GwnWikiEngine.cs create mode 100644 BlogEngine/BlogEngine.Wiki/GwnWikiExtension.cs create mode 100644 BlogEngine/BlogEngine.Wiki/GwnWikiProvider.cs create mode 100644 BlogEngine/BlogEngine.Wiki/Interfaces/IGwnWikiProvider.cs create mode 100644 BlogEngine/BlogEngine.Wiki/Properties/AssemblyInfo.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Attributes/BeSettingAttribute.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Base/BeExtensionBase.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Base/BeExtensionEngineBase.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Base/BeExtensionProviderBase.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Entities/BeSettingRecord.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Events/BeEventArgs.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Extensions/BeDataTableExtension.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Extensions/BePostExtension.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Extensions/BeRecordExtension.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Extensions/BeSettingExtension.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Extensions/BeStringExtension.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Extensions/ByteExtension.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Extensions/ObjectExtension.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Gwn.BlogEngine.Library.csproj create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Interfaces/IBeEngine.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Interfaces/IBeExtensionSettingsData.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Interfaces/IBeLogger.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Interfaces/IBeProvider.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Logger/DebugLogger.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Properties/AssemblyInfo.cs create mode 100644 BlogEngine/Gwn.BlogEngine.Library/Types/BeProcessType.cs create mode 100644 BuildProcessTemplates/AzureContinuousDeployment.11.xaml create mode 100644 BuildProcessTemplates/DefaultTemplate.11.1.xaml create mode 100644 BuildProcessTemplates/UpgradeTemplate.xaml create mode 100644 Custom/Controls/CommentList.ascx create mode 100644 Custom/Controls/Defaults/CommentForm.ascx create mode 100644 Custom/Controls/Defaults/CommentView.ascx create mode 100644 Custom/Controls/Defaults/PostNavigation.ascx create mode 100644 Custom/Controls/Defaults/PostView.ascx create mode 100644 Custom/Controls/PostList.ascx create mode 100644 Custom/Media/sample.flv create mode 100644 Custom/Themes/AllTuts/CommentView.cshtml create mode 100644 Custom/Themes/AllTuts/PostView.cshtml create mode 100644 Custom/Themes/AllTuts/ReleaseNotes.txt create mode 100644 Custom/Themes/AllTuts/WidgetContainer.cshtml create mode 100644 Custom/Themes/AllTuts/css/ddsmoothmenu-v.css create mode 100644 Custom/Themes/AllTuts/css/ddsmoothmenu.css create mode 100644 Custom/Themes/AllTuts/images/bk_blockquote.jpg create mode 100644 Custom/Themes/AllTuts/images/bk_body.png create mode 100644 Custom/Themes/AllTuts/images/bk_box_bottom.png create mode 100644 Custom/Themes/AllTuts/images/bk_box_bottom_right.png create mode 100644 Custom/Themes/AllTuts/images/bk_box_mid.png create mode 100644 Custom/Themes/AllTuts/images/bk_box_mid_inner.jpg create mode 100644 Custom/Themes/AllTuts/images/bk_box_mid_right.png create mode 100644 Custom/Themes/AllTuts/images/bk_box_top.png create mode 100644 Custom/Themes/AllTuts/images/bk_box_top_right.jpg create mode 100644 Custom/Themes/AllTuts/images/bk_box_top_right.png create mode 100644 Custom/Themes/AllTuts/images/bk_but_search.jpg create mode 100644 Custom/Themes/AllTuts/images/bk_date.png create mode 100644 Custom/Themes/AllTuts/images/bk_footer.jpg create mode 100644 Custom/Themes/AllTuts/images/bk_h2_right.png create mode 100644 Custom/Themes/AllTuts/images/bk_header.jpg create mode 100644 Custom/Themes/AllTuts/images/bk_link_reply.png create mode 100644 Custom/Themes/AllTuts/images/bk_pagenavi.jpg create mode 100644 Custom/Themes/AllTuts/images/bk_pagenavi_ov.jpg create mode 100644 Custom/Themes/AllTuts/images/bk_slider.png create mode 100644 Custom/Themes/AllTuts/images/bk_slider_caption.png create mode 100644 Custom/Themes/AllTuts/images/bk_social_links.png create mode 100644 Custom/Themes/AllTuts/images/bk_top_hover.png create mode 100644 Custom/Themes/AllTuts/images/bk_twitter_box_bottom.png create mode 100644 Custom/Themes/AllTuts/images/bk_twitter_box_top.png create mode 100644 Custom/Themes/AllTuts/images/bullet_list.png create mode 100644 Custom/Themes/AllTuts/images/but_addcomment.png create mode 100644 Custom/Themes/AllTuts/images/but_next.png create mode 100644 Custom/Themes/AllTuts/images/but_previous.png create mode 100644 Custom/Themes/AllTuts/images/delicious.png create mode 100644 Custom/Themes/AllTuts/images/digg.png create mode 100644 Custom/Themes/AllTuts/images/down.gif create mode 100644 Custom/Themes/AllTuts/images/facebook.png create mode 100644 Custom/Themes/AllTuts/images/ico_author.png create mode 100644 Custom/Themes/AllTuts/images/ico_becomeauthor.png create mode 100644 Custom/Themes/AllTuts/images/ico_comments.png create mode 100644 Custom/Themes/AllTuts/images/ico_facebook.png create mode 100644 Custom/Themes/AllTuts/images/ico_linkedin.png create mode 100644 Custom/Themes/AllTuts/images/ico_readmore.png create mode 100644 Custom/Themes/AllTuts/images/ico_rss.png create mode 100644 Custom/Themes/AllTuts/images/ico_tag.png create mode 100644 Custom/Themes/AllTuts/images/ico_twitter.png create mode 100644 Custom/Themes/AllTuts/images/list_red_bullet.png create mode 100644 Custom/Themes/AllTuts/images/logo.png create mode 100644 Custom/Themes/AllTuts/images/reddit.png create mode 100644 Custom/Themes/AllTuts/images/right.gif create mode 100644 Custom/Themes/AllTuts/images/site5.png create mode 100644 Custom/Themes/AllTuts/images/site5_125x125.jpg create mode 100644 Custom/Themes/AllTuts/images/site5bottom.png create mode 100644 Custom/Themes/AllTuts/images/star.png create mode 100644 Custom/Themes/AllTuts/images/stumbleupon.png create mode 100644 Custom/Themes/AllTuts/images/twitter.png create mode 100644 Custom/Themes/AllTuts/images/youradhere.jpg create mode 100644 Custom/Themes/AllTuts/js/ddsmoothmenu.js create mode 100644 Custom/Themes/AllTuts/js/jquery-1.7.2.min.js create mode 100644 Custom/Themes/AllTuts/js/jquery.form.js create mode 100644 Custom/Themes/AllTuts/noavatar.jpg create mode 100644 Custom/Themes/AllTuts/site.cshtml create mode 100644 Custom/Themes/AllTuts/style.css create mode 100644 Custom/Themes/AllTuts/theme.png create mode 100644 Custom/Themes/AllTuts/theme.xml create mode 100644 Custom/Themes/ContactManager/Changelog.txt create mode 100644 Custom/Themes/ContactManager/CommentView.ascx create mode 100644 Custom/Themes/ContactManager/PostView.ascx create mode 100644 Custom/Themes/ContactManager/WidgetContainer.ascx create mode 100644 Custom/Themes/ContactManager/img/BtnSearch.png create mode 100644 Custom/Themes/ContactManager/img/effect_1.png create mode 100644 Custom/Themes/ContactManager/img/effect_2.png create mode 100644 Custom/Themes/ContactManager/img/effect_3.png create mode 100644 Custom/Themes/ContactManager/img/logo.png create mode 100644 Custom/Themes/ContactManager/img/nav.png create mode 100644 Custom/Themes/ContactManager/img/social.png create mode 100644 Custom/Themes/ContactManager/img/success.png create mode 100644 Custom/Themes/ContactManager/img/up.png create mode 100644 Custom/Themes/ContactManager/include/index.js create mode 100644 Custom/Themes/ContactManager/include/modernizr.js create mode 100644 Custom/Themes/ContactManager/include/styles.min.css create mode 100644 Custom/Themes/ContactManager/newsletter.html create mode 100644 Custom/Themes/ContactManager/site.master create mode 100644 Custom/Themes/ContactManager/site.master.cs create mode 100644 Custom/Themes/ContactManager/theme.xml create mode 100644 Custom/Themes/Photosbydi/Changelog.txt create mode 100644 Custom/Themes/Photosbydi/CommentView.ascx create mode 100644 Custom/Themes/Photosbydi/PostView.ascx create mode 100644 Custom/Themes/Photosbydi/WidgetContainer.ascx create mode 100644 Custom/Themes/Photosbydi/img/BtnSearch.png create mode 100644 Custom/Themes/Photosbydi/img/effect_1.png create mode 100644 Custom/Themes/Photosbydi/img/effect_2.png create mode 100644 Custom/Themes/Photosbydi/img/effect_3.png create mode 100644 Custom/Themes/Photosbydi/img/logo.png create mode 100644 Custom/Themes/Photosbydi/img/nav.png create mode 100644 Custom/Themes/Photosbydi/img/social.png create mode 100644 Custom/Themes/Photosbydi/img/success.png create mode 100644 Custom/Themes/Photosbydi/img/up.png create mode 100644 Custom/Themes/Photosbydi/include/index.js create mode 100644 Custom/Themes/Photosbydi/include/modernizr.js create mode 100644 Custom/Themes/Photosbydi/include/styles.min.css create mode 100644 Custom/Themes/Photosbydi/newsletter.html create mode 100644 Custom/Themes/Photosbydi/site.master create mode 100644 Custom/Themes/Photosbydi/site.master.cs create mode 100644 Custom/Themes/Photosbydi/theme.xml create mode 100644 Custom/Themes/StFrancis/Changelog.txt create mode 100644 Custom/Themes/StFrancis/CommentView.ascx create mode 100644 Custom/Themes/StFrancis/PostView.ascx create mode 100644 Custom/Themes/StFrancis/WidgetContainer.ascx create mode 100644 Custom/Themes/StFrancis/img/BtnSearch.png create mode 100644 Custom/Themes/StFrancis/img/effect_1.png create mode 100644 Custom/Themes/StFrancis/img/effect_2.png create mode 100644 Custom/Themes/StFrancis/img/effect_3.png create mode 100644 Custom/Themes/StFrancis/img/logo.png create mode 100644 Custom/Themes/StFrancis/img/nav.png create mode 100644 Custom/Themes/StFrancis/img/social.png create mode 100644 Custom/Themes/StFrancis/img/success.png create mode 100644 Custom/Themes/StFrancis/img/up.png create mode 100644 Custom/Themes/StFrancis/include/index.js create mode 100644 Custom/Themes/StFrancis/include/modernizr.js create mode 100644 Custom/Themes/StFrancis/include/styles.min.css create mode 100644 Custom/Themes/StFrancis/newsletter.html create mode 100644 Custom/Themes/StFrancis/site.master.cs create mode 100644 Custom/Themes/StFrancis/theme.xml create mode 100644 Custom/Themes/Standard-2017/CommentForm.ascx create mode 100644 Custom/Themes/Standard-2017/CommentView.ascx create mode 100644 Custom/Themes/Standard-2017/PostNavigation.ascx create mode 100644 Custom/Themes/Standard-2017/PostView.ascx create mode 100644 Custom/Themes/Standard-2017/RelatedPosts.ascx create mode 100644 Custom/Themes/Standard-2017/WidgetContainer.ascx create mode 100644 Custom/Themes/Standard-2017/newsletter.html create mode 100644 Custom/Themes/Standard-2017/site.master create mode 100644 Custom/Themes/Standard-2017/src/css/bootstrap.min.css create mode 100644 Custom/Themes/Standard-2017/src/css/font-awesome.min.css create mode 100644 Custom/Themes/Standard-2017/src/css/styles.min.css create mode 100644 Custom/Themes/Standard-2017/src/fonts/FontAwesome.otf create mode 100644 Custom/Themes/Standard-2017/src/fonts/fontawesome-webfont.eot create mode 100644 Custom/Themes/Standard-2017/src/fonts/fontawesome-webfont.svg create mode 100644 Custom/Themes/Standard-2017/src/fonts/fontawesome-webfont.ttf create mode 100644 Custom/Themes/Standard-2017/src/fonts/fontawesome-webfont.woff create mode 100644 Custom/Themes/Standard-2017/src/fonts/fontawesome-webfont.woff2 create mode 100644 Custom/Themes/Standard-2017/src/img/logo.png create mode 100644 Custom/Themes/Standard-2017/src/js/bootstrap.min.js create mode 100644 Custom/Themes/Standard-2017/src/js/custom.js create mode 100644 Custom/Themes/Standard-2017/theme.png create mode 100644 Custom/Themes/Standard-2017/theme.xml create mode 100644 Custom/Themes/Standard/CommentForm.ascx create mode 100644 Custom/Themes/Standard/CommentView.ascx create mode 100644 Custom/Themes/Standard/PostNavigation.ascx create mode 100644 Custom/Themes/Standard/PostView.ascx create mode 100644 Custom/Themes/Standard/RelatedPosts.ascx create mode 100644 Custom/Themes/Standard/WidgetContainer.ascx create mode 100644 Custom/Themes/Standard/newsletter.html create mode 100644 Custom/Themes/Standard/page.master create mode 100644 Custom/Themes/Standard/site.master create mode 100644 Custom/Themes/Standard/src/css/bootstrap.min.css create mode 100644 Custom/Themes/Standard/src/css/font-awesome.min.css create mode 100644 Custom/Themes/Standard/src/css/styles.min.css create mode 100644 Custom/Themes/Standard/src/fonts/FontAwesome.otf create mode 100644 Custom/Themes/Standard/src/fonts/fontawesome-webfont.eot create mode 100644 Custom/Themes/Standard/src/fonts/fontawesome-webfont.svg create mode 100644 Custom/Themes/Standard/src/fonts/fontawesome-webfont.ttf create mode 100644 Custom/Themes/Standard/src/fonts/fontawesome-webfont.woff create mode 100644 Custom/Themes/Standard/src/fonts/fontawesome-webfont.woff2 create mode 100644 Custom/Themes/Standard/src/img/logo.png create mode 100644 Custom/Themes/Standard/src/js/bootstrap.min.js create mode 100644 Custom/Themes/Standard/src/js/custom.js create mode 100644 Custom/Themes/Standard/src/js/jquery-3.2.1.min.js create mode 100644 Custom/Themes/Standard/src/js/perfect-scrollbar.min.js create mode 100644 Custom/Themes/Standard/src/js/popper.min.js create mode 100644 Custom/Themes/Standard/theme.png create mode 100644 Custom/Themes/Standard/theme.xml create mode 100644 Custom/Themes/WingFlash/Changelog.txt create mode 100644 Custom/Themes/WingFlash/CommentView.ascx create mode 100644 Custom/Themes/WingFlash/PostView.ascx create mode 100644 Custom/Themes/WingFlash/WidgetContainer.ascx create mode 100644 Custom/Themes/WingFlash/img/BtnSearch.png create mode 100644 Custom/Themes/WingFlash/img/effect_1.png create mode 100644 Custom/Themes/WingFlash/img/effect_2.png create mode 100644 Custom/Themes/WingFlash/img/effect_3.png create mode 100644 Custom/Themes/WingFlash/img/logo.png create mode 100644 Custom/Themes/WingFlash/img/nav.png create mode 100644 Custom/Themes/WingFlash/img/social.png create mode 100644 Custom/Themes/WingFlash/img/success.png create mode 100644 Custom/Themes/WingFlash/img/up.png create mode 100644 Custom/Themes/WingFlash/include/index.js create mode 100644 Custom/Themes/WingFlash/include/modernizr.js create mode 100644 Custom/Themes/WingFlash/include/styles.min.css create mode 100644 Custom/Themes/WingFlash/newsletter.html create mode 100644 Custom/Themes/WingFlash/site.master create mode 100644 Custom/Themes/WingFlash/site.master.cs create mode 100644 Custom/Themes/WingFlash/theme.xml create mode 100644 Custom/Widgets/Administration/screenshot.png create mode 100644 Custom/Widgets/Administration/widget.cshtml create mode 100644 Custom/Widgets/Administration/widget.xml create mode 100644 Custom/Widgets/AuthorList/screenshot.png create mode 100644 Custom/Widgets/AuthorList/widget.cshtml create mode 100644 Custom/Widgets/AuthorList/widget.xml create mode 100644 Custom/Widgets/BlogList/screenshot.png create mode 100644 Custom/Widgets/BlogList/widget.cshtml create mode 100644 Custom/Widgets/BlogList/widget.xml create mode 100644 Custom/Widgets/BlogRoll/edit.cshtml create mode 100644 Custom/Widgets/BlogRoll/screenshot.png create mode 100644 Custom/Widgets/BlogRoll/widget.cshtml create mode 100644 Custom/Widgets/BlogRoll/widget.xml create mode 100644 Custom/Widgets/CategoryList/edit.cshtml create mode 100644 Custom/Widgets/CategoryList/screenshot.png create mode 100644 Custom/Widgets/CategoryList/widget.cshtml create mode 100644 Custom/Widgets/CategoryList/widget.xml create mode 100644 Custom/Widgets/CommentList/edit.cshtml create mode 100644 Custom/Widgets/CommentList/screenshot.png create mode 100644 Custom/Widgets/CommentList/widget.cshtml create mode 100644 Custom/Widgets/CommentList/widget.xml create mode 100644 Custom/Widgets/LinkList/edit.cshtml create mode 100644 Custom/Widgets/LinkList/screenshot.png create mode 100644 Custom/Widgets/LinkList/widget.cshtml create mode 100644 Custom/Widgets/LinkList/widget.xml create mode 100644 Custom/Widgets/MonthList/screenshot.png create mode 100644 Custom/Widgets/MonthList/widget.cshtml create mode 100644 Custom/Widgets/MonthList/widget.xml create mode 100644 Custom/Widgets/Newsletter/edit.cshtml create mode 100644 Custom/Widgets/Newsletter/screenshot.png create mode 100644 Custom/Widgets/Newsletter/widget.cshtml create mode 100644 Custom/Widgets/Newsletter/widget.xml create mode 100644 Custom/Widgets/NewsletterR1/edit.cshtml create mode 100644 Custom/Widgets/NewsletterR1/screenshot.png create mode 100644 Custom/Widgets/NewsletterR1/widget.cshtml create mode 100644 Custom/Widgets/NewsletterR1/widget.xml create mode 100644 Custom/Widgets/PageList/screenshot.png create mode 100644 Custom/Widgets/PageList/widget.cshtml create mode 100644 Custom/Widgets/PageList/widget.xml create mode 100644 Custom/Widgets/PostList/edit.cshtml create mode 100644 Custom/Widgets/PostList/screenshot.png create mode 100644 Custom/Widgets/PostList/widget.cshtml create mode 100644 Custom/Widgets/PostList/widget.xml create mode 100644 Custom/Widgets/Search/screenshot.png create mode 100644 Custom/Widgets/Search/widget.cshtml create mode 100644 Custom/Widgets/Search/widget.xml create mode 100644 Custom/Widgets/TagCloud/edit.cshtml create mode 100644 Custom/Widgets/TagCloud/screenshot.png create mode 100644 Custom/Widgets/TagCloud/widget.cshtml create mode 100644 Custom/Widgets/TagCloud/widget.xml create mode 100644 Custom/Widgets/TextBox/edit.cshtml create mode 100644 Custom/Widgets/TextBox/screenshot.png create mode 100644 Custom/Widgets/TextBox/widget.cshtml create mode 100644 Custom/Widgets/TextBox/widget.xml create mode 100644 Custom/Widgets/common.cshtml create mode 100644 lib/AjaxMin.dll create mode 100644 lib/BlogEngine.Core.dll create mode 100644 lib/BlogEngine.Wiki.dll create mode 100644 lib/BlogML.dll create mode 100644 lib/Gwn.BlogEngine.Library.dll create mode 100644 lib/Microsoft.Web.Infrastructure.dll create mode 100644 lib/NuGet.Core.dll create mode 100644 lib/System.Web.Helpers.dll create mode 100644 lib/System.Web.Optimization.dll create mode 100644 lib/System.Web.Razor.dll create mode 100644 lib/System.Web.WebPages.Deployment.dll create mode 100644 lib/System.Web.WebPages.Razor.dll create mode 100644 lib/System.Web.WebPages.dll diff --git a/.gitignore b/.gitignore index 5e7dd7079..38a6f8d50 100644 --- a/.gitignore +++ b/.gitignore @@ -188,3 +188,11 @@ BlogEngine/.vs/ BlogEngine/BlogEngine.NET/App_Data/datastore/extensions/*.xml /.vs/slnx.sqlite /.vs/BlogEngine.NET/config/applicationhost.config +/BlogEngine/BlogEngine.NET/.vs +/BlogEngine/BlogEngine.Core/.vs +/BlogEngine/Adventure.Common/.vs +/BlogEngine/BlogEngine.Wiki/.vs +*.DS_Store +/BlogEngine/Gwn.BlogEngine.Library/.vs +/BlogEngine/BlogEngine.Wiki.Test/.vs +/BlogEngine/BlogEngine.Tests/.vs diff --git a/BlogEngine.sln b/BlogEngine.sln new file mode 100644 index 000000000..54837bf22 --- /dev/null +++ b/BlogEngine.sln @@ -0,0 +1,82 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.35122.118 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlogEngine.NET", "BlogEngine\BlogEngine.NET\BlogEngine.NET.csproj", "{5F3C7419-FA8B-4563-850A-C56B324CF18A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlogEngine.Core", "BlogEngine\BlogEngine.Core\BlogEngine.Core.csproj", "{9ED9914A-FB6E-4D21-8C71-9122E8C3076B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlogEngine.Tests", "BlogEngine\BlogEngine.Tests\BlogEngine.Tests.csproj", "{7011BC76-BB91-4D2B-8B83-F810A16950CD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Adventure.Common", "BlogEngine\Adventure.Common\Adventure.Common.csproj", "{50E669A2-C959-47A4-BDD9-DFD23A76D61D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Adventure.Tests", "BlogEngine\Adventure.Tests\Adventure.Tests.csproj", "{3B3AC37F-4338-491E-B632-C53021F37E91}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlogEngine.Wiki", "BlogEngine\BlogEngine.Wiki\BlogEngine.Wiki.csproj", "{A70F3293-C041-4D2A-827C-D8ADB8D81D7A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlogEngine.Wiki.Test", "BlogEngine\BlogEngine.Wiki.Test\BlogEngine.Wiki.Test.csproj", "{EDB3C963-FB01-4D4D-B463-43D491CC8CDD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gwn.BlogEngine.Library", "BlogEngine\Gwn.BlogEngine.Library\Gwn.BlogEngine.Library.csproj", "{2CDC075D-B71C-40C2-852C-2A47A43D3847}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{598E3936-17FC-4EFC-A265-EFB7B705E029}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{FA936E79-C2DB-4DB6-99F1-79FF9BCE6145}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{36C6B21B-2BCA-45A3-8858-F44A61A8B2D8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5F3C7419-FA8B-4563-850A-C56B324CF18A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5F3C7419-FA8B-4563-850A-C56B324CF18A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5F3C7419-FA8B-4563-850A-C56B324CF18A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5F3C7419-FA8B-4563-850A-C56B324CF18A}.Release|Any CPU.Build.0 = Release|Any CPU + {9ED9914A-FB6E-4D21-8C71-9122E8C3076B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9ED9914A-FB6E-4D21-8C71-9122E8C3076B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9ED9914A-FB6E-4D21-8C71-9122E8C3076B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9ED9914A-FB6E-4D21-8C71-9122E8C3076B}.Release|Any CPU.Build.0 = Release|Any CPU + {7011BC76-BB91-4D2B-8B83-F810A16950CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7011BC76-BB91-4D2B-8B83-F810A16950CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7011BC76-BB91-4D2B-8B83-F810A16950CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7011BC76-BB91-4D2B-8B83-F810A16950CD}.Release|Any CPU.Build.0 = Release|Any CPU + {50E669A2-C959-47A4-BDD9-DFD23A76D61D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {50E669A2-C959-47A4-BDD9-DFD23A76D61D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50E669A2-C959-47A4-BDD9-DFD23A76D61D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {50E669A2-C959-47A4-BDD9-DFD23A76D61D}.Release|Any CPU.Build.0 = Release|Any CPU + {3B3AC37F-4338-491E-B632-C53021F37E91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B3AC37F-4338-491E-B632-C53021F37E91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B3AC37F-4338-491E-B632-C53021F37E91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B3AC37F-4338-491E-B632-C53021F37E91}.Release|Any CPU.Build.0 = Release|Any CPU + {A70F3293-C041-4D2A-827C-D8ADB8D81D7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A70F3293-C041-4D2A-827C-D8ADB8D81D7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A70F3293-C041-4D2A-827C-D8ADB8D81D7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A70F3293-C041-4D2A-827C-D8ADB8D81D7A}.Release|Any CPU.Build.0 = Release|Any CPU + {EDB3C963-FB01-4D4D-B463-43D491CC8CDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EDB3C963-FB01-4D4D-B463-43D491CC8CDD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EDB3C963-FB01-4D4D-B463-43D491CC8CDD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EDB3C963-FB01-4D4D-B463-43D491CC8CDD}.Release|Any CPU.Build.0 = Release|Any CPU + {2CDC075D-B71C-40C2-852C-2A47A43D3847}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2CDC075D-B71C-40C2-852C-2A47A43D3847}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2CDC075D-B71C-40C2-852C-2A47A43D3847}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2CDC075D-B71C-40C2-852C-2A47A43D3847}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {7011BC76-BB91-4D2B-8B83-F810A16950CD} = {FA936E79-C2DB-4DB6-99F1-79FF9BCE6145} + {50E669A2-C959-47A4-BDD9-DFD23A76D61D} = {598E3936-17FC-4EFC-A265-EFB7B705E029} + {3B3AC37F-4338-491E-B632-C53021F37E91} = {36C6B21B-2BCA-45A3-8858-F44A61A8B2D8} + {A70F3293-C041-4D2A-827C-D8ADB8D81D7A} = {598E3936-17FC-4EFC-A265-EFB7B705E029} + {EDB3C963-FB01-4D4D-B463-43D491CC8CDD} = {36C6B21B-2BCA-45A3-8858-F44A61A8B2D8} + {2CDC075D-B71C-40C2-852C-2A47A43D3847} = {598E3936-17FC-4EFC-A265-EFB7B705E029} + {36C6B21B-2BCA-45A3-8858-F44A61A8B2D8} = {598E3936-17FC-4EFC-A265-EFB7B705E029} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C0B26E56-7E44-4150-A163-E2A5E2347FDE} + EndGlobalSection +EndGlobal diff --git a/BlogEngine/Adventure.Common/Adventure.Common.csproj b/BlogEngine/Adventure.Common/Adventure.Common.csproj new file mode 100644 index 000000000..12219f689 --- /dev/null +++ b/BlogEngine/Adventure.Common/Adventure.Common.csproj @@ -0,0 +1,49 @@ + + + + + Debug + AnyCPU + {50E669A2-C959-47A4-BDD9-DFD23A76D61D} + Library + Properties + Adventure.Common + Adventure.Common + v4.8 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BlogEngine/Adventure.Common/Profile/DynamicProfile.cs b/BlogEngine/Adventure.Common/Profile/DynamicProfile.cs new file mode 100644 index 000000000..cbb28c32e --- /dev/null +++ b/BlogEngine/Adventure.Common/Profile/DynamicProfile.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Dynamic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Adventure.Common.Profile +{ + public class DynamicProfile : DynamicObject + { + Dictionary dictionary = new Dictionary(); + public int Count { get { return dictionary.Count; } } + + // If you try to get a value of a property not defined in the class, this method is called. + public override bool TryGetMember(GetMemberBinder binder, out object result) + { + // Converting the property name to lowercase so that property names become case-insensitive. + string name = binder.Name.ToLower(); + + // If the property name is found in a dictionary, set the result parameter to the property + // value and return true. Otherwise, return false. + return dictionary.TryGetValue(name, out result); + } + + // If you try to set a value of a property that is not defined in the class, this method is called. + public override bool TrySetMember(SetMemberBinder binder, object value) + { + // Converting the property name to lowercase so that property names become case-insensitive. + dictionary[binder.Name.ToLower()] = value; + + // You can always add a value to a dictionary, + // so this method always returns true. + return true; + } + } + + +} diff --git a/BlogEngine/Adventure.Common/Properties/AssemblyInfo.cs b/BlogEngine/Adventure.Common/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..2770f4b72 --- /dev/null +++ b/BlogEngine/Adventure.Common/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Adventure.Common")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Adventure.Common")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("50e669a2-c959-47a4-bdd9-dfd23a76d61d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BlogEngine/Adventure.Tests/Adventure.Tests.csproj b/BlogEngine/Adventure.Tests/Adventure.Tests.csproj new file mode 100644 index 000000000..cd38ef012 --- /dev/null +++ b/BlogEngine/Adventure.Tests/Adventure.Tests.csproj @@ -0,0 +1,22 @@ + + + + + + + netcoreapp2.1 + + false + + + + + + + + + + + + + diff --git a/BlogEngine/Adventure.Tests/UnitTest1.cs b/BlogEngine/Adventure.Tests/UnitTest1.cs new file mode 100644 index 000000000..289476c20 --- /dev/null +++ b/BlogEngine/Adventure.Tests/UnitTest1.cs @@ -0,0 +1,18 @@ +using Adventure.Common.Profile; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Adventure.Tests +{ + [TestClass] + public class UnitTest1 + { + [TestMethod] + public void TestMethod1() + { + dynamic profile = new DynamicProfile(); + profile.LastName = "Kratochvil"; + profile.FirstName = "Bill"; + + } + } +} diff --git a/BlogEngine/BlogEngine.Core/API/MetaWeblog/MetaWeblogHandler.cs b/BlogEngine/BlogEngine.Core/API/MetaWeblog/MetaWeblogHandler.cs index d5851e32a..2a577d2de 100644 --- a/BlogEngine/BlogEngine.Core/API/MetaWeblog/MetaWeblogHandler.cs +++ b/BlogEngine/BlogEngine.Core/API/MetaWeblog/MetaWeblogHandler.cs @@ -329,7 +329,7 @@ internal bool EditPost(string postId, string userName, string password, MWAPost post.IsPublished = publish; post.Slug = sentPost.slug; post.Description = sentPost.excerpt; - post.DateCreated = sentPost.postDate; + //post.DateCreated = sentPost.postDate; // Date create should not be updated on edits. if (sentPost.commentPolicy != string.Empty) { diff --git a/BlogEngine/BlogEngine.Core/API/MetaWeblog/XMLRPCRequest.cs b/BlogEngine/BlogEngine.Core/API/MetaWeblog/XMLRPCRequest.cs index d2fd04f58..601da394d 100644 --- a/BlogEngine/BlogEngine.Core/API/MetaWeblog/XMLRPCRequest.cs +++ b/BlogEngine/BlogEngine.Core/API/MetaWeblog/XMLRPCRequest.cs @@ -327,7 +327,7 @@ private static MWAPost GetPost(XmlNode node) /// private void LoadXmlRequest(string xml) { - var request = new XmlDocument() { XmlResolver = null }; + var request = new XmlDocument(); try { if (!(xml.StartsWith(" +/// Mirrors Profile +/// +namespace BlogEngine.Core { using System; using System.Collections.Generic; @@ -12,98 +15,41 @@ /// public class AuthorProfile : BusinessBase { + private string code; #region Constants and Fields - /// - /// The sync root. - /// private static readonly object SyncRoot = new object(); - - /// - /// The profiles. - /// private static Dictionary> profiles; - - /// - /// The about me. - /// + private string zip; + private string website; private string aboutMe; - - /// - /// The birthday. - /// + private string address; + private string addressAlt; + private string recordId; private DateTime birthday; - - /// - /// The city town. - /// private string cityTown; - - /// - /// The company. - /// private string company; - - /// - /// The country. - /// private string country; - - /// - /// The display name. - /// private string displayName; - - /// - /// The email address. - /// private string emailAddress; - - /// - /// The first name. - /// private string firstName; - - /// - /// The is private. - /// private bool isprivate; - - /// - /// The last name. - /// private string lastName; - - /// - /// The middle name. - /// private string middleName; - - /// - /// The phone fax. - /// private string phoneFax; - - /// - /// The phone main. - /// private string phoneMain; - - /// - /// The phone mobile. - /// private string phoneMobile; - - /// - /// The photo url. - /// private string photoUrl; - - /// - /// The region state. - /// private string regionState; - + private string userId; + private string newsletter; + private string otherName; + private string organization; + private string title; + private string spouse; + private string workPhone; + private string fullName; + private string information; #endregion #region Constructors and Destructors @@ -163,107 +109,177 @@ public static List Profiles #endregion - #region Properties + public string RecordId + { + get + { + return this.recordId; + } - /// - /// Gets or sets AboutMe. - /// - public string AboutMe + set + { + base.SetValue("RecordId", value, ref this.recordId); + } + } + + public string UserId { get { - return this.aboutMe; + return this.userId; } set { - base.SetValue("AboutMe", value, ref this.aboutMe); + base.SetValue("UserId", value, ref this.userId); } } - /// - /// Gets or sets Birthday. - /// - public DateTime Birthday + public string Information { get { - return this.birthday; + return this.information; + } + set + { + base.SetValue("Information", value, ref this.information); + } + } + + public string Title + { + get { return this.title; } + set { base.SetValue("Title", value, ref this.title); } + } + + public string DisplayName + { + get + { + return this.displayName; } set { - base.SetValue("Birthday", value, ref this.birthday); + base.SetValue("DisplayName", value, ref this.displayName); } } - /// - /// Gets or sets CityTown. - /// - public string CityTown + public string UserName { get { - return this.cityTown; + return this.Id; } + set + { + // do nothing; + } + } + public string FullName + { + get + { + return this.fullName; + } set { - base.SetValue("CityTown", value, ref this.cityTown); + base.SetValue("FullName", value, ref this.fullName); } } - /// - /// Gets or sets Company. - /// - public string Company + public string OtherName + { + get { return this.otherName; } + set { base.SetValue("OtherName", value, ref this.otherName); } + } + + public string FirstName { get { - return this.company; + return this.firstName; } set { - base.SetValue("Company", value, ref this.company); + base.SetValue("FirstName", value, ref this.firstName); } } - /// - /// Gets or sets Country. - /// - public string Country + public string LastName { get { - return this.country; + return this.lastName; } set { - base.SetValue("Country", value, ref this.country); + base.SetValue("LastName", value, ref this.lastName); } } - /// - /// Gets or sets DisplayName. - /// - public string DisplayName + public string MiddleName { get { - return this.displayName; + return this.middleName; } set { - base.SetValue("DisplayName", value, ref this.displayName); + base.SetValue("MiddleName", value, ref this.middleName); + } + } + + public string Spouse + { + get { return this.spouse; } + set { base.SetValue("Spouse", value, ref this.spouse); } + } + + public string AboutMe + { + get + { + return this.aboutMe; + } + + set + { + base.SetValue("AboutMe", value, ref this.aboutMe); + } + } + + public string PhotoUrl + { + get + { + return this.photoUrl; + } + + set + { + base.SetValue("PhotoUrl", value, ref this.photoUrl); + } + } + + public DateTime Birthday + { + get + { + return this.birthday; + } + + set + { + base.SetValue("Birthday", value, ref this.birthday); } } - /// - /// Gets or sets EmailAddress. - /// public string EmailAddress { get @@ -277,84 +293,83 @@ public string EmailAddress } } - /// - /// Gets or sets FirstName. - /// - public string FirstName + public string Address { get { - return this.firstName; + return this.address; } set { - base.SetValue("FirstName", value, ref this.firstName); + base.SetValue("Address", value, ref this.address); } } - /// - /// Gets FullName. - /// - public string FullName + public string AddressAlt { get { - return $"{FirstName} {MiddleName} {LastName}".Replace(" ", " "); + return this.addressAlt; + } + + set + { + base.SetValue("AddressAlt", value, ref this.addressAlt); } } - /// - /// Gets or sets a value indicating whether Private. - /// - public bool Private + public string CityTown { get { - return this.isprivate; + return this.cityTown; } set { - base.SetValue("Private", value, ref this.isprivate); + base.SetValue("CityTown", value, ref this.cityTown); } } - /// - /// Gets or sets LastName. - /// - public string LastName + public string RegionState { get { - return this.lastName; + return this.regionState; } set { - base.SetValue("LastName", value, ref this.lastName); + base.SetValue("RegionState", value, ref this.regionState); } } - /// - /// Gets or sets MiddleName. - /// - public string MiddleName + public string Zip + { + get { return this.zip; } + set { base.SetValue("Zip", value, ref this.zip); } + } + + public string Country { get { - return this.middleName; + return this.country; } set { - base.SetValue("MiddleName", value, ref this.middleName); + base.SetValue("Country", value, ref this.country); } } - /// - /// Gets or sets PhoneFax. - /// + public string WorkPhone + { + get { return this.workPhone; } + set { base.SetValue("WorkPhone", value, ref this.workPhone); } + } + public string PhoneFax { get @@ -368,95 +383,94 @@ public string PhoneFax } } - /// - /// Gets or sets PhoneMain. - /// - public string PhoneMain + public string PhoneMobile { get { - return this.phoneMain; + return this.phoneMobile; } set { - base.SetValue("PhoneMain", value, ref this.phoneMain); + base.SetValue("PhoneMobile", value, ref this.phoneMobile); } } - /// - /// Gets or sets PhoneMobile. - /// - public string PhoneMobile + public string PhoneMain { get { - return this.phoneMobile; + return this.phoneMain; } set { - base.SetValue("PhoneMobile", value, ref this.phoneMobile); + base.SetValue("PhoneMain", value, ref this.phoneMain); } } - /// - /// Gets or sets PhotoURL. - /// - public string PhotoUrl + public string Company { get { - return this.photoUrl; + return this.company; } set { - base.SetValue("PhotoUrl", value, ref this.photoUrl); + base.SetValue("Company", value, ref this.company); } } - /// - /// Gets or sets RegionState. - /// - public string RegionState + public string Organization + { + get { return this.organization; } + set { base.SetValue("Organization", value, ref this.organization); } + } + + public string Website + { + get { return this.website; } + set { base.SetValue("Website", value, ref this.website); } + } + + public string Newsletter + { + get { return this.newsletter; } + set { base.SetValue("Newsletter", value, ref this.newsletter); } + } + + public string Code + { + get { return this.code; } + set { base.SetValue("Code", value, ref this.code); } + } + + public bool Private { get { - return this.regionState; + return this.isprivate; } set { - base.SetValue("RegionState", value, ref this.regionState); + base.SetValue("Private", value, ref this.isprivate); } } - /// - /// Gets RelativeLink. - /// public string RelativeLink { get { return $"{Utils.RelativeWebRoot}author/{Id}{BlogConfig.FileExtension}"; } - } - - /// - /// Gets UserName. - /// - public string UserName - { - get + set { - return this.Id; + // Do nothing } } - /// - /// Custom fields - /// public Dictionary CustomFields { get @@ -478,9 +492,120 @@ public Dictionary CustomFields } } - #endregion + public static Profile GetPopulatedProfile(string id) + { + if (!String.IsNullOrWhiteSpace(id)) + { + var pf = GetProfile(id); + if (pf == null) + { + pf = new AuthorProfile(id); + pf.Birthday = DateTime.Parse("01/01/1900"); + pf.DisplayName = id; + pf.EmailAddress = Utils.GetUserEmail(id); + pf.FirstName = id; + pf.Private = true; + pf.Save(); + } + var profile = new Profile(pf); + return profile; + } + return null; + } + + public static bool UpdateUserProfile(BlogUser user) + { + if (user == null || string.IsNullOrEmpty(user.UserName)) + return false; + + var authorProfile = GetProfile(user.UserName) ?? new AuthorProfile(user.UserName); + try + { + if (user.Profile == null) + { + user.Profile = new Profile(); + user.Profile.EmailAddress = user.Email; + user.Profile.UserName = user.UserName; + } - #region Public Methods + var srcProps = user.Profile.GetType().GetProperties(); + var dstProps = authorProfile.GetType().GetProperties(); + + foreach (var source in srcProps) + { + var name = source.Name; + var value = source.GetValue(user.Profile); + + foreach (var dest in dstProps) + { + if (dest.Name == name) + { + switch (dest.PropertyType.Name) + { + case "DateTime": + DateTime date = DateTime.MinValue; + if (DateTime.TryParse($"{value}", out date)) + dest.SetValue(authorProfile, date); + break; + + case "Boolean": + dest.SetValue(authorProfile, value); + break; + + default: + dest.SetValue(authorProfile, $"{value}"); + break; + } + } + } + } + + authorProfile.Save(); + UpdateProfileImage(authorProfile); + } + catch (Exception ex) + { + Utils.Log("Error editing profile", ex); + return false; + } + return true; + } + + /// + /// Update profile image + /// + /// + static void UpdateProfileImage(AuthorProfile profile) + { + var dir = BlogEngine.Core.Providers.BlogService.GetDirectory("/avatars"); + + if (string.IsNullOrEmpty(profile.PhotoUrl)) + { + foreach (var f in dir.Files) + { + var dot = f.Name.IndexOf("."); + var img = dot > 0 ? f.Name.Substring(0, dot) : f.Name; + if (profile.UserName == img) + { + f.Delete(); + } + } + } + else + { + foreach (var f in dir.Files) + { + var dot = f.Name.IndexOf("."); + var img = dot > 0 ? f.Name.Substring(0, dot) : f.Name; + // delete old profile image saved with different name + // for example was admin.jpg and now admin.png + if (profile.UserName == img && f.Name != profile.PhotoUrl.Replace("\"", "")) + { + f.Delete(); + } + } + } + } /// /// Gets the profile. @@ -515,56 +640,6 @@ public override string ToString() return this.FullName; } - /// - /// Returns the author profile as a JsonProfile object for json serialization. - /// - /// - /// - public static Profile ToJson(string username) - { - var j = new Profile(); - var p = Profiles.Find(ap => ap.UserName.Equals(username, StringComparison.OrdinalIgnoreCase)); - - if (p != null) - { - j.AboutMe = string.IsNullOrEmpty(p.AboutMe) ? "" : p.aboutMe; - j.Birthday = p.Birthday.ToShortDateString(); - j.CityTown = string.IsNullOrEmpty(p.CityTown) ? "" : p.CityTown; - j.Country = string.IsNullOrEmpty(p.Country) ? "" : p.Country; - j.DisplayName = p.DisplayName; - j.EmailAddress = p.EmailAddress; - j.PhoneFax = string.IsNullOrEmpty(p.PhoneFax) ? "" : p.PhoneFax; - j.FirstName = string.IsNullOrEmpty(p.FirstName) ? "" : p.FirstName; - j.Private = p.Private; - j.LastName = string.IsNullOrEmpty(p.LastName) ? "" : p.LastName; - j.MiddleName = string.IsNullOrEmpty(p.MiddleName) ? "" : p.MiddleName; - j.PhoneMobile = string.IsNullOrEmpty(p.PhoneMobile) ? "" : p.PhoneMobile; - j.PhoneMain = string.IsNullOrEmpty(p.PhoneMain) ? "" : p.PhoneMain; - j.PhotoUrl = string.IsNullOrEmpty(p.PhotoUrl) ? "" : p.PhotoUrl; - j.RegionState = string.IsNullOrEmpty(p.RegionState) ? "" : p.RegionState; - } - else - { - j.AboutMe = ""; - j.Birthday = "01/01/1900"; - j.CityTown = ""; - j.Country = ""; - j.DisplayName = username; - j.EmailAddress = Utils.GetUserEmail(username); - j.PhoneFax = ""; - j.FirstName = username; - j.Private = true; - j.LastName = ""; - j.MiddleName = ""; - j.PhoneMobile = ""; - j.PhoneMain = ""; - j.PhotoUrl = ""; - j.RegionState = ""; - } - - return j; - } - /// /// Removes profile for a specific blog /// @@ -574,10 +649,6 @@ public static void RemoveProfile(Guid blogId) profiles.Remove(blogId); } - #endregion - - #region Methods - /// /// Datas the delete. /// @@ -632,6 +703,5 @@ protected override void ValidationRules() string.IsNullOrEmpty(this.Id)); } - #endregion } } \ No newline at end of file diff --git a/BlogEngine/BlogEngine.Core/Blog.cs b/BlogEngine/BlogEngine.Core/Blog.cs index 62810443f..d3a114104 100644 --- a/BlogEngine/BlogEngine.Core/Blog.cs +++ b/BlogEngine/BlogEngine.Core/Blog.cs @@ -518,6 +518,7 @@ public static Blog CurrentInstance string rawUrl = VirtualPathUtility.AppendTrailingSlash(context.Request.RawUrl); string hostname = context.Request.Url.Host; + //hostname = context.Request.Url.AbsolutePath; for (int i = 0; i < blogs.Count; i++) { @@ -546,7 +547,7 @@ public static Blog CurrentInstance // second check the path. - if (rawUrl.StartsWith(checkBlog.RelativeWebRoot, StringComparison.OrdinalIgnoreCase)) + if (rawUrl.Replace("?","/").StartsWith(checkBlog.RelativeWebRoot, StringComparison.OrdinalIgnoreCase)) { blog = checkBlog; break; @@ -560,6 +561,7 @@ public static Blog CurrentInstance { blog = blogs.FirstOrDefault(b => b.IsPrimary); } + context.Items["rawUrl"] = rawUrl; } } diff --git a/BlogEngine/BlogEngine.Core/BlogEngine.Core.csproj b/BlogEngine/BlogEngine.Core/BlogEngine.Core.csproj index 47d8bb39b..b3c359357 100644 --- a/BlogEngine/BlogEngine.Core/BlogEngine.Core.csproj +++ b/BlogEngine/BlogEngine.Core/BlogEngine.Core.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,14 +10,6 @@ Properties BlogEngine.Core BlogEngine.Core - - - - - - - - false key.snk @@ -40,7 +32,7 @@ 1.0.0.%2a false true - v4.5 + v4.8 @@ -51,11 +43,13 @@ DEBUG;TRACE prompt 4 - bin\Debug\BlogEngine.Core.XML + + Off false -Microsoft.Design#CA1020 false + 0649 pdbonly @@ -70,10 +64,10 @@ - ..\..\lib\ajaxminify\AjaxMin.dll + ..\..\lib\AjaxMin.dll - ..\..\lib\blogml\BlogML.dll + ..\..\lib\BlogML.dll ..\packages\DynamicQuery.1.0\lib\35\Dynamic.dll @@ -115,6 +109,7 @@ + @@ -418,8 +413,7 @@ - - + :copy $(TargetPath) C:\Data\A\Dev\Plugins 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%0ABhP*$CNo{%;l7n#ZKHq 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�X2~jAH0aMlRJc*r6 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 literal 0 HcmV?d00001 diff --git a/BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/nav.png b/BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/nav.png new file mode 100644 index 0000000000000000000000000000000000000000..ad905fa0a0f9886d9f27b4c468e6d8fbcd18fc81 GIT binary patch literal 950 zcmaJ=O^ee&7>)>wEL1!Qvb{KDFDf?4v`w0Z#$}tdZorh<7PfoaG?}*9ZZg?qYSOYG z>`gD;ym=Bl`UeE}AP64x2MAsjPagaOPP$FkgEb_X51!|F-+A9>p0!&KbDQ~1hGBBX zp5CG3E&AQOwn6{H_iwJ#VT&~Sq>G0nwnD`0I(UG9;aMZpL6$Q+`Gjf=bCq>_ebP4{ zDK_>vE5&e$7f?3C)OM1nz#=cuS1Q1=B1%fJ0+tU;qlL~;>FCX6EV@$JF(HA%^Kl$=af!p>h=WgdZY|! zn*WD--U=O&4!X?upTbdZ79hTZB0LRk+PL9%8Y)n<5LpC=J&cdDDz?X%;Ao5kpmim1 zXW#W597lH-c+*r2KO&ZIBSTkNs=&FfqtxqV2%B;RLRp5eQIhMru2p2Y0VPqEgl5Lo zu|4&WPcp7^$)&tC+|&wQKqKoYbe|xn8DbACj;y%ra}n3-ExFG6T%@&Jo+iVmjs2_9 z*%ozAI$hb8E>^}zK6QIYZH<1MrFZO}q3`yRuY=Ry-#8TKe1i;n^SGI3$?> literal 0 HcmV?d00001 diff --git a/BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/social.png b/BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/social.png new file mode 100644 index 0000000000000000000000000000000000000000..a685c945ef7a9a0657a92f614bb841a85bc67ab1 GIT binary patch literal 5443 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 literal 0 HcmV?d00001 diff --git a/BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/success.png b/BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/success.png new file mode 100644 index 0000000000000000000000000000000000000000..c65f27d2c79b1dbd5831fa69f71b5ce64c858fe5 GIT binary patch literal 1170 zcmeAS@N?(olHy`uVBq!ia0vp^=0I%1!3HGt{1?0cQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_nZLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ2+zz*$uBR~ z1grP;werj>E=kNwPW5!LRRWrzmzkMjWnymVYGPn&Y+-2VVrb}UATTy(kae;dV4-PakvqKr5El=&=_wY@KcX6dcr>gkLLbO>PM|CMn#2c<> zSk2|&@5l^$qn7!zW#=K+XA6~s&Ew8hH}0%?t~TlE z?4P~*GhXMdY~)@Y=iRn1!ERr1aPvwJH@n31-_HEEL~$X=sXLB*6i8r*JgT?;M$Tys PP$}W*>gTe~DWM4fhsBnX literal 0 HcmV?d00001 diff --git a/BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/up.png b/BlogEngine/BlogEngine.NET/Custom/Themes/ContactManager/img/up.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1dc450fcc8e5fb4c37c4bc7546d2a5b3802e3a GIT binary patch literal 1132 zcmaJ=U1-x#7!7keQ7bAcI(@iA1ckLpx~^SAv(Y7OSGA*bl}%AtmfUS|CO0N`HXHch z6j2dGMAYFQ4Bdk;6;T8c$3Rg~86qfS!t`MxPJM9xATqs~>-51IlH4E8Ip24`@7zP_ zx`bz5={$;}Jjq%qL&g>EH+K&CkLHALWLSw~jkq4Q;GAqhDypJp2$H(o3NuhvJ9j;V z5sI2cYuQHJnA*fENcYJu#^>lJVN+D3+A(FN9b(W7TQx(VKi)bhRsCm9DM=5r-!NI>a(?^qq#yI|4nW%aggg&Cp;9g4+f9cT$b1G!T&m zL4~i}tFRmgf)9Kf{tY=;Z=@MUeN0!1P0tXqMW-XQcRaEV2^lHjGW4 zVRE^gFIVnERx87W!(ms$@Andf*X}g1?05}(O$Lh(FTLQ01Y4V>qyf4K32T-OS^Ng_+o(sn~NZXq2^ z9huh(=OPx=o93#8bCC*i8Ila+HukSZ=eLM^-06&M$zsO%&>(KNh^o#!<0*7eK1&JXw~iGhhu*vQKN+i&`fHlHe*t 795) { + p1 = 0; + } + if (p2 > 778) { + p2 = 0; + } + if (p3 > 962) { + p3 = 0; + } + $('#bg1').css('background-position', p1 + 'px bottom'); + $('#bg2').css('background-position', p2 + 'px bottom'); + return $('#bg3').css('background-position', p3 + 'px bottom'); + }; + setInterval(move, 100); +}).call(this); +$(window).scroll(function () { + if ($(window).scrollTop() > 200) { + $(".fixnav .header").addClass("fix-header"); + } else { + $(".fixnav .header").removeClass("fix-header"); + } +}); +$(".btn-toggle-search").click(function () { + $(".header .search").addClass("open-search"); + $(this).hide(); + $(".header .search input[type='text']").focus(); +}); +$(".search input[type='text']").blur(function () { + $(".search").delay(2000).removeClass("open-search"); + $(".btn-toggle-search").delay(2000).show(); +}); +$(".search input[type='text']").addClass("tooltip-search"); +$(".search input[type='text']").attr('title', 'Press Enter to search'); +$(window).scroll(function () { + if ($(window).scrollTop() > 200) { + $('.scrollup').fadeIn(); + } else { + $('.scrollup').fadeOut(); + } +}); +$('.scrollup').click(function () { + $("html, body").animate({ + scrollTop: 0 + }, 600); + return false; +}); +$(".footer-widgets .widget:nth-child(3n)").addClass("last-child"); +window.selectnav = function () { + "use strict"; + var n = function (n, t) { + function s(n) { + var t; + n || (n = window.event), n.target ? t = n.target : n.srcElement && (t = n.srcElement), t.nodeType === 3 && (t = t.parentNode), t.value && (window.location.href = t.value) + } + + function h(n) { + var t = n.nodeName.toLowerCase(); + return t === "ul" || t === "ol" + } + + function c(n) { + for (var t = 1; document.getElementById("selectnav" + t); t++); + return n ? "selectnav" + t : "selectnav" + (t - 1) + } + + function l(n) { + var r, t, d, s, p; + u++; + var b = n.children.length, + i = "", + w = "", + k = u - 1; + if (b) { + if (k) { + while (k--) w += y; + w += " " + } + for (r = 0; r < b; r++) t = n.children[r].children[0], typeof t != "undefined" && (d = t.innerText || t.textContent, s = "", f && (s = t.className.search(f) !== -1 || t.parentNode.className.search(f) !== -1 ? o : ""), a && !s && (s = t.href === document.URL ? o : ""), i += '