├── .gitignore ├── .nuget ├── NuGet.Config ├── NuGet.exe └── NuGet.targets ├── Libs └── Joel.Net.Akismet │ └── Joel.Net.Akismet.dll ├── NuGet.Config ├── RaccoonBlog.ImportFromBlogML ├── ImportBase.cs ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── RaccoonBlog.ImportFromBlogML.csproj ├── app.config └── packages.config ├── RaccoonBlog.ImportFromSubtext ├── App.Config ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── RaccoonBlog.ImportFromSubtext.csproj ├── SubtextModel.Designer.cs ├── SubtextModel.edmx └── packages.config ├── RaccoonBlog.IntegrationTests ├── AutoMapper │ └── AutoMappedConfigurationTester.cs ├── ControllersCore │ └── SlugGenerationTests.cs ├── CryptographyUtilTests.cs ├── MarkdownResolverTests.cs ├── Properties │ └── AssemblyInfo.cs ├── RaccoonBlog.IntegrationTests.csproj ├── Routing │ ├── AdminAreaRoutesTests.cs │ ├── RoutesTests.cs │ └── RoutingTestBase.cs ├── SlugConverterTests.cs ├── Web │ ├── Controllers │ │ ├── BlogConfigBehavior.cs │ │ └── RaccoonControllerTests.cs │ └── Services │ │ └── PostSchedulingStrategyTests.cs └── app.config ├── RaccoonBlog.Migrations ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── RaccoonBlog.Migrations.csproj ├── app.config └── packages.config ├── RaccoonBlog.Web ├── Admin.LoginController.generated.cs ├── Admin.PostsController.generated.cs ├── Admin.SectionsController.generated.cs ├── Admin.SettingsController.generated.cs ├── Admin.SharedController.generated.cs ├── Admin.UsersController.generated.cs ├── App_Start │ ├── AttributeRoutingConfig.cs │ ├── BundleConfig.cs │ ├── CommonSetup.cs │ ├── FilterConfig.cs │ ├── RouteConfigurator.cs │ └── Startup.Auth.cs ├── Areas │ └── Admin │ │ ├── AdminAreaRegistration.cs │ │ ├── Content │ │ ├── css │ │ │ ├── admin.styles.less │ │ │ ├── admin.variables.less │ │ │ ├── bootstrap │ │ │ │ ├── bootstrap-extend.css │ │ │ │ ├── bootstrap-extend.css.map │ │ │ │ ├── bootstrap-extend.less │ │ │ │ └── bootstrap-extend.min.css │ │ │ ├── fullcalendar.css │ │ │ └── images │ │ │ │ ├── content_repeat.jpg │ │ │ │ ├── nav_divider.jpg │ │ │ │ ├── nav_item_0.gif │ │ │ │ ├── nav_item_1.gif │ │ │ │ └── nav_logout.gif │ │ ├── datepicker │ │ │ ├── css │ │ │ │ ├── bootstrap-datetimepicker.css │ │ │ │ └── bootstrap-datetimepicker.min.css │ │ │ └── js │ │ │ │ └── bootstrap-datetimepicker.min.js │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── img │ │ │ └── logo.svg │ │ └── js │ │ │ ├── app │ │ │ └── rssFutureAccess.js │ │ │ ├── bootstrap.js │ │ │ ├── fullcalendar.js │ │ │ ├── lib │ │ │ └── clipboard.min.js │ │ │ └── tinymce │ │ │ ├── _notes │ │ │ └── dwsync.xml │ │ │ ├── changelog.txt │ │ │ ├── langs │ │ │ ├── _notes │ │ │ │ └── dwsync.xml │ │ │ └── readme.md │ │ │ ├── license.txt │ │ │ ├── plugins │ │ │ ├── advlist │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── anchor │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── autolink │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── autoresize │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── autosave │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── bbcode │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── charmap │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── code │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── colorpicker │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── contextmenu │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── directionality │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── emoticons │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ ├── img │ │ │ │ │ ├── _notes │ │ │ │ │ │ └── dwsync.xml │ │ │ │ │ ├── smiley-cool.gif │ │ │ │ │ ├── smiley-cry.gif │ │ │ │ │ ├── smiley-embarassed.gif │ │ │ │ │ ├── smiley-foot-in-mouth.gif │ │ │ │ │ ├── smiley-frown.gif │ │ │ │ │ ├── smiley-innocent.gif │ │ │ │ │ ├── smiley-kiss.gif │ │ │ │ │ ├── smiley-laughing.gif │ │ │ │ │ ├── smiley-money-mouth.gif │ │ │ │ │ ├── smiley-sealed.gif │ │ │ │ │ ├── smiley-smile.gif │ │ │ │ │ ├── smiley-surprised.gif │ │ │ │ │ ├── smiley-tongue-out.gif │ │ │ │ │ ├── smiley-undecided.gif │ │ │ │ │ ├── smiley-wink.gif │ │ │ │ │ └── smiley-yell.gif │ │ │ │ └── plugin.min.js │ │ │ ├── example │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ ├── dialog.html │ │ │ │ └── plugin.min.js │ │ │ ├── example_dependency │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── fullpage │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── fullscreen │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── hr │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── image │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── importcss │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── insertdatetime │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── layer │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── legacyoutput │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── link │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── lists │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── media │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ ├── moxieplayer.swf │ │ │ │ └── plugin.min.js │ │ │ ├── nonbreaking │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── noneditable │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── pagebreak │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── paste │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── preview │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── print │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── save │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── searchreplace │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── spellchecker │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── tabfocus │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── table │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── template │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── textcolor │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── textpattern │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── visualblocks │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ ├── css │ │ │ │ │ ├── _notes │ │ │ │ │ │ └── dwsync.xml │ │ │ │ │ └── visualblocks.css │ │ │ │ └── plugin.min.js │ │ │ ├── visualchars │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ └── wordcount │ │ │ │ ├── _notes │ │ │ │ └── dwsync.xml │ │ │ │ └── plugin.min.js │ │ │ ├── skins │ │ │ └── lightgray │ │ │ │ ├── _notes │ │ │ │ └── dwsync.xml │ │ │ │ ├── content.inline.min.css │ │ │ │ ├── content.min.css │ │ │ │ ├── fonts │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ ├── tinymce-small.eot │ │ │ │ ├── tinymce-small.svg │ │ │ │ ├── tinymce-small.ttf │ │ │ │ ├── tinymce-small.woff │ │ │ │ ├── tinymce.eot │ │ │ │ ├── tinymce.svg │ │ │ │ ├── tinymce.ttf │ │ │ │ └── tinymce.woff │ │ │ │ ├── img │ │ │ │ ├── _notes │ │ │ │ │ └── dwsync.xml │ │ │ │ ├── anchor.gif │ │ │ │ ├── loader.gif │ │ │ │ ├── object.gif │ │ │ │ └── trans.gif │ │ │ │ ├── skin.ie7.min.css │ │ │ │ └── skin.min.css │ │ │ ├── themes │ │ │ └── modern │ │ │ │ ├── _notes │ │ │ │ └── dwsync.xml │ │ │ │ └── theme.min.js │ │ │ └── tinymce.min.js │ │ ├── Controllers │ │ ├── AdminController.cs │ │ ├── LoginController.cs │ │ ├── PostsController.cs │ │ ├── SectionsController.cs │ │ ├── SettingsController.cs │ │ └── UsersController.cs │ │ ├── Enums │ │ └── MenuButtonType.cs │ │ ├── Helpers │ │ └── MenuUtil.cs │ │ ├── Models │ │ ├── FutureRssAccess.cs │ │ └── MenuItem.cs │ │ ├── ViewModels │ │ ├── AddIpToBlackListViewModel.cs │ │ └── RedditManualSubmissionViewModel.cs │ │ └── Views │ │ ├── Login │ │ ├── CurrentUser.cshtml │ │ └── Index.cshtml │ │ ├── Posts │ │ ├── AddIpToBlackList.cshtml │ │ ├── DeleteAllSpamComments.cshtml │ │ ├── Details.cshtml │ │ ├── Edit.cshtml │ │ └── List.cshtml │ │ ├── Sections │ │ ├── Edit.cshtml │ │ └── List.cshtml │ │ ├── Settings │ │ ├── Index.cshtml │ │ ├── RedditSubmission.cshtml │ │ └── RssFutureAccess.cshtml │ │ ├── Shared │ │ ├── EditorTemplates │ │ │ ├── Boolean.cshtml │ │ │ ├── BooleanLong.cshtml │ │ │ ├── DateTime.cshtml │ │ │ ├── EmailAddress.cshtml │ │ │ ├── HiddenInput.cshtml │ │ │ ├── Int32.cshtml │ │ │ ├── NameWithDescription.cshtml │ │ │ ├── Password.cshtml │ │ │ ├── TextAbove.cshtml │ │ │ └── TextLong.cshtml │ │ ├── RenderMenu.cshtml │ │ └── _Layout.cshtml │ │ ├── Users │ │ ├── ChangePassword.cshtml │ │ ├── Edit.cshtml │ │ └── List.cshtml │ │ ├── Web.config │ │ └── _ViewStart.cshtml ├── Content │ ├── css │ │ ├── anytime.css │ │ ├── anytime.min.css │ │ ├── bootstrap │ │ │ ├── alerts.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.custom.less │ │ │ ├── bootstrap.less │ │ │ ├── bootstrap.min.css │ │ │ ├── breadcrumbs.less │ │ │ ├── button-groups.less │ │ │ ├── buttons.less │ │ │ ├── carousel.less │ │ │ ├── close.less │ │ │ ├── code.less │ │ │ ├── component-animations.less │ │ │ ├── dropdowns.less │ │ │ ├── forms.less │ │ │ ├── glyphicons.less │ │ │ ├── grid.less │ │ │ ├── input-groups.less │ │ │ ├── jumbotron.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── media.less │ │ │ ├── mixins.less │ │ │ ├── mixins │ │ │ │ ├── alerts.less │ │ │ │ ├── background-variant.less │ │ │ │ ├── border-radius.less │ │ │ │ ├── buttons.less │ │ │ │ ├── center-block.less │ │ │ │ ├── clearfix.less │ │ │ │ ├── forms.less │ │ │ │ ├── gradients.less │ │ │ │ ├── grid-framework.less │ │ │ │ ├── grid.less │ │ │ │ ├── hide-text.less │ │ │ │ ├── image.less │ │ │ │ ├── labels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── nav-divider.less │ │ │ │ ├── nav-vertical-align.less │ │ │ │ ├── opacity.less │ │ │ │ ├── pagination.less │ │ │ │ ├── panels.less │ │ │ │ ├── progress-bar.less │ │ │ │ ├── reset-filter.less │ │ │ │ ├── resize.less │ │ │ │ ├── responsive-visibility.less │ │ │ │ ├── size.less │ │ │ │ ├── tab-focus.less │ │ │ │ ├── table-row.less │ │ │ │ ├── text-emphasis.less │ │ │ │ ├── text-overflow.less │ │ │ │ └── vendor-prefixes.less │ │ │ ├── modals.less │ │ │ ├── navbar.less │ │ │ ├── navs.less │ │ │ ├── normalize.less │ │ │ ├── pager.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── popovers.less │ │ │ ├── print.less │ │ │ ├── progress-bars.less │ │ │ ├── responsive-embed.less │ │ │ ├── responsive-utilities.less │ │ │ ├── scaffolding.less │ │ │ ├── tables.less │ │ │ ├── theme.less │ │ │ ├── thumbnails.less │ │ │ ├── tooltip.less │ │ │ ├── type.less │ │ │ ├── utilities.less │ │ │ ├── variables.less │ │ │ └── wells.less │ │ ├── custom │ │ │ ├── ayende.styles.css │ │ │ ├── ayende.styles.css.map │ │ │ ├── ayende.styles.less │ │ │ ├── ayende.styles.min.css │ │ │ ├── ayende.variables.css │ │ │ ├── ayende.variables.css.map │ │ │ ├── ayende.variables.less │ │ │ └── ayende.variables.min.css │ │ ├── error.css │ │ ├── error.less │ │ ├── error.min.css │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ ├── glyphicons-halflings-regular.woff2 │ │ │ ├── icomoon.eot │ │ │ ├── icomoon.svg │ │ │ ├── icomoon.ttf │ │ │ ├── icomoon.woff │ │ │ └── selection.json │ │ ├── fullcalendar.css │ │ ├── fullcalendar.min.css │ │ ├── fullcalendar.print.css │ │ ├── icomoon.css │ │ ├── img │ │ │ ├── banners │ │ │ │ ├── couchbase-vs-ravendb-whitepaper.png │ │ │ │ ├── native-ai.png │ │ │ │ ├── ravendb-vs-mongodb.jpg │ │ │ │ ├── ravendb.jpg │ │ │ │ ├── webinars-ravendb.png │ │ │ │ └── workshops-ravendb.png │ │ │ ├── commentDate.png │ │ │ ├── commentDateImp.png │ │ │ ├── commentPreviewDate.png │ │ │ ├── dzone-horizontal.svg │ │ │ ├── dzone-vertical.svg │ │ │ ├── error.png │ │ │ ├── ico_grid_active.svg │ │ │ ├── ico_grid_inactive.svg │ │ │ ├── ico_mail.svg │ │ │ ├── ico_phone.svg │ │ │ ├── ico_stack_active.svg │ │ │ ├── ico_stack_inactive.svg │ │ │ ├── left-corner.png │ │ │ ├── logo-vertical.svg │ │ │ ├── logo.svg │ │ │ ├── mdd_ajax_loader.gif │ │ │ ├── mdd_gripper.png │ │ │ ├── mdd_modal_background.png │ │ │ ├── mdd_toolbar.png │ │ │ ├── mvp-horizontal.svg │ │ │ ├── mvp-vertical.svg │ │ │ ├── new-bg.svg │ │ │ ├── readmore.png │ │ │ ├── readmore2.png │ │ │ ├── right-corner.png │ │ │ ├── rihno.svg │ │ │ ├── rss.png │ │ │ ├── search-icon.svg │ │ │ ├── side_bkg.jpg │ │ │ └── side_bkg.png │ │ ├── mdd_styles.css │ │ ├── prism.css │ │ └── styles.less │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ ├── glyphicons-halflings-regular.woff2 │ │ ├── icomoon.eot │ │ ├── icomoon.svg │ │ ├── icomoon.ttf │ │ └── icomoon.woff │ ├── images │ │ ├── ayende@rahien.png │ │ └── oren.jpg │ ├── js │ │ ├── RequiredIfValidation.js │ │ ├── anytime.js │ │ ├── anytime.min.js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ ├── ckeditor │ │ │ ├── .htaccess │ │ │ ├── CHANGES.html │ │ │ ├── INSTALL.html │ │ │ ├── LICENSE.html │ │ │ ├── adapters │ │ │ │ └── jquery.js │ │ │ ├── ckeditor.asp │ │ │ ├── ckeditor.js │ │ │ ├── ckeditor.pack │ │ │ ├── ckeditor.php │ │ │ ├── ckeditor_basic.js │ │ │ ├── ckeditor_basic_source.js │ │ │ ├── ckeditor_php4.php │ │ │ ├── ckeditor_php5.php │ │ │ ├── ckeditor_source.js │ │ │ ├── config.js │ │ │ ├── contents.css │ │ │ ├── images │ │ │ │ └── spacer.gif │ │ │ ├── lang │ │ │ │ ├── _languages.js │ │ │ │ ├── _translationstatus.txt │ │ │ │ ├── af.js │ │ │ │ ├── ar.js │ │ │ │ ├── bg.js │ │ │ │ ├── bn.js │ │ │ │ ├── bs.js │ │ │ │ ├── ca.js │ │ │ │ ├── cs.js │ │ │ │ ├── cy.js │ │ │ │ ├── da.js │ │ │ │ ├── de.js │ │ │ │ ├── el.js │ │ │ │ ├── en-au.js │ │ │ │ ├── en-ca.js │ │ │ │ ├── en-gb.js │ │ │ │ ├── en.js │ │ │ │ ├── eo.js │ │ │ │ ├── es.js │ │ │ │ ├── et.js │ │ │ │ ├── eu.js │ │ │ │ ├── fa.js │ │ │ │ ├── fi.js │ │ │ │ ├── fo.js │ │ │ │ ├── fr-ca.js │ │ │ │ ├── fr.js │ │ │ │ ├── gl.js │ │ │ │ ├── gu.js │ │ │ │ ├── he.js │ │ │ │ ├── hi.js │ │ │ │ ├── hr.js │ │ │ │ ├── hu.js │ │ │ │ ├── is.js │ │ │ │ ├── it.js │ │ │ │ ├── ja.js │ │ │ │ ├── ka.js │ │ │ │ ├── km.js │ │ │ │ ├── ko.js │ │ │ │ ├── lt.js │ │ │ │ ├── lv.js │ │ │ │ ├── mn.js │ │ │ │ ├── ms.js │ │ │ │ ├── nb.js │ │ │ │ ├── nl.js │ │ │ │ ├── no.js │ │ │ │ ├── pl.js │ │ │ │ ├── pt-br.js │ │ │ │ ├── pt.js │ │ │ │ ├── ro.js │ │ │ │ ├── ru.js │ │ │ │ ├── sk.js │ │ │ │ ├── sl.js │ │ │ │ ├── sr-latn.js │ │ │ │ ├── sr.js │ │ │ │ ├── sv.js │ │ │ │ ├── th.js │ │ │ │ ├── tr.js │ │ │ │ ├── uk.js │ │ │ │ ├── vi.js │ │ │ │ ├── zh-cn.js │ │ │ │ └── zh.js │ │ │ ├── plugins │ │ │ │ ├── a11yhelp │ │ │ │ │ ├── dialogs │ │ │ │ │ │ └── a11yhelp.js │ │ │ │ │ └── lang │ │ │ │ │ │ ├── en.js │ │ │ │ │ │ └── he.js │ │ │ │ ├── about │ │ │ │ │ └── dialogs │ │ │ │ │ │ ├── about.js │ │ │ │ │ │ └── logo_ckeditor.png │ │ │ │ ├── adobeair │ │ │ │ │ └── plugin.js │ │ │ │ ├── ajax │ │ │ │ │ └── plugin.js │ │ │ │ ├── autogrow │ │ │ │ │ └── plugin.js │ │ │ │ ├── bbcode │ │ │ │ │ └── plugin.js │ │ │ │ ├── clipboard │ │ │ │ │ └── dialogs │ │ │ │ │ │ └── paste.js │ │ │ │ ├── colordialog │ │ │ │ │ └── dialogs │ │ │ │ │ │ └── colordialog.js │ │ │ │ ├── devtools │ │ │ │ │ ├── lang │ │ │ │ │ │ └── en.js │ │ │ │ │ └── plugin.js │ │ │ │ ├── dialog │ │ │ │ │ └── dialogDefinition.js │ │ │ │ ├── div │ │ │ │ │ └── dialogs │ │ │ │ │ │ └── div.js │ │ │ │ ├── docprops │ │ │ │ │ ├── dialogs │ │ │ │ │ │ └── docprops.js │ │ │ │ │ └── plugin.js │ │ │ │ ├── find │ │ │ │ │ └── dialogs │ │ │ │ │ │ └── find.js │ │ │ │ ├── flash │ │ │ │ │ ├── dialogs │ │ │ │ │ │ └── flash.js │ │ │ │ │ └── images │ │ │ │ │ │ └── placeholder.png │ │ │ │ ├── forms │ │ │ │ │ ├── dialogs │ │ │ │ │ │ ├── button.js │ │ │ │ │ │ ├── checkbox.js │ │ │ │ │ │ ├── form.js │ │ │ │ │ │ ├── hiddenfield.js │ │ │ │ │ │ ├── radio.js │ │ │ │ │ │ ├── select.js │ │ │ │ │ │ ├── textarea.js │ │ │ │ │ │ └── textfield.js │ │ │ │ │ └── images │ │ │ │ │ │ └── hiddenfield.gif │ │ │ │ ├── iframe │ │ │ │ │ ├── dialogs │ │ │ │ │ │ └── iframe.js │ │ │ │ │ └── images │ │ │ │ │ │ └── placeholder.png │ │ │ │ ├── iframedialog │ │ │ │ │ └── plugin.js │ │ │ │ ├── image │ │ │ │ │ └── dialogs │ │ │ │ │ │ └── image.js │ │ │ │ ├── link │ │ │ │ │ ├── dialogs │ │ │ │ │ │ ├── anchor.js │ │ │ │ │ │ └── link.js │ │ │ │ │ └── images │ │ │ │ │ │ └── anchor.gif │ │ │ │ ├── liststyle │ │ │ │ │ └── dialogs │ │ │ │ │ │ └── liststyle.js │ │ │ │ ├── pagebreak │ │ │ │ │ └── images │ │ │ │ │ │ └── pagebreak.gif │ │ │ │ ├── pastefromword │ │ │ │ │ └── filter │ │ │ │ │ │ └── default.js │ │ │ │ ├── pastetext │ │ │ │ │ └── dialogs │ │ │ │ │ │ └── pastetext.js │ │ │ │ ├── placeholder │ │ │ │ │ ├── dialogs │ │ │ │ │ │ └── placeholder.js │ │ │ │ │ ├── lang │ │ │ │ │ │ ├── en.js │ │ │ │ │ │ └── he.js │ │ │ │ │ ├── placeholder.gif │ │ │ │ │ └── plugin.js │ │ │ │ ├── scayt │ │ │ │ │ └── dialogs │ │ │ │ │ │ ├── options.js │ │ │ │ │ │ └── toolbar.css │ │ │ │ ├── showblocks │ │ │ │ │ └── images │ │ │ │ │ │ ├── block_address.png │ │ │ │ │ │ ├── block_blockquote.png │ │ │ │ │ │ ├── block_div.png │ │ │ │ │ │ ├── block_h1.png │ │ │ │ │ │ ├── block_h2.png │ │ │ │ │ │ ├── block_h3.png │ │ │ │ │ │ ├── block_h4.png │ │ │ │ │ │ ├── block_h5.png │ │ │ │ │ │ ├── block_h6.png │ │ │ │ │ │ ├── block_p.png │ │ │ │ │ │ └── block_pre.png │ │ │ │ ├── smiley │ │ │ │ │ ├── dialogs │ │ │ │ │ │ └── smiley.js │ │ │ │ │ └── images │ │ │ │ │ │ ├── angel_smile.gif │ │ │ │ │ │ ├── angry_smile.gif │ │ │ │ │ │ ├── broken_heart.gif │ │ │ │ │ │ ├── confused_smile.gif │ │ │ │ │ │ ├── cry_smile.gif │ │ │ │ │ │ ├── devil_smile.gif │ │ │ │ │ │ ├── embaressed_smile.gif │ │ │ │ │ │ ├── envelope.gif │ │ │ │ │ │ ├── heart.gif │ │ │ │ │ │ ├── kiss.gif │ │ │ │ │ │ ├── lightbulb.gif │ │ │ │ │ │ ├── omg_smile.gif │ │ │ │ │ │ ├── regular_smile.gif │ │ │ │ │ │ ├── sad_smile.gif │ │ │ │ │ │ ├── shades_smile.gif │ │ │ │ │ │ ├── teeth_smile.gif │ │ │ │ │ │ ├── thumbs_down.gif │ │ │ │ │ │ ├── thumbs_up.gif │ │ │ │ │ │ ├── tounge_smile.gif │ │ │ │ │ │ ├── whatchutalkingabout_smile.gif │ │ │ │ │ │ └── wink_smile.gif │ │ │ │ ├── specialchar │ │ │ │ │ ├── dialogs │ │ │ │ │ │ └── specialchar.js │ │ │ │ │ └── lang │ │ │ │ │ │ └── en.js │ │ │ │ ├── styles │ │ │ │ │ └── styles │ │ │ │ │ │ └── default.js │ │ │ │ ├── stylesheetparser │ │ │ │ │ └── plugin.js │ │ │ │ ├── table │ │ │ │ │ └── dialogs │ │ │ │ │ │ └── table.js │ │ │ │ ├── tableresize │ │ │ │ │ └── plugin.js │ │ │ │ ├── tabletools │ │ │ │ │ └── dialogs │ │ │ │ │ │ └── tableCell.js │ │ │ │ ├── templates │ │ │ │ │ ├── dialogs │ │ │ │ │ │ └── templates.js │ │ │ │ │ └── templates │ │ │ │ │ │ ├── default.js │ │ │ │ │ │ └── images │ │ │ │ │ │ ├── template1.gif │ │ │ │ │ │ ├── template2.gif │ │ │ │ │ │ └── template3.gif │ │ │ │ ├── uicolor │ │ │ │ │ ├── dialogs │ │ │ │ │ │ └── uicolor.js │ │ │ │ │ ├── lang │ │ │ │ │ │ ├── en.js │ │ │ │ │ │ └── he.js │ │ │ │ │ ├── plugin.js │ │ │ │ │ ├── uicolor.gif │ │ │ │ │ └── yui │ │ │ │ │ │ ├── assets │ │ │ │ │ │ ├── hue_bg.png │ │ │ │ │ │ ├── hue_thumb.png │ │ │ │ │ │ ├── picker_mask.png │ │ │ │ │ │ ├── picker_thumb.png │ │ │ │ │ │ └── yui.css │ │ │ │ │ │ └── yui.js │ │ │ │ ├── wsc │ │ │ │ │ └── dialogs │ │ │ │ │ │ ├── ciframe.html │ │ │ │ │ │ ├── tmpFrameset.html │ │ │ │ │ │ ├── wsc.css │ │ │ │ │ │ └── wsc.js │ │ │ │ └── xml │ │ │ │ │ └── plugin.js │ │ │ ├── skins │ │ │ │ ├── kama │ │ │ │ │ ├── dialog.css │ │ │ │ │ ├── editor.css │ │ │ │ │ ├── icons.png │ │ │ │ │ ├── icons_rtl.png │ │ │ │ │ ├── images │ │ │ │ │ │ ├── dialog_sides.gif │ │ │ │ │ │ ├── dialog_sides.png │ │ │ │ │ │ ├── dialog_sides_rtl.png │ │ │ │ │ │ ├── mini.gif │ │ │ │ │ │ ├── noimage.png │ │ │ │ │ │ ├── sprites.png │ │ │ │ │ │ ├── sprites_ie6.png │ │ │ │ │ │ └── toolbar_start.gif │ │ │ │ │ ├── skin.js │ │ │ │ │ └── templates.css │ │ │ │ ├── office2003 │ │ │ │ │ ├── dialog.css │ │ │ │ │ ├── editor.css │ │ │ │ │ ├── icons.png │ │ │ │ │ ├── icons_rtl.png │ │ │ │ │ ├── images │ │ │ │ │ │ ├── dialog_sides.gif │ │ │ │ │ │ ├── dialog_sides.png │ │ │ │ │ │ ├── dialog_sides_rtl.png │ │ │ │ │ │ ├── mini.gif │ │ │ │ │ │ ├── noimage.png │ │ │ │ │ │ ├── sprites.png │ │ │ │ │ │ └── sprites_ie6.png │ │ │ │ │ ├── skin.js │ │ │ │ │ └── templates.css │ │ │ │ └── v2 │ │ │ │ │ ├── dialog.css │ │ │ │ │ ├── editor.css │ │ │ │ │ ├── icons.png │ │ │ │ │ ├── icons_rtl.png │ │ │ │ │ ├── images │ │ │ │ │ ├── dialog_sides.gif │ │ │ │ │ ├── dialog_sides.png │ │ │ │ │ ├── dialog_sides_rtl.png │ │ │ │ │ ├── mini.gif │ │ │ │ │ ├── noimage.png │ │ │ │ │ ├── sprites.png │ │ │ │ │ ├── sprites_ie6.png │ │ │ │ │ └── toolbar_start.gif │ │ │ │ │ ├── skin.js │ │ │ │ │ └── templates.css │ │ │ └── themes │ │ │ │ └── default │ │ │ │ └── theme.js │ │ ├── date.f-0.5.0.js │ │ ├── date.f-0.5.0.min.js │ │ ├── fullcalendar.js │ │ ├── fullcalendar.min.js │ │ ├── jquery-1.11.2.intellisense.js │ │ ├── jquery-1.11.2.js │ │ ├── jquery-1.11.2.min.js │ │ ├── jquery-1.11.2.min.map │ │ ├── jquery-migrate-1.2.1.js │ │ ├── jquery-migrate-1.2.1.min.js │ │ ├── jquery-ui-1.11.2.js │ │ ├── jquery-ui-1.11.2.min.js │ │ ├── jquery.md5.js │ │ ├── jquery.tmpl.js │ │ ├── jquery.tmpl.min.js │ │ ├── jquery.twbsPagination.js │ │ ├── jquery.twbsPagination.min.js │ │ ├── jquery.ui.core.js │ │ ├── jquery.ui.core.min.js │ │ ├── jquery.unobtrusive-ajax.js │ │ ├── jquery.unobtrusive-ajax.min.js │ │ ├── jquery.validate-vsdoc.js │ │ ├── jquery.validate.js │ │ ├── jquery.validate.min.js │ │ ├── jquery.validate.unobtrusive.js │ │ ├── jquery.validate.unobtrusive.min.js │ │ ├── lib │ │ │ └── MarkdownDeepLib.min.js │ │ ├── moment-with-locales.js │ │ ├── moment-with-locales.min.js │ │ ├── moment.js │ │ ├── moment.min.js │ │ ├── raccoon-blog.js │ │ ├── respond.src.js │ │ ├── setup.js │ │ ├── showdown.js │ │ └── utils.js │ ├── license │ │ └── MarkdownDeep License.txt │ └── themes │ │ └── base │ │ ├── accordion.css │ │ ├── all.css │ │ ├── autocomplete.css │ │ ├── base.css │ │ ├── button.css │ │ ├── core.css │ │ ├── datepicker.css │ │ ├── dialog.css │ │ ├── draggable.css │ │ ├── images │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_888888_256x240.png │ │ └── ui-icons_cd0a0a_256x240.png │ │ ├── menu.css │ │ ├── progressbar.css │ │ ├── resizable.css │ │ ├── selectable.css │ │ ├── selectmenu.css │ │ ├── slider.css │ │ ├── sortable.css │ │ ├── spinner.css │ │ ├── tabs.css │ │ ├── theme.css │ │ └── tooltip.css ├── Controllers │ ├── AggresivelyCachingRacconController.cs │ ├── CssController.cs │ ├── ErrorController.cs │ ├── LegacyPostController.cs │ ├── LegalController.cs │ ├── PostDetailsController.cs │ ├── PostsApiController.cs │ ├── PostsController.cs │ ├── RaccoonController.cs │ ├── SearchController.cs │ ├── SectionController.cs │ ├── SeriesController.cs │ ├── SocialController.cs │ ├── SyndicationController.cs │ └── WelcomeController.cs ├── CssController.generated.cs ├── ErrorController.generated.cs ├── Extensions │ ├── EnumerableExtensions.cs │ ├── Html5Helpers.cs │ ├── TimeSpanExtenstions.cs │ └── XmlResult.cs ├── Global.asax ├── Global.asax.cs ├── Helpers │ ├── Attributes │ │ ├── AjaxOnlyAttribute.cs │ │ ├── CustomHandleErrorAttribute.cs │ │ └── ValidatePasswordLengthAttribute.cs │ ├── Banner.cs │ ├── Binders │ │ ├── GuidBinder.cs │ │ └── RemoveSpacesEnumBinder.cs │ ├── CommenterUtil.cs │ ├── ConfigurationHelper.cs │ ├── CookieJar.cs │ ├── CryptographyUtil.cs │ ├── DynamicContentHelpers.cs │ ├── FutureRssAccessToken.cs │ ├── HtmlHelperExtensions.cs │ ├── ModelStateExtensions.cs │ ├── PostHelper.cs │ ├── PostUrlHelperExtensions.cs │ ├── Recaptcha2Helper.cs │ ├── Recaptcha2Verifier.cs │ ├── RedditHelper.cs │ ├── Results │ │ └── JsonNetResult.cs │ ├── RouteCollectionExtension.cs │ ├── SidebarHelper.cs │ ├── SignInHelper.cs │ ├── StaticFileUrlHelperExtensions.cs │ ├── ThemeLessTransform.cs │ ├── UrlHelperExtensions.cs │ ├── Validation │ │ ├── NonEmptyGuid.cs │ │ └── RequiredIfAttribute.cs │ └── ViewExtensions.cs ├── Infrastructure │ ├── AutoMapper │ │ ├── AutoMapperConfiguration.cs │ │ ├── AutoMapperExtensions.cs │ │ └── Profiles │ │ │ ├── AbstractProfile.cs │ │ │ ├── EmailViewModelMapperProfile.cs │ │ │ ├── PostViewModelMapperProfile.cs │ │ │ ├── PostsAdminViewModelMapperProfile.cs │ │ │ ├── PostsViewModelMapperProfile.cs │ │ │ ├── Resolvers │ │ │ ├── DateTimeTypeConverter.cs │ │ │ ├── EmailHashResolver.cs │ │ │ ├── GuidToStringConverter.cs │ │ │ ├── MarkdownResolver.cs │ │ │ ├── MvcHtmlStringConverter.cs │ │ │ ├── StringToGuidConverter.cs │ │ │ ├── TagsResolver.cs │ │ │ └── UrlResolver.cs │ │ │ ├── SectionMapperProfile.cs │ │ │ ├── SeriesMapperProfile.cs │ │ │ ├── TagsListViewModelMapperProfile.cs │ │ │ └── UserAdminMapperProfile.cs │ ├── Common │ │ ├── DateTimeOffsetExtensions.cs │ │ ├── DateTimeOffsetUtil.cs │ │ ├── DocumentSessionExtensions.cs │ │ ├── QueryableExtensions.cs │ │ ├── SlugConverter.cs │ │ ├── TimeConverter.cs │ │ └── TitleConverter.cs │ ├── ForwardedHeadersExtensions.cs │ ├── Indexes │ │ ├── PostComments_CreationDate.cs │ │ ├── Posts_ByMonthPublished_Count.cs │ │ ├── Posts_ByTag.cs │ │ ├── Posts_Series.cs │ │ ├── Statistics_Count.cs │ │ └── Tags_Count.cs │ ├── Jobs │ │ ├── RedditIntegration.cs │ │ └── SocialNetworkIntegrationJobsRegistry.cs │ └── Tasks │ │ ├── AddCommentTask.cs │ │ ├── BackgroundTask.cs │ │ ├── SendEmailTask.cs │ │ └── TaskExecutor.cs ├── LegacyPostController.generated.cs ├── MailTemplatesController.generated.cs ├── Models │ ├── AccountModels.cs │ ├── BlackList.cs │ ├── BlogConfig.cs │ ├── Commenter.cs │ ├── Configs.cs │ ├── DynamicContent.cs │ ├── Model.cs │ ├── Post.cs │ ├── PostComments.cs │ ├── Section.cs │ ├── SocialNetwork │ │ └── Reddit.cs │ ├── SocialNetworkIntegration.cs │ └── User.cs ├── NLog.config ├── PostDetailsController.generated.cs ├── PostsController.generated.cs ├── Properties │ ├── AssemblyInfo.cs │ └── PublishProfiles │ │ ├── blog.ayende.com.pubxml │ │ ├── blog.hibernatingrhinos.com.pubxml │ │ └── oreneini.com.pubxml ├── RaccoonBlog.Web.csproj ├── RavenNotReachable.htm ├── Scripts │ ├── moment-with-locales.js │ ├── moment-with-locales.min.js │ ├── moment-with-locales.min.js.map │ ├── moment.js │ ├── moment.min.js │ └── moment.min.js.map ├── SearchController.generated.cs ├── SectionController.generated.cs ├── SeriesController.generated.cs ├── Services │ ├── AkismetService.cs │ ├── IMetaWeblog.cs │ ├── MetaWeblog.cs │ ├── MetaWeblogAPI.ashx │ ├── PostSchedulingStrategy.cs │ ├── Reddit │ │ ├── AuthToken.cs │ │ ├── Credentials.cs │ │ ├── FailingCaptchaSolver.cs │ │ └── LinkPost.cs │ ├── RssModels │ │ ├── BlogInfo.cs │ │ ├── Category.cs │ │ ├── CategoryInfo.cs │ │ ├── Enclosure.cs │ │ ├── MediaObject.cs │ │ ├── MediaObjectInfo.cs │ │ ├── Post.cs │ │ ├── Source.cs │ │ ├── UserInfo.cs │ │ └── WordpressCategory.cs │ └── SubmitToRedditStrategy.cs ├── SharedController.generated.cs ├── SocialController.generated.cs ├── Startup.cs ├── SyndicationController.generated.cs ├── T4MVC.cs ├── T4MVC.tt ├── T4MVC.tt.hooks.t4 ├── T4MVC.tt.settings.xml ├── ViewModels │ ├── AdminPostDetailsViewModel.cs │ ├── BlogConfigurationInput.cs │ ├── CommentInput.cs │ ├── CurrentUserViewModel.cs │ ├── FuturePostViewModel.cs │ ├── NewCommentEmailViewModel.cs │ ├── PostReference.cs │ ├── PostSummaryJson.cs │ ├── PostViewModel.cs │ ├── PostsSeriesViewModel.cs │ ├── PostsStatisticsViewModel.cs │ ├── PostsViewModel.cs │ ├── RecentCommentViewModel.cs │ ├── RedditSubmissionFailedViewModel.cs │ ├── SectionDetails.cs │ ├── SeriesPostsViewModel.cs │ ├── TagDetails.cs │ ├── TagsListViewModel.cs │ ├── UserInput.cs │ └── UserSummeryViewModel.cs ├── Views │ ├── Legal │ │ ├── PrivacyPolicy.cshtml │ │ └── Terms.cshtml │ ├── MailTemplates │ │ ├── NewComment.cshtml │ │ ├── RedditSubmissionFailed.cshtml │ │ ├── _Layout.cshtml │ │ └── _ViewStart.cshtml │ ├── PostDetails │ │ ├── Details.cshtml │ │ ├── MarkdownHelp.cshtml │ │ └── NextPrevNav.cshtml │ ├── Posts │ │ └── List.cshtml │ ├── Search │ │ └── SearchResult.cshtml │ ├── Section │ │ ├── AdministrationPanel.cshtml │ │ ├── ArchivesList.cshtml │ │ ├── ContactMe.cshtml │ │ ├── FuturePosts.cshtml │ │ ├── List.cshtml │ │ ├── PostsSeries.cshtml │ │ ├── PostsStatistics.cshtml │ │ ├── RecentComments.cshtml │ │ └── TagsList.cshtml │ ├── Series │ │ └── PostsSeries.cshtml │ ├── Shared │ │ ├── DisplayTemplates │ │ │ ├── Boolean.cshtml │ │ │ ├── HiddenInput.cshtml │ │ │ └── String.cshtml │ │ ├── EditorTemplates │ │ │ ├── Boolean.cshtml │ │ │ ├── EmailAddress.cshtml │ │ │ ├── HiddenInput.cshtml │ │ │ ├── MultilineText.cshtml │ │ │ ├── Password.cshtml │ │ │ └── String.cshtml │ │ ├── Error.cshtml │ │ ├── _ErrorLayout.cshtml │ │ └── _Layout.cshtml │ ├── Web.config │ ├── Welcome │ │ ├── Index.cshtml │ │ └── Success.cshtml │ └── _ViewStart.cshtml ├── Web.Debug.config ├── Web.Release.config ├── Web.config ├── WelcomeController.generated.cs ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── browserconfig.xml ├── compilerconfig.json ├── compilerconfig.json.defaults ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── mstile-144x144.png ├── mstile-150x150.png ├── mstile-310x150.png ├── mstile-310x310.png ├── mstile-70x70.png ├── packages.config ├── safari-pinned-tab.svg ├── site.webmanifest └── wlwmanifest.xml ├── RaccoonBlog.sln ├── RaccoonBlog.sln.DotSettings ├── SharedLibs ├── AutoMapper-unmerged │ ├── AutoMapper.dll │ ├── Castle.Core.dll │ ├── Castle.Core.xml │ ├── Castle.DynamicProxy2.dll │ └── Castle.DynamicProxy2.xml └── SgmlReaderDll.dll ├── cleanup.cmd ├── cleanup.ps1 ├── license.txt ├── normalize-crlf.ps1 └── packages └── repositories.config /.nuget/NuGet.Config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.nuget/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/.nuget/NuGet.exe -------------------------------------------------------------------------------- /Libs/Joel.Net.Akismet/Joel.Net.Akismet.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/Libs/Joel.Net.Akismet/Joel.Net.Akismet.dll -------------------------------------------------------------------------------- /NuGet.Config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /RaccoonBlog.ImportFromBlogML/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /RaccoonBlog.ImportFromSubtext/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.ImportFromSubtext/Properties/AssemblyInfo.cs -------------------------------------------------------------------------------- /RaccoonBlog.ImportFromSubtext/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /RaccoonBlog.IntegrationTests/AutoMapper/AutoMappedConfigurationTester.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using RaccoonBlog.Web.Infrastructure.AutoMapper; 3 | using RaccoonBlog.Web.Models; 4 | using RaccoonBlog.Web.ViewModels; 5 | using Xunit; 6 | 7 | namespace RaccoonBlog.IntegrationTests.AutoMapper 8 | { 9 | public class AutoMapperConfigurationTester 10 | { 11 | public AutoMapperConfigurationTester() 12 | { 13 | AutoMapperConfiguration.Configure(); 14 | } 15 | 16 | [Fact] 17 | public void AssertConfigurationIsValid() 18 | { 19 | Mapper.AssertConfigurationIsValid(); 20 | } 21 | 22 | [Fact] 23 | public void CanMapFromCommentToNewCommentViewModel() 24 | { 25 | var comment = new PostComments.Comment(); 26 | var ex = Record.Exception(() => comment.MapTo()); 27 | Assert.Null(ex); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /RaccoonBlog.IntegrationTests/ControllersCore/SlugGenerationTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using RaccoonBlog.Web.Infrastructure.Common; 6 | using Xunit; 7 | 8 | namespace RaccoonBlog.IntegrationTests.ControllersCore 9 | { 10 | public class SlugGenerationTests 11 | { 12 | [Fact] 13 | public void IgnoresEntitiesCorrectly() 14 | { 15 | var result = SlugConverter.TitleToSlug("Document based modeling: Auctions & Bids"); 16 | Assert.Equal("document-based-modeling-auctions-bids", result); 17 | 18 | result = SlugConverter.TitleToSlug("Hiring Questions–The phone book"); 19 | Assert.Equal("hiring-questions-the-phone-book", result); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RaccoonBlog.IntegrationTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.IntegrationTests/Properties/AssemblyInfo.cs -------------------------------------------------------------------------------- /RaccoonBlog.IntegrationTests/Routing/RoutingTestBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web.Mvc; 3 | using System.Web.Routing; 4 | using MvcContrib.TestHelper; 5 | using RaccoonBlog.Web; 6 | 7 | namespace RaccoonBlog.IntegrationTests.Routing 8 | { 9 | public class RoutingTestBase : IDisposable 10 | { 11 | protected static readonly Guid TestGuid = Guid.NewGuid(); 12 | 13 | public RoutingTestBase() 14 | { 15 | new RouteConfigurator(RouteTable.Routes).Configure(); 16 | } 17 | 18 | public void Dispose() 19 | { 20 | RouteTable.Routes.Clear(); 21 | } 22 | 23 | protected RouteData GetMethod(string url, HttpVerbs method = HttpVerbs.Get) 24 | { 25 | var route = url.WithMethod(method); 26 | route.Values["key"] = TestGuid; 27 | return route; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /RaccoonBlog.IntegrationTests/SlugConverterTests.cs: -------------------------------------------------------------------------------- 1 | using RaccoonBlog.Web; 2 | using RaccoonBlog.Web.Infrastructure.Common; 3 | using Xunit; 4 | 5 | namespace RaccoonBlog.IntegrationTests 6 | { 7 | public class SlugConverterTests 8 | { 9 | [Fact] 10 | public void ReplaceSpacesWithDashes() 11 | { 12 | Assert.Equal("ef-prof", C("EF Prof")); 13 | } 14 | 15 | private string C(string title) 16 | { 17 | return SlugConverter.TitleToSlug(title); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /RaccoonBlog.Migrations/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Migrations/Properties/AssemblyInfo.cs -------------------------------------------------------------------------------- /RaccoonBlog.Migrations/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/App_Start/AttributeRoutingConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Routing; 2 | using AttributeRouting.Web.Mvc; 3 | 4 | namespace RaccoonBlog.Web 5 | { 6 | public static class AttributeRoutingConfig 7 | { 8 | public static void RegisterRoutes(RouteCollection routes) 9 | { 10 | // See http://github.com/mccalltd/AttributeRouting/wiki for more options. 11 | // To debug routes locally using the built in ASP.NET development server, go to /routes.axd 12 | 13 | routes.MapAttributeRoutes(config => 14 | { 15 | config.UseLowercaseRoutes = true; 16 | config.PreserveCaseForUrlParameters = true; 17 | }); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/App_Start/CommonSetup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RaccoonBlog.Web 4 | { 5 | public class CommonSetup 6 | { 7 | public static void Setup() 8 | { 9 | WorkAroundNastyDotNetFrameworkBug(); 10 | } 11 | 12 | private static void WorkAroundNastyDotNetFrameworkBug() 13 | { 14 | // Work around nasty .NET framework bug 15 | try 16 | { 17 | new Uri("http://fail/first/time?only=%2bplus"); 18 | } 19 | catch (Exception) 20 | { 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/App_Start/FilterConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Mvc; 3 | 4 | using RaccoonBlog.Web.Helpers.Attributes; 5 | 6 | namespace RaccoonBlog.Web 7 | { 8 | public class FilterConfig 9 | { 10 | public static void RegisterGlobalFilters(GlobalFilterCollection filters) 11 | { 12 | filters.Add(new CustomHandleErrorAttribute()); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/AdminAreaRegistration.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | 3 | namespace RaccoonBlog.Web.Areas.Admin 4 | { 5 | public class AdminAreaRegistration : AreaRegistration 6 | { 7 | public override string AreaName 8 | { 9 | get { return "Admin"; } 10 | } 11 | 12 | public override void RegisterArea(AreaRegistrationContext context) 13 | { 14 | context.MapRoute( 15 | "Admin_default", 16 | "admin/{controller}/{action}/{*id}", 17 | new { controller = "Posts", action = "Index", id = UrlParameter.Optional }, 18 | new[] { "RaccoonBlog.Web.Areas.Admin.Controllers" } 19 | ); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/css/bootstrap/bootstrap-extend.css: -------------------------------------------------------------------------------- 1 | /* Less CSS Document */ 2 | /* This file adds useful bootstrap-style classes */ 3 | @media (min-width: 768px) { 4 | .pull-right-sm { 5 | float: right; 6 | } 7 | } 8 | @media (min-width: 768px) { 9 | .pull-left-sm { 10 | float: left; 11 | } 12 | } 13 | @media (min-width: 768px) { 14 | .text-right-sm { 15 | text-align: right; 16 | } 17 | } 18 | /*# sourceMappingURL=bootstrap-extend.css.map */ -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/css/bootstrap/bootstrap-extend.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["bootstrap-extend.less"],"names":[],"mappings":";;AASA,QAHoC;EAGpC;IAFE,YAAA;;;AAQF,QAHoC;EAGpC;IAFE,WAAA;;;AAQF,QAHoC;EAGpC;IAFE,iBAAA","file":"bootstrap-extend.css"} -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/css/bootstrap/bootstrap-extend.less: -------------------------------------------------------------------------------- 1 | /* Less CSS Document */ 2 | /* This file adds useful bootstrap-style classes */ 3 | 4 | .pull-right-sm { 5 | @media (min-width: @screen-tablet) { 6 | float:right !important; 7 | } 8 | } 9 | 10 | .pull-left-sm { 11 | @media (min-width: @screen-tablet) { 12 | float:left !important; 13 | } 14 | } 15 | 16 | .text-right-sm { 17 | @media (min-width: @screen-tablet) { 18 | text-align:right !important; 19 | } 20 | } 21 | 22 | @media (min-width: @screen-phone) { 23 | 24 | } 25 | @media (min-width: @screen-tablet) { 26 | 27 | } 28 | @media (min-width: @screen-desktop) { 29 | 30 | } 31 | @media (min-width: @screen-lg-desktop) { 32 | 33 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/css/bootstrap/bootstrap-extend.min.css: -------------------------------------------------------------------------------- 1 | @media(min-width:768px){.pull-right-sm{float:right}}@media(min-width:768px){.pull-left-sm{float:left}}@media(min-width:768px){.text-right-sm{text-align:right}} -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/css/images/content_repeat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/css/images/content_repeat.jpg -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/css/images/nav_divider.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/css/images/nav_divider.jpg -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/css/images/nav_item_0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/css/images/nav_item_0.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/css/images/nav_item_1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/css/images/nav_item_1.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/css/images/nav_logout.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/css/images/nav_logout.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/langs/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/langs/readme.md: -------------------------------------------------------------------------------- 1 | This is where language files should be placed. 2 | 3 | Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/ 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/advlist/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/anchor/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/anchor/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("anchor",function(a){function b(){var b=a.selection.getNode(),c="";"A"==b.tagName&&(c=b.name||b.id||""),a.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:c},onsubmit:function(b){a.execCommand("mceInsertContent",!1,a.dom.createHTML("a",{id:b.data.name}))}})}a.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:b,stateSelector:"a:not([href])"}),a.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:b})}); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/autolink/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/autoresize/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/autosave/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/bbcode/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/charmap/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/code/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/code/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("code",function(a){function b(){var b=a.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:a.getParam("code_dialog_width",600),minHeight:a.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(b){a.focus(),a.undoManager.transact(function(){a.setContent(b.data.code)}),a.selection.setCursorLocation(),a.nodeChanged()}});b.find("#code").value(a.getContent({source_view:!0}))}a.addCommand("mceCodeEditor",b),a.addButton("code",{icon:"code",tooltip:"Source code",onclick:b}),a.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:b})}); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/colorpicker/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/contextmenu/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/contextmenu/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("contextmenu",function(a){var b,c=a.settings.contextmenu_never_use_native;a.on("contextmenu",function(d){var e,f=a.getDoc();if(!d.ctrlKey||c){if(d.preventDefault(),tinymce.Env.mac&&tinymce.Env.webkit&&2==d.button&&f.caretRangeFromPoint&&a.selection.setRng(f.caretRangeFromPoint(d.x,d.y)),e=a.settings.contextmenu||"link image inserttable | cell row column deletetable",b)b.show();else{var g=[];tinymce.each(e.split(/[ ,]/),function(b){var c=a.menuItems[b];"|"==b&&(c={text:b}),c&&(c.shortcut="",g.push(c))});for(var h=0;h 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/directionality/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("directionality",function(a){function b(b){var c,d=a.dom,e=a.selection.getSelectedBlocks();e.length&&(c=d.getAttrib(e[0],"dir"),tinymce.each(e,function(a){d.getParent(a.parentNode,"*[dir='"+b+"']",d.getRoot())||(c!=b?d.setAttrib(a,"dir",b):d.setAttrib(a,"dir",null))}),a.nodeChanged())}function c(a){var b=[];return tinymce.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(c){b.push(c+"[dir="+a+"]")}),b.join(",")}a.addCommand("mceDirectionLTR",function(){b("ltr")}),a.addCommand("mceDirectionRTL",function(){b("rtl")}),a.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:c("ltr")}),a.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:c("rtl")})}); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-cool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-cool.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-cry.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-cry.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-frown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-frown.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-innocent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-innocent.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-kiss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-kiss.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-laughing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-laughing.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-sealed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-sealed.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-surprised.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-surprised.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-undecided.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-undecided.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-wink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-wink.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-yell.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/img/smiley-yell.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/emoticons/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("emoticons",function(a,b){function c(){var a;return a='',tinymce.each(d,function(c){a+="",tinymce.each(c,function(c){var d=b+"/img/smiley-"+c+".gif";a+=''}),a+=""}),a+="
"}var d=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:c,onclick:function(b){var c=a.dom.getParent(b.target,"a");c&&(a.insertContent(''+c.getAttribute('),this.hide())}},tooltip:"Emoticons"})}); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/example/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/example/dialog.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

Custom dialog

5 | Input some text: 6 | 7 | 8 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/example/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("example",function(a,b){a.addButton("example",{text:"My button",icon:!1,onclick:function(){a.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(b){a.insertContent("Title: "+b.data.title)}})}}),a.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){a.windowManager.open({title:"TinyMCE site",url:b+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var b=a.windowManager.getWindows()[0];a.insertContent(b.getContentWindow().document.getElementById("content").value),b.close()}},{text:"Close",onclick:"close"}]})}})}); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/example_dependency/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/example_dependency/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("example_dependency",function(){},["example"]); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/fullpage/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/fullscreen/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/hr/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/hr/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("hr",function(a){a.addCommand("InsertHorizontalRule",function(){a.execCommand("mceInsertContent",!1,"
")}),a.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),a.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})}); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/image/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/importcss/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/insertdatetime/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/layer/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/legacyoutput/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/link/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/lists/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/media/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/media/moxieplayer.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/media/moxieplayer.swf -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/nonbreaking/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/nonbreaking/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("nonbreaking",function(a){var b=a.getParam("nonbreaking_force_tab");if(a.addCommand("mceNonBreaking",function(){a.insertContent(a.plugins.visualchars&&a.plugins.visualchars.state?' ':" "),a.dom.setAttrib(a.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),a.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),a.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),b){var c=+b>1?+b:3;a.on("keydown",function(b){if(9==b.keyCode){if(b.shiftKey)return;b.preventDefault();for(var d=0;c>d;d++)a.execCommand("mceNonBreaking")}})}}); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/noneditable/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/pagebreak/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/paste/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/preview/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/print/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/print/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("print",function(a){a.addCommand("mcePrint",function(){a.getWin().print()}),a.addButton("print",{title:"Print",cmd:"mcePrint"}),a.addShortcut("Meta+P","","mcePrint"),a.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Meta+P",context:"file"})}); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/save/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/searchreplace/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/spellchecker/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/tabfocus/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/table/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/template/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/textcolor/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/textpattern/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/visualblocks/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/visualblocks/css/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/visualchars/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/wordcount/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/plugins/wordcount/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("wordcount",function(a){function b(){a.theme.panel.find("#wordcount").text(["Words: {0}",e.getCount()])}var c,d,e=this;c=a.getParam("wordcount_countregex",/[\w\u2019\x27\-\u00C0-\u1FFF]+/g),d=a.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g),a.on("init",function(){var c=a.theme.panel&&a.theme.panel.find("#statusbar")[0];c&&window.setTimeout(function(){c.insert({type:"label",name:"wordcount",text:["Words: {0}",e.getCount()],classes:"wordcount",disabled:a.settings.readonly},0),a.on("setcontent beforeaddundo",b),a.on("keyup",function(a){32==a.keyCode&&b()})},0)}),e.getCount=function(){var b=a.getContent({format:"raw"}),e=0;if(b){b=b.replace(/\.\.\./g," "),b=b.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," "),b=b.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i,"$1$3").replace(/&.+?;/g," "),b=b.replace(d,"");var f=b.match(c);f&&(e=f.length)}return e}}); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce-small.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce-small.eot -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce-small.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce-small.woff -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce.eot -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce.ttf -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/fonts/tinymce.woff -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/img/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/img/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/img/anchor.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/img/loader.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/img/object.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/img/object.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/img/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/skins/lightgray/img/trans.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Content/js/tinymce/themes/modern/_notes/dwsync.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Controllers/AdminController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web.Mvc; 3 | using RaccoonBlog.Web.Controllers; 4 | 5 | namespace RaccoonBlog.Web.Areas.Admin.Controllers 6 | { 7 | [Authorize] 8 | public abstract partial class AdminController : RaccoonController 9 | { 10 | private IDisposable disableAggressiveCaching; 11 | 12 | protected override void OnActionExecuting(ActionExecutingContext filterContext) 13 | { 14 | disableAggressiveCaching = DocumentStore.DisableAggressiveCaching(); 15 | base.OnActionExecuting(filterContext); 16 | } 17 | 18 | protected override void OnActionExecuted(ActionExecutedContext filterContext) 19 | { 20 | using(disableAggressiveCaching) 21 | base.OnActionExecuted(filterContext); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Enums/MenuButtonType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace RaccoonBlog.Web.Areas.Admin.Enums 7 | { 8 | public enum MenuButtonType 9 | { 10 | Plain, 11 | Add, 12 | Toggle 13 | } 14 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Models/MenuItem.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace RaccoonBlog.Web.Areas.Admin.Models 4 | { 5 | using RaccoonBlog.Web.Areas.Admin.Enums; 6 | 7 | public class MenuItem 8 | { 9 | public string Title { get; set; } 10 | public string Url { get; set; } 11 | public bool IsCurrent { get; set; } 12 | public MenuButtonType Type { get; set; } 13 | public IList SubMenus { get; set; } 14 | } 15 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/ViewModels/AddIpToBlackListViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Areas.Admin.ViewModels 2 | { 3 | public class AddIpToBlackListViewModel 4 | { 5 | public string IpAddress { get; set; } 6 | public bool AlreadySaved { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/ViewModels/RedditManualSubmissionViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using RaccoonBlog.Web.Models; 3 | 4 | namespace RaccoonBlog.Web.Areas.Admin.ViewModels 5 | { 6 | public class RedditManualSubmissionViewModel 7 | { 8 | public IList NotSubmittedPosts { get; set; } 9 | 10 | public IList SubredditsToSubmitTo { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Login/CurrentUser.cshtml: -------------------------------------------------------------------------------- 1 | @model CurrentUserViewModel 2 | @{ 3 | Layout = ""; 4 | } 5 | @if (Model.IsAuthenticated()) 6 | { 7 |

Welcome @Model.FullName

8 |

Log out

9 | } 10 | else 11 | { 12 |

Log In

13 |

Log in

14 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Posts/AddIpToBlackList.cshtml: -------------------------------------------------------------------------------- 1 | @model RaccoonBlog.Web.Areas.Admin.ViewModels.AddIpToBlackListViewModel 2 | 3 |

Add IP address to blacklist

4 | 5 | @if (Model.AlreadySaved) 6 | { 7 |

The address @Model.IpAddress was already added to the IP blacklist. Do you want to extend its blocking for another month?

8 | } 9 | else 10 | { 11 |

Really add @Model.IpAddress to the IP blacklist? This will block the IP for a period of 1 month.

12 | } 13 | 14 |

15 | @using (Html.BeginForm("AddIpToBlackList", "Posts", FormMethod.Post)) 16 | { 17 | @Html.HiddenFor(x => x.IpAddress) 18 | 19 | } 20 |

-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Posts/DeleteAllSpamComments.cshtml: -------------------------------------------------------------------------------- 1 | 

Delete all spam comments

2 |

Really delete all spam comments?

3 | 4 |

5 | @using (Html.BeginForm("DeleteAllSpamComments", "Posts", new { deleteAll = true })) 6 | { 7 | 8 | } 9 |

-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/Boolean.cshtml: -------------------------------------------------------------------------------- 1 | @functions{ 2 | private bool? Value { 3 | get { 4 | if (ViewData.Model == null) { 5 | return null; 6 | } 7 | return Convert.ToBoolean(ViewData.Model, System.Globalization.CultureInfo.InvariantCulture); 8 | } 9 | } 10 | } 11 | 12 |
13 |
14 | 18 |
19 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/BooleanLong.cshtml: -------------------------------------------------------------------------------- 1 | @functions{ 2 | private bool? Value { 3 | get { 4 | if (ViewData.Model == null) { 5 | return null; 6 | } 7 | return Convert.ToBoolean(ViewData.Model, System.Globalization.CultureInfo.InvariantCulture); 8 | } 9 | } 10 | } 11 | 12 |
13 |
14 |
15 | 19 |
20 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/DateTime.cshtml: -------------------------------------------------------------------------------- 1 | 
2 | 5 |
6 |
7 | @Html.TextBox(string.Empty, ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control" }) 8 | @Html.ValidationMessage(string.Empty) 9 |
10 |
11 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/EmailAddress.cshtml: -------------------------------------------------------------------------------- 1 | 
2 | 5 |
6 | @Html.TextBox(string.Empty, ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control", type = "email" }) 7 | @Html.ValidationMessage(string.Empty) 8 |
9 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/HiddenInput.cshtml: -------------------------------------------------------------------------------- 1 | @model object 2 | @Html.Hidden(string.Empty, Model) -------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/Int32.cshtml: -------------------------------------------------------------------------------- 1 | 
2 | 5 |
6 | @Html.TextBox(string.Empty, ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control", type = "number" }) 7 | @Html.ValidationMessage(string.Empty) 8 |
9 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/NameWithDescription.cshtml: -------------------------------------------------------------------------------- 1 | @using System.ComponentModel.DataAnnotations 2 |
3 | 7 |
8 | @{ 9 | var isDateTime = ViewData.ModelMetadata.DataTypeName == Enum.GetName(typeof(DataType), DataType.Date); 10 | var divClass = isDateTime ? "date datepicker" : string.Empty; 11 | } 12 |
13 | @Html.TextBox(string.Empty, ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control" }) 14 |
15 | @Html.ValidationMessage(string.Empty) 16 |
17 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/Password.cshtml: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | @Html.Password(string.Empty, ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control" }) 7 | @Html.ValidationMessage(string.Empty) 8 |
9 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/TextAbove.cshtml: -------------------------------------------------------------------------------- 1 | 
2 | 5 |
6 | @Html.TextBox(string.Empty, ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control" }) 7 | @Html.ValidationMessage(string.Empty) 8 |
9 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/Shared/EditorTemplates/TextLong.cshtml: -------------------------------------------------------------------------------- 1 | 
2 | 5 |
6 | @Html.TextBox(string.Empty, ViewData.TemplateInfo.FormattedModelValue, new 7 | { 8 | @class = "form-control", 9 | maxlength = ViewData["maxlength"], 10 | placeholder = ViewData["placeholder"] 11 | }) 12 | @Html.ValidationMessage(string.Empty) 13 |
14 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Areas/Admin/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Areas/Admin/Views/Shared/_Layout.cshtml"; 3 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 27 | button& { 28 | padding: 0; 29 | cursor: pointer; 30 | background: transparent; 31 | border: 0; 32 | -webkit-appearance: none; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | visibility: hidden; 21 | 22 | &.in { display: block; visibility: visible; } 23 | tr&.in { display: table-row; } 24 | tbody&.in { display: table-row-group; } 25 | } 26 | 27 | .collapsing { 28 | position: relative; 29 | height: 0; 30 | overflow: hidden; 31 | .transition-property(~"height, visibility"); 32 | .transition-duration(.35s); 33 | .transition-timing-function(ease); 34 | } 35 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a& { 9 | color: @color; 10 | 11 | .list-group-item-heading { 12 | color: inherit; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | color: @color; 18 | background-color: darken(@background, 5%); 19 | } 20 | &.active, 21 | &.active:hover, 22 | &.active:focus { 23 | color: #fff; 24 | background-color: @color; 25 | border-color: @color; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | } 10 | &:first-child { 11 | > a, 12 | > span { 13 | .border-left-radius(@border-radius); 14 | } 15 | } 16 | &:last-child { 17 | > a, 18 | > span { 19 | .border-right-radius(@border-radius); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object, 16 | video { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | bottom: 0; 21 | height: 100%; 22 | width: 100%; 23 | border: 0; 24 | } 25 | 26 | // Modifier class for 16:9 aspect ratio 27 | &.embed-responsive-16by9 { 28 | padding-bottom: 56.25%; 29 | } 30 | 31 | // Modifier class for 4:3 aspect ratio 32 | &.embed-responsive-4by3 { 33 | padding-bottom: 75%; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(border .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/bootstrap/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/custom/ayende.styles.css: -------------------------------------------------------------------------------- 1 | div.leftSide a.logo { 2 | background: url(../img/logo.svg) center no-repeat; 3 | background-size: contain; 4 | } 5 | div.leftSide a.logo-vertical { 6 | background: url(../img/logo-vertical.svg) center no-repeat; 7 | background-size: contain; 8 | } 9 | /*# sourceMappingURL=ayende.styles.css.map */ -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/custom/ayende.styles.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"ayende.styles.css","sources":["ayende.styles.less"],"names":[],"mappings":"AAAA,GAAG,SACF,EAAC;EACA,iDAAA;EACA,wBAAA;;AAIF,GAAG,SACF,EAAC;EACA,0DAAA;EACA,wBAAA"} -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/custom/ayende.styles.less: -------------------------------------------------------------------------------- 1 | div.leftSide { 2 | a.logo-vertical { 3 | background: url(../img/logo-vertical.svg) center no-repeat; 4 | background-size: contain; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/custom/ayende.styles.min.css: -------------------------------------------------------------------------------- 1 | div.leftSide a.logo{background:url(../img/logo.svg) center no-repeat;background-size:contain}div.leftSide a.logo-vertical{background:url(../img/logo-vertical.svg) center no-repeat;background-size:contain} -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/custom/ayende.variables.css: -------------------------------------------------------------------------------- 1 | @import url(http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,900,400italic,700italic); 2 | @import url(http://fonts.googleapis.com/css?family=Source+Code+Pro:400,700); 3 | /*# sourceMappingURL=ayende.variables.css.map */ -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/custom/ayende.variables.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"ayende.variables.css","sources":[],"names":[],"mappings":""} -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/custom/ayende.variables.min.css: -------------------------------------------------------------------------------- 1 | @import url(http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,900,400italic,700italic);@import url(http://fonts.googleapis.com/css?family=Source+Code+Pro:400,700); -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/fonts/icomoon.eot -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/fonts/icomoon.ttf -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/fonts/icomoon.woff -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/banners/couchbase-vs-ravendb-whitepaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/banners/couchbase-vs-ravendb-whitepaper.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/banners/native-ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/banners/native-ai.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/banners/ravendb-vs-mongodb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/banners/ravendb-vs-mongodb.jpg -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/banners/ravendb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/banners/ravendb.jpg -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/banners/webinars-ravendb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/banners/webinars-ravendb.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/banners/workshops-ravendb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/banners/workshops-ravendb.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/commentDate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/commentDate.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/commentDateImp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/commentDateImp.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/commentPreviewDate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/commentPreviewDate.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/error.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/ico_stack_active.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/ico_stack_inactive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/left-corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/left-corner.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/mdd_ajax_loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/mdd_ajax_loader.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/mdd_gripper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/mdd_gripper.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/mdd_modal_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/mdd_modal_background.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/mdd_toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/mdd_toolbar.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/readmore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/readmore.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/readmore2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/readmore2.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/right-corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/right-corner.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/rss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/rss.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/side_bkg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/side_bkg.jpg -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/css/img/side_bkg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/css/img/side_bkg.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/fonts/icomoon.eot -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/fonts/icomoon.ttf -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/fonts/icomoon.woff -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/images/ayende@rahien.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/images/ayende@rahien.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/images/oren.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/images/oren.jpg -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/.htaccess: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | # For licensing, see LICENSE.html or http://ckeditor.com/license 4 | # 5 | 6 | # 7 | # On some specific Linux installations you could face problems with Firefox. 8 | # It could give you errors when loading the editor saying that some illegal 9 | # characters were found (three strange chars in the beginning of the file). 10 | # This could happen if you map the .js or .css files to PHP, for example. 11 | # 12 | # Those characters are the Byte Order Mask (BOM) of the Unicode encoded files. 13 | # All FCKeditor files are Unicode encoded. 14 | # 15 | 16 | AddType application/x-javascript .js 17 | AddType text/css .css 18 | 19 | # 20 | # If PHP is mapped to handle XML files, you could have some issues. The 21 | # following will disable it. 22 | # 23 | 24 | AddType text/xml .xml 25 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.editorConfig = function( config ) 7 | { 8 | // Define changes to default configuration here. For example: 9 | // config.language = 'fr'; 10 | // config.uiColor = '#AADC6E'; 11 | }; 12 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/contents.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | body 7 | { 8 | /* Font */ 9 | font-family: Arial, Verdana, sans-serif; 10 | font-size: 12px; 11 | 12 | /* Text color */ 13 | color: #222; 14 | 15 | /* Remove the background color to make it transparent */ 16 | background-color: #fff; 17 | } 18 | 19 | ol,ul,dl 20 | { 21 | /* IE7: reset rtl list margin. (#7334) */ 22 | *margin-right:0px; 23 | /* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/ 24 | padding:0 40px; 25 | } 26 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/images/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/images/spacer.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/about/dialogs/logo_ckeditor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/about/dialogs/logo_ckeditor.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/devtools/lang/en.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.plugins.setLang('devtools','en',{devTools:{title:'Element Information',dialogName:'Dialog window name',tabName:'Tab name',elementId:'Element ID',elementType:'Element type'}}); 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/dialog/dialogDefinition.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/docprops/plugin.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.plugins.add('docprops',{init:function(a){var b=new CKEDITOR.dialogCommand('docProps');b.modes={wysiwyg:a.config.fullPage};a.addCommand('docProps',b);CKEDITOR.dialog.add('docProps',this.path+'dialogs/docprops.js');a.ui.addButton('DocProps',{label:a.lang.docprops.label,command:'docProps'});}}); 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/flash/images/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/flash/images/placeholder.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/forms/images/hiddenfield.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/forms/images/hiddenfield.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/iframe/images/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/iframe/images/placeholder.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/link/images/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/link/images/anchor.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/pagebreak/images/pagebreak.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/pagebreak/images/pagebreak.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/placeholder/lang/en.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.plugins.setLang('placeholder','en',{placeholder:{title:'Placeholder Properties',toolbar:'Create Placeholder',text:'Placeholder Text',edit:'Edit Placeholder',textMissing:'The placeholder must contain text.'}}); 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/placeholder/lang/he.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.plugins.setLang('placeholder','he',{placeholder:{title:'מאפייני שומר מקום',toolbar:'צור שומר מקום',text:'תוכן שומר המקום',edit:'ערוך שומר מקום',textMissing:'שומר המקום חייב להכיל טקסט.'}}); 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/placeholder/placeholder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/placeholder/placeholder.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_address.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_blockquote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_blockquote.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_div.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_div.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h1.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h2.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h3.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h4.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h5.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_h6.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_p.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/showblocks/images/block_pre.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/angel_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/angel_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/angry_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/angry_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/broken_heart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/broken_heart.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/confused_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/confused_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/cry_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/cry_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/devil_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/devil_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/embaressed_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/embaressed_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/envelope.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/envelope.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/heart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/heart.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/kiss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/kiss.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/lightbulb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/lightbulb.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/omg_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/omg_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/regular_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/regular_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/sad_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/sad_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/shades_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/shades_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/teeth_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/teeth_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/thumbs_down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/thumbs_down.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/thumbs_up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/thumbs_up.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/tounge_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/tounge_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/wink_smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/smiley/images/wink_smile.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/templates/templates/images/template1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/templates/templates/images/template1.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/templates/templates/images/template2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/templates/templates/images/template2.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/templates/templates/images/template3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/templates/templates/images/template3.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/lang/en.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.plugins.setLang('uicolor','en',{uicolor:{title:'UI Color Picker',preview:'Live preview',config:'Paste this string into your config.js file',predefined:'Predefined color sets'}}); 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/lang/he.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.plugins.setLang('uicolor','he',{uicolor:{title:'בחירת צבע ממשק משתמש',preview:'תצוגה מקדימה',config:'הדבק את הטקסט הבא לתוך הקובץ config.js',predefined:'קבוצות צבעים מוגדרות מראש'}}); 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/plugin.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.plugins.add('uicolor',{requires:['dialog'],lang:['en','he'],init:function(a){if(CKEDITOR.env.ie6Compat)return;a.addCommand('uicolor',new CKEDITOR.dialogCommand('uicolor'));a.ui.addButton('UIColor',{label:a.lang.uicolor.title,command:'uicolor',icon:this.path+'uicolor.gif'});CKEDITOR.dialog.add('uicolor',this.path+'dialogs/uicolor.js');CKEDITOR.scriptLoader.load(CKEDITOR.getUrl('plugins/uicolor/yui/yui.js'));a.element.getDocument().appendStyleSheet(CKEDITOR.getUrl('plugins/uicolor/yui/assets/yui.css'));}}); 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/uicolor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/uicolor.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/yui/assets/hue_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/yui/assets/hue_bg.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/yui/assets/picker_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/yui/assets/picker_mask.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/icons.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/icons_rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/icons_rtl.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/dialog_sides.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/dialog_sides.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/dialog_sides.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/dialog_sides.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/dialog_sides_rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/dialog_sides_rtl.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/mini.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/mini.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/noimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/noimage.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/sprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/sprites.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/sprites_ie6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/sprites_ie6.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/toolbar_start.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/kama/images/toolbar_start.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/icons.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/icons_rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/icons_rtl.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/dialog_sides.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/dialog_sides.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/dialog_sides.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/dialog_sides.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/dialog_sides_rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/dialog_sides_rtl.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/mini.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/mini.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/noimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/noimage.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/sprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/sprites.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/sprites_ie6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/office2003/images/sprites_ie6.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/icons.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/icons_rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/icons_rtl.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/dialog_sides.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/dialog_sides.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/dialog_sides.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/dialog_sides.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/dialog_sides_rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/dialog_sides_rtl.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/mini.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/mini.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/noimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/noimage.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/sprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/sprites.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/sprites_ie6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/sprites_ie6.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/toolbar_start.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/js/ckeditor/skins/v2/images/toolbar_start.gif -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/ckeditor/skins/v2/skin.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | CKEDITOR.skins.add('v2',(function(){return{editor:{css:['editor.css']},dialog:{css:['dialog.css']},separator:{canGroup:false},templates:{css:['templates.css']},margins:[0,14,18,14]};})());(function(){CKEDITOR.dialog?a():CKEDITOR.on('dialogPluginReady',a);function a(){CKEDITOR.dialog.on('resize',function(b){var c=b.data,d=c.width,e=c.height,f=c.dialog,g=f.parts.contents;if(c.skin!='v2')return;g.setStyles({width:d+'px',height:e+'px'});if(!CKEDITOR.env.ie||CKEDITOR.env.ie9Compat)return;setTimeout(function(){var h=f.parts.dialog.getChild([0,0,0]),i=h.getChild(0),j=i.getSize('width');e+=i.getChild(0).getSize('height')+1;var k=h.getChild(2);k.setSize('width',j);k=h.getChild(7);k.setSize('width',j-28);k=h.getChild(4);k.setSize('height',e);k=h.getChild(5);k.setSize('height',e);},100);});};})(); 7 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/js/raccoon-blog.js: -------------------------------------------------------------------------------- 1 | 2 | // Common 3 | String.prototype.startsWith = function (str) { 4 | return this.substr(0, str.length) === str; 5 | }; 6 | String.prototype.endsWith = function (str) { 7 | return this.indexOf(str, this.length - str.length) !== -1; 8 | }; 9 | String.prototype.isNullOrEmpty = function () { 10 | return this == false || this === ''; 11 | }; 12 | 13 | (function (window, undefined) { 14 | var Raccoon = {}; 15 | Raccoon.Util = {}; 16 | Raccoon.Util.Views = {}; 17 | 18 | Raccoon.Util.Views.setMessage = function setMessage(message, cssClass) { 19 | var m = $('#message').html(message).removeClass(); 20 | if (cssClass) m.addClass(cssClass); 21 | m.css('visibility', 'visible'); 22 | }; 23 | 24 | window.Raccoon = Raccoon; 25 | })(window); 26 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/license/MarkdownDeep License.txt: -------------------------------------------------------------------------------- 1 | MarkdownDeep License 2 | ==================== 3 | 4 | MarkdownDeep - 5 | Copyright (C) 2010-2011 Topten Software 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use this product except in 8 | compliance with the License. You may obtain a copy of the License at 9 | 10 | 11 | 12 | Unless required by applicable law or agreed to in writing, software distributed under the License is 13 | distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and limitations under the License. 15 | 16 | 17 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/accordion.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Accordion 1.11.2 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2014 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/accordion/#theming 10 | */ 11 | .ui-accordion .ui-accordion-header { 12 | display: block; 13 | cursor: pointer; 14 | position: relative; 15 | margin: 2px 0 0 0; 16 | padding: .5em .5em .5em .7em; 17 | min-height: 0; /* support: IE7 */ 18 | font-size: 100%; 19 | } 20 | .ui-accordion .ui-accordion-icons { 21 | padding-left: 2.2em; 22 | } 23 | .ui-accordion .ui-accordion-icons .ui-accordion-icons { 24 | padding-left: 2.2em; 25 | } 26 | .ui-accordion .ui-accordion-header .ui-accordion-header-icon { 27 | position: absolute; 28 | left: .5em; 29 | top: 50%; 30 | margin-top: -8px; 31 | } 32 | .ui-accordion .ui-accordion-content { 33 | padding: 1em 2.2em; 34 | border-top: 0; 35 | overflow: auto; 36 | } 37 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/all.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.11.2 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2014 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/category/theming/ 10 | */ 11 | @import "base.css"; 12 | @import "theme.css"; 13 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/autocomplete.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Autocomplete 1.11.2 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2014 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/autocomplete/#theming 10 | */ 11 | .ui-autocomplete { 12 | position: absolute; 13 | top: 0; 14 | left: 0; 15 | cursor: default; 16 | } 17 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/base.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.11.2 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2014 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/category/theming/ 10 | */ 11 | @import url("core.css"); 12 | 13 | @import url("accordion.css"); 14 | @import url("autocomplete.css"); 15 | @import url("button.css"); 16 | @import url("datepicker.css"); 17 | @import url("dialog.css"); 18 | @import url("draggable.css"); 19 | @import url("menu.css"); 20 | @import url("progressbar.css"); 21 | @import url("resizable.css"); 22 | @import url("selectable.css"); 23 | @import url("selectmenu.css"); 24 | @import url("sortable.css"); 25 | @import url("slider.css"); 26 | @import url("spinner.css"); 27 | @import url("tabs.css"); 28 | @import url("tooltip.css"); 29 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/draggable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Draggable 1.11.2 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2014 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | */ 9 | .ui-draggable-handle { 10 | -ms-touch-action: none; 11 | touch-action: none; 12 | } 13 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Content/themes/base/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/selectable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Selectable 1.11.2 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2014 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | */ 9 | .ui-selectable { 10 | -ms-touch-action: none; 11 | touch-action: none; 12 | } 13 | .ui-selectable-helper { 14 | position: absolute; 15 | z-index: 100; 16 | border: 1px dotted black; 17 | } 18 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/sortable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Sortable 1.11.2 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2014 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | */ 9 | .ui-sortable-handle { 10 | -ms-touch-action: none; 11 | touch-action: none; 12 | } 13 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Content/themes/base/tooltip.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Tooltip 1.11.2 3 | * http://jqueryui.com 4 | * 5 | * Copyright 2014 jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/tooltip/#theming 10 | */ 11 | .ui-tooltip { 12 | padding: 8px; 13 | position: absolute; 14 | z-index: 9999; 15 | max-width: 300px; 16 | -webkit-box-shadow: 0 0 5px #aaa; 17 | box-shadow: 0 0 5px #aaa; 18 | } 19 | body .ui-tooltip { 20 | border-width: 2px; 21 | } 22 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Controllers/AggresivelyCachingRacconController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web.Mvc; 3 | 4 | namespace RaccoonBlog.Web.Controllers 5 | { 6 | public abstract partial class AggresivelyCachingRacconController : RaccoonController 7 | { 8 | IDisposable aggressivelyCacheFor; 9 | 10 | protected override void OnActionExecuting(ActionExecutingContext filterContext) 11 | { 12 | base.OnActionExecuting(filterContext); 13 | 14 | aggressivelyCacheFor = RavenSession.Advanced.DocumentStore.AggressivelyCacheFor(CacheDuration); 15 | } 16 | 17 | protected abstract TimeSpan CacheDuration { get; } 18 | 19 | protected override void OnActionExecuted(ActionExecutedContext filterContext) 20 | { 21 | base.OnActionExecuted(filterContext); 22 | 23 | if (aggressivelyCacheFor != null) 24 | { 25 | aggressivelyCacheFor.Dispose(); 26 | aggressivelyCacheFor = null; 27 | } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Controllers/LegalController.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | 3 | namespace RaccoonBlog.Web.Controllers 4 | { 5 | public class LegalController : RaccoonController 6 | { 7 | [HttpGet] 8 | [Route("privacy-policy")] 9 | public virtual ActionResult PrivacyPolicy() 10 | { 11 | return View("PrivacyPolicy"); 12 | } 13 | 14 | [HttpGet] 15 | [Route("terms")] 16 | public virtual ActionResult Terms() 17 | { 18 | return View("Terms"); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Controllers/SearchController.cs: -------------------------------------------------------------------------------- 1 | using System.Configuration; 2 | using System.Web.Mvc; 3 | 4 | namespace RaccoonBlog.Web.Controllers 5 | { 6 | public partial class SearchController : RaccoonController 7 | { 8 | private static string GoogleCustomSearchId => ConfigurationManager.AppSettings["Raccoon/GoogleCustomSearch/Id"]; 9 | 10 | public virtual ActionResult SearchResult(string q) 11 | { 12 | ViewBag.GoogleCustomSearchId = GoogleCustomSearchId; 13 | ViewBag.SearchTerm = q; 14 | return View((object)q); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Extensions/EnumerableExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace HibernatingRhinos.Loci.Common.Extensions 5 | { 6 | public static class EnumerableExtensions 7 | { 8 | public static void ForEach(this IEnumerable items, Action action) 9 | { 10 | foreach (var item in items) 11 | { 12 | action(item); 13 | } 14 | } 15 | 16 | public static IList Shuffle(this IList list) 17 | { 18 | var rng = new Random(); 19 | var n = list.Count; 20 | while (n > 1) 21 | { 22 | n--; 23 | int k = rng.Next(n + 1); 24 | T value = list[k]; 25 | list[k] = list[n]; 26 | list[n] = value; 27 | } 28 | return list; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Extensions/XmlResult.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | using System.Xml; 3 | using System.Xml.Linq; 4 | 5 | namespace HibernatingRhinos.Loci.Common.Extensions 6 | { 7 | public class XmlResult : ActionResult 8 | { 9 | private readonly XDocument _document; 10 | private readonly string _etag; 11 | 12 | public XmlResult(XDocument document, string etag) 13 | { 14 | _document = document; 15 | _etag = etag; 16 | } 17 | 18 | public override void ExecuteResult(ControllerContext context) 19 | { 20 | if (_etag != null) 21 | context.HttpContext.Response.AddHeader("ETag", _etag); 22 | 23 | context.HttpContext.Response.ContentType = "text/xml"; 24 | 25 | using (var xmlWriter = XmlWriter.Create(context.HttpContext.Response.OutputStream)) 26 | { 27 | _document.WriteTo(xmlWriter); 28 | xmlWriter.Flush(); 29 | } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="RaccoonBlog.Web.MvcApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/Attributes/AjaxOnlyAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web.Mvc; 3 | 4 | namespace RaccoonBlog.Web.Helpers.Attributes 5 | { 6 | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] 7 | public sealed class AjaxOnlyAttribute : ActionFilterAttribute 8 | { 9 | public override void OnActionExecuting(ActionExecutingContext filterContext) 10 | { 11 | var request = filterContext.HttpContext.Request; 12 | if (!request.IsAjaxRequest()) 13 | filterContext.Result = new HttpNotFoundResult("Only Ajax calls are permitted."); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/Banner.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace RaccoonBlog.Web.Helpers 7 | { 8 | public class Banner 9 | { 10 | public string ResourceUrl { get; set; } 11 | public string ImageSrc { get; set; } 12 | public string AltText { get; set; } 13 | 14 | } 15 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/Binders/GuidBinder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web.Mvc; 3 | 4 | namespace RaccoonBlog.Web.Helpers.Binders 5 | { 6 | public class GuidBinder : DefaultModelBinder 7 | { 8 | public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 9 | { 10 | var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); 11 | if (value == null) 12 | return Guid.Empty; 13 | 14 | Guid guid; 15 | if (Guid.TryParse(value.AttemptedValue, out guid) == false) 16 | return Guid.Empty; 17 | 18 | return guid; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/Binders/RemoveSpacesEnumBinder.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | 3 | namespace RaccoonBlog.Web.Helpers.Binders 4 | { 5 | public class RemoveSpacesEnumBinder : DefaultModelBinder 6 | { 7 | public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 8 | { 9 | var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); 10 | if (value == null) 11 | return base.BindModel(controllerContext, bindingContext); 12 | 13 | var values = value.RawValue as string[]; 14 | if (values == null) 15 | return base.BindModel(controllerContext, bindingContext); 16 | 17 | for (int i = 0; i < values.Length; i++) 18 | { 19 | values[i] = values[i].Replace(" ", string.Empty); 20 | } 21 | return base.BindModel(controllerContext, bindingContext); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/CommenterUtil.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web; 3 | 4 | namespace RaccoonBlog.Web.Helpers 5 | { 6 | public static class CommenterUtil 7 | { 8 | public const string CommenterCookieName = "commenter"; 9 | 10 | public static void SetCommenterCookie(HttpResponseBase response, string commenterKey) 11 | { 12 | var cookie = new HttpCookie(CommenterCookieName, commenterKey) {Expires = DateTime.Now.AddYears(1)}; 13 | response.Cookies.Add(cookie); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/ModelStateExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Web.Mvc; 3 | 4 | namespace RaccoonBlog.Web.Helpers 5 | { 6 | public static class ModelStateExtensions 7 | { 8 | public static string FirstErrorMessage(this ModelStateDictionary modelState) 9 | { 10 | var state = modelState.Values.FirstOrDefault(v => v.Errors.Count > 0); 11 | 12 | if (state == null) return null; 13 | 14 | var message = state.Errors 15 | .Where(error => string.IsNullOrEmpty(error.ErrorMessage) == false) 16 | .Select(error => error.ErrorMessage) 17 | .FirstOrDefault(); 18 | return message; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/PostUrlHelperExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | using RaccoonBlog.Web.ViewModels; 7 | 8 | namespace RaccoonBlog.Web.Helpers 9 | { 10 | public static class PostUrlHelperExtensions 11 | { 12 | public static string Series(this UrlHelper helper, string seriesId, string seriesSlug) 13 | { 14 | return helper.Action( 15 | MVC.Posts.ActionNames.Series, 16 | MVC.Posts.Name, 17 | new { seriesId, seriesSlug }); 18 | } 19 | 20 | public static string Post(this UrlHelper helper, string id, string slug) 21 | { 22 | return helper.Action(MVC.PostDetails.ActionNames.Details, MVC.PostDetails.Name, new 23 | { 24 | id, 25 | slug 26 | }); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/SidebarHelper.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | 3 | namespace RaccoonBlog.Web.Helpers 4 | { 5 | public class SidebarHelper 6 | { 7 | private const int VisitCountMax = 10; 8 | 9 | private static HttpRequest CurrentRequest => HttpContext.Current.Request; 10 | 11 | public static bool ShouldShowSidebar() 12 | { 13 | var hasExplicitlyHidden = CookieJar.HideSidebar; 14 | if (hasExplicitlyHidden == true) 15 | return false; 16 | 17 | var isOnMainPage = CurrentRequest.Path == "/"; 18 | if (isOnMainPage) 19 | return true; 20 | 21 | var visitCount = CookieJar.VisitCount.GetValueOrDefault(); 22 | return visitCount < VisitCountMax; 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/StaticFileUrlHelperExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | 3 | namespace RaccoonBlog.Web.Helpers 4 | { 5 | public static class StaticFileUrlHelperExtensions 6 | { 7 | private const string CssDir = "css"; 8 | private const string ScriptDir = "js"; 9 | private const int RevisionNumber = 2; 10 | 11 | public static string Css(this UrlHelper urlHelper, string fileName) 12 | { 13 | if (!fileName.EndsWith(".css") && !fileName.EndsWith(".less")) 14 | fileName += ".css"; 15 | 16 | return urlHelper.Content(string.Format("~/Content/{0}/{1}?version={2}", CssDir, fileName, RevisionNumber)); 17 | } 18 | 19 | public static string Script(this UrlHelper urlHelper, string fileName) 20 | { 21 | if (!fileName.EndsWith(".js")) 22 | fileName += ".js"; 23 | 24 | return urlHelper.Content(string.Format("~/Content/{0}/{1}?version={2}", ScriptDir, fileName, RevisionNumber)); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/Validation/NonEmptyGuid.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace RaccoonBlog.Web.Helpers.Validation 5 | { 6 | public class NonEmptyGuidAttribute : ValidationAttribute 7 | { 8 | protected override ValidationResult IsValid(object value, ValidationContext validationContext) 9 | { 10 | if (value == null) 11 | return ValidationResult.Success; 12 | 13 | if (value is string == false && value is Guid == false) 14 | return ValidationResult.Success; 15 | 16 | Guid guid = value is Guid ? (Guid) value : Guid.Empty; 17 | if (value is string) 18 | { 19 | if (Guid.TryParse((string)value, out guid) == false) 20 | return new ValidationResult("The value is not compatible with Guid type"); 21 | } 22 | 23 | if (guid == Guid.Empty) 24 | return new ValidationResult("Value cannot be empty"); 25 | 26 | return ValidationResult.Success; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Helpers/ViewExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Helpers 2 | { 3 | public static class ViewExtensions 4 | { 5 | public static bool IsDebug() 6 | { 7 | #if DEBUG 8 | return true; 9 | #else 10 | return false; 11 | #endif 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/AbstractProfile.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Mvc; 3 | using AutoMapper; 4 | 5 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles 6 | { 7 | public abstract class AbstractProfile : Profile 8 | { 9 | protected UrlHelper UrlHelper 10 | { 11 | get { return new UrlHelper(HttpContext.Current.Request.RequestContext); } 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/EmailViewModelMapperProfile.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles.Resolvers; 3 | using RaccoonBlog.Web.Models; 4 | using RaccoonBlog.Web.ViewModels; 5 | 6 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles 7 | { 8 | public class EmailViewModelMapperProfile : Profile 9 | { 10 | public EmailViewModelMapperProfile() 11 | { 12 | CreateMap() 13 | .ForMember(x=>x.Body, o=>o.MapFrom(x=>MarkdownResolver.Resolve(x.Body))) 14 | .ForMember(x => x.PostId, o => o.Ignore()) 15 | .ForMember(x => x.PostTitle, o => o.Ignore()) 16 | .ForMember(x => x.PostSlug, o => o.Ignore()) 17 | .ForMember(x => x.BlogName, o => o.Ignore()) 18 | .ForMember(x => x.Key, o => o.Ignore()) 19 | ; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/Resolvers/DateTimeTypeConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using AutoMapper; 3 | 4 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles.Resolvers 5 | { 6 | public class DateTimeTypeConverter : ITypeConverter 7 | { 8 | public DateTime Convert(DateTimeOffset source, DateTime destination, ResolutionContext context) 9 | { 10 | return source.DateTime; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/Resolvers/GuidToStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using AutoMapper; 3 | 4 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles.Resolvers 5 | { 6 | public class GuidToStringConverter : ITypeConverter 7 | { 8 | public string Convert(Guid source, string destination, ResolutionContext context) 9 | { 10 | return source.ToString("N"); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/Resolvers/MvcHtmlStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | using AutoMapper; 3 | 4 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles.Resolvers 5 | { 6 | public class MvcHtmlStringConverter : ITypeConverter 7 | { 8 | public MvcHtmlString Convert(string source, MvcHtmlString destination, ResolutionContext context) 9 | { 10 | return MvcHtmlString.Create(source); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/Resolvers/StringToGuidConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using AutoMapper; 3 | 4 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles.Resolvers 5 | { 6 | public class StringToGuidConverter : ITypeConverter 7 | { 8 | public Guid Convert(string source, Guid destination, ResolutionContext context) 9 | { 10 | if (Guid.TryParse(source, out var guid) == false) 11 | return Guid.Empty; 12 | return guid; 13 | } 14 | } 15 | 16 | public class StringToNullableGuidConverter : ITypeConverter 17 | { 18 | public Guid? Convert(string source, Guid? destination, ResolutionContext context) 19 | { 20 | if (Guid.TryParse(source, out var guid) == false) 21 | return null; 22 | return guid; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/Resolvers/TagsResolver.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles.Resolvers 5 | { 6 | public class TagsResolver 7 | { 8 | private const string TagsSeparator = "|"; 9 | 10 | public static string ResolveTags(ICollection tags) 11 | { 12 | return string.Join(TagsSeparator, tags); 13 | } 14 | 15 | public static ICollection ResolveTagsInput(string tags) 16 | { 17 | if (string.IsNullOrEmpty(tags)) 18 | return new string[0]; 19 | 20 | return tags.Split(new[] { TagsSeparator }, StringSplitOptions.RemoveEmptyEntries); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/Resolvers/UrlResolver.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles.Resolvers 2 | { 3 | public class UrlResolver 4 | { 5 | public static string Resolve(string url) 6 | { 7 | if (string.IsNullOrEmpty(url)) 8 | return null; 9 | 10 | if (url.StartsWith("http://") || url.StartsWith("https://")) 11 | return url; 12 | 13 | return "http://" + url; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/TagsListViewModelMapperProfile.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using RaccoonBlog.Web.Infrastructure.Indexes; 3 | using RaccoonBlog.Web.ViewModels; 4 | 5 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles 6 | { 7 | public class TagsListViewModelMapperProfile : Profile 8 | { 9 | public TagsListViewModelMapperProfile() 10 | { 11 | CreateMap() 12 | ; 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/AutoMapper/Profiles/UserAdminMapperProfile.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles.Resolvers; 3 | using RaccoonBlog.Web.Models; 4 | using RaccoonBlog.Web.ViewModels; 5 | 6 | namespace RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles 7 | { 8 | public class UserAdminMapperProfile : Profile 9 | { 10 | public UserAdminMapperProfile() 11 | { 12 | CreateMap() 13 | .ForMember(x => x.Id, o => o.MapFrom(m => m.GetIdForUrl())) 14 | ; 15 | 16 | CreateMap() 17 | .ForMember(x => x.Id, o => o.Ignore()); 18 | 19 | CreateMap() 20 | .ForMember(x => x.Id, o => o.MapFrom(m => m.GetIdForUrl())) 21 | ; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/Common/DateTimeOffsetUtil.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RaccoonBlog.Web.Infrastructure.Common 4 | { 5 | public static class DateTimeOffsetUtil 6 | { 7 | public static DateTimeOffset AsMinutes(this DateTimeOffset self) 8 | { 9 | return new DateTimeOffset(self.Year, self.Month, self.Day, self.Hour, self.Minute, 0, 0, self.Offset); 10 | } 11 | 12 | public static DateTimeOffset ConvertFromUnixTimestamp(long timestamp) 13 | { 14 | var origin = new DateTimeOffset(1970, 1, 1, 0, 0, 0, 0, DateTimeOffset.Now.Offset); 15 | return origin.AddSeconds(timestamp); 16 | } 17 | 18 | public static DateTimeOffset ConvertFromJsTimestamp(long timestamp) 19 | { 20 | var origin = new DateTimeOffset(1970, 1, 1, 0, 0, 0, 0, DateTimeOffset.Now.Offset); 21 | return origin.AddMilliseconds(timestamp); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/Common/QueryableExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using RaccoonBlog.Web.Models; 4 | 5 | namespace RaccoonBlog.Web.Infrastructure.Common 6 | { 7 | public static class QueryableExtensions 8 | { 9 | public static IQueryable Paging(this IQueryable query, int currentPage, int defaultPage, int pageSize) 10 | { 11 | return query 12 | .Skip((currentPage - defaultPage)*pageSize) 13 | .Take(pageSize); 14 | } 15 | 16 | public static IQueryable WhereIsPublicPost(this IQueryable query) 17 | { 18 | return query 19 | .Where(post => post.PublishAt < DateTimeOffset.Now.AsMinutes()); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/Common/SlugConverter.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/Infrastructure/Common/SlugConverter.cs -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/Common/TitleConverter.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Infrastructure.Common 2 | { 3 | public static class TitleConverter 4 | { 5 | public static string ToSeriesTitle(string value) 6 | { 7 | if (string.IsNullOrEmpty(value)) 8 | return string.Empty; 9 | 10 | var titles = value.Split(':'); 11 | 12 | if (titles.Length > 1) 13 | { 14 | return titles[0].Trim(); 15 | } 16 | 17 | return string.Empty; 18 | } 19 | 20 | public static string ToPostTitle(string value) 21 | { 22 | if (string.IsNullOrEmpty(value)) 23 | return string.Empty; 24 | 25 | var titles = value.Split(':'); 26 | 27 | if (titles.Length > 1) 28 | { 29 | return titles[1].Trim(); 30 | } 31 | 32 | return string.Empty; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/Indexes/Posts_ByMonthPublished_Count.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using RaccoonBlog.Web.Models; 3 | using Raven.Client.Documents.Indexes; 4 | 5 | namespace RaccoonBlog.Web.Infrastructure.Indexes 6 | { 7 | public class Posts_ByMonthPublished_Count : AbstractIndexCreationTask 8 | { 9 | public class ReduceResult 10 | { 11 | public int Year { get; set; } 12 | public int Month { get; set; } 13 | public int Count { get; set; } 14 | } 15 | 16 | public Posts_ByMonthPublished_Count() 17 | { 18 | Map = posts => from post in posts 19 | select new {post.PublishAt.Year, post.PublishAt.Month, Count = 1}; 20 | Reduce = results => from result in results 21 | group result by new {result.Year, result.Month} 22 | into g 23 | select new {g.Key.Year, g.Key.Month, Count = g.Sum(x => x.Count)}; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/Indexes/Posts_ByTag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using RaccoonBlog.Web.Models; 4 | using Raven.Client.Documents.Indexes; 5 | 6 | namespace RaccoonBlog.Web.Infrastructure.Indexes 7 | { 8 | public class Posts_ByTag : AbstractIndexCreationTask 9 | { 10 | public class Query 11 | { 12 | public string Id { get; set; } 13 | 14 | public string Title { get; set; } 15 | 16 | public string[] Tags { get; set; } 17 | 18 | public DateTimeOffset PublishAt { get; set; } 19 | } 20 | 21 | public Posts_ByTag() 22 | { 23 | Map = posts => from post in posts 24 | where post.PublishAt != null 25 | select new 26 | { 27 | Tags = post.Tags, 28 | PublishAt = post.PublishAt, 29 | }; 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/Indexes/Statistics_Count.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using RaccoonBlog.Web.Models; 3 | using Raven.Client.Documents.Indexes; 4 | 5 | namespace RaccoonBlog.Web.Infrastructure.Indexes 6 | { 7 | public class Posts_Statistics : AbstractIndexCreationTask 8 | { 9 | public class ReduceResult 10 | { 11 | public int PostsCount { get; set; } 12 | public int CommentsCount { get; set; } 13 | } 14 | 15 | public Posts_Statistics() 16 | { 17 | Map = postComments => from postComment in postComments 18 | select new { PostsCount = 1, CommentsCount = postComment.Comments.Count }; 19 | 20 | Reduce = results => from result in results 21 | group result by "constant" into g 22 | select new 23 | { 24 | PostsCount = g.Sum(x => x.PostsCount), 25 | CommentsCount = g.Sum(x => x.CommentsCount) 26 | }; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Infrastructure/Jobs/SocialNetworkIntegrationJobsRegistry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using FluentScheduler; 3 | 4 | namespace RaccoonBlog.Web.Infrastructure.Jobs 5 | { 6 | public class SocialNetworkIntegrationJobsRegistry : Registry 7 | { 8 | public SocialNetworkIntegrationJobsRegistry() 9 | { 10 | Schedule() 11 | .WithName("RedditIntegration") 12 | .NonReentrant() 13 | .ToRunEvery(5) 14 | .Minutes(); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Models/BlackList.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Models 2 | { 3 | public class BlackList 4 | { 5 | public static string GetId(string ipAddress) 6 | { 7 | return "BlackList/" + ipAddress; 8 | } 9 | 10 | public static BlackList New(string ipAddress) 11 | { 12 | var id = GetId(ipAddress); 13 | 14 | return new BlackList 15 | { 16 | Id = id 17 | }; 18 | } 19 | 20 | public string Id { get; set; } 21 | } 22 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Models/Commenter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RaccoonBlog.Web.Models 4 | { 5 | public class Commenter 6 | { 7 | public string Id { get; set; } 8 | public Guid Key { get; set; } 9 | public bool? IsTrustedCommenter { get; set; } 10 | 11 | public string Name { get; set; } 12 | public string Email { get; set; } 13 | public string Url { get; set; } 14 | 15 | public string OpenId { get; set; } 16 | 17 | public int NumberOfSpamComments { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Models/Configs.cs: -------------------------------------------------------------------------------- 1 | namespace HibernatingRhinos.Loci.Common.Models 2 | { 3 | public class Configs 4 | { 5 | public class ArrayContainer { public T[] Items { get; set; } } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Models/DynamicContent.cs: -------------------------------------------------------------------------------- 1 | namespace HibernatingRhinos.Loci.Common.Models 2 | { 3 | public enum DynamicContentType 4 | { 5 | Markdown, 6 | Html, 7 | Video, 8 | HttpRedirection, 9 | } 10 | 11 | public interface IDynamicContent 12 | { 13 | string Body { get; set; } 14 | DynamicContentType ContentType { get; set; } 15 | } 16 | 17 | public interface ISearchable 18 | { 19 | string Slug { get; set; } 20 | string Title { get; set; } 21 | string Content { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Models/Model.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | 3 | namespace RaccoonBlog.Web.Models 4 | { 5 | public class Model 6 | { 7 | [HiddenInput] 8 | public string Id { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Models/SocialNetworkIntegration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Web; 4 | using RaccoonBlog.Web.Models.SocialNetwork; 5 | 6 | namespace RaccoonBlog.Web.Models 7 | { 8 | public class SocialNetworkIntegration 9 | { 10 | public Reddit Reddit { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/NLog.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Properties/PublishProfiles/blog.ayende.com.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | FileSystem 9 | 10 | C:\Work\publish\ayende.com 11 | True 12 | 13 | 14 | False 15 | 16 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Properties/PublishProfiles/blog.hibernatingrhinos.com.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | FileSystem 9 | Release 10 | Any CPU 11 | 12 | False 13 | C:\Work\Deployment\blog.hiernatingrhinos.com 14 | True 15 | 16 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Properties/PublishProfiles/oreneini.com.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | FileSystem 9 | Release 10 | Any CPU 11 | 12 | False 13 | C:\Work\Deployment\oreneini.com 14 | True 15 | 16 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/MetaWeblogAPI.ashx: -------------------------------------------------------------------------------- 1 | <%@ WebHandler Language="C#" Class="RaccoonBlog.Web.Services.MetaWeblog" %> 2 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/Reddit/Credentials.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Services.Reddit 2 | { 3 | public class Credentials 4 | { 5 | public string User { get; set; } 6 | 7 | public string Password { get; set; } 8 | 9 | public bool IsValid => string.IsNullOrWhiteSpace(User) == false && 10 | string.IsNullOrWhiteSpace(Password) == false; 11 | } 12 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/Reddit/FailingCaptchaSolver.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using RedditSharp; 6 | 7 | namespace RaccoonBlog.Web.Services.Reddit 8 | { 9 | public class FailingCaptchaSolver : ICaptchaSolver 10 | { 11 | public CaptchaResponse HandleCaptcha(Captcha captcha) 12 | { 13 | return new CaptchaResponse(); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/Reddit/LinkPost.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace RaccoonBlog.Web.Services.Reddit 7 | { 8 | public class LinkPost 9 | { 10 | public string Subreddit { get; set; } 11 | 12 | public string Title { get; set; } 13 | 14 | public string Url { get; set; } 15 | } 16 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/BlogInfo.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Services.RssModels 2 | { 3 | #region Structs 4 | 5 | public struct BlogInfo 6 | { 7 | public string blogid; 8 | public string url; 9 | public string blogName; 10 | } 11 | 12 | #endregion 13 | } 14 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/Category.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Services.RssModels 2 | { 3 | public struct Category 4 | { 5 | public string categoryId; 6 | public string categoryName; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/CategoryInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RaccoonBlog.Web.Services.RssModels 4 | { 5 | [Serializable] 6 | public struct CategoryInfo 7 | { 8 | public string description; 9 | public string htmlUrl; 10 | public string rssUrl; 11 | public string title; 12 | public string categoryid; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/Enclosure.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace RaccoonBlog.Web.Services.RssModels 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public struct Enclosure 7 | { 8 | public int length; 9 | public string type; 10 | public string url; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/MediaObject.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace RaccoonBlog.Web.Services.RssModels 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public struct MediaObject 7 | { 8 | public string name; 9 | public string type; 10 | public byte[] bits; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/MediaObjectInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RaccoonBlog.Web.Services.RssModels 4 | { 5 | [Serializable] 6 | public struct MediaObjectInfo 7 | { 8 | public string url; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/Post.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using CookComputing.XmlRpc; 3 | 4 | namespace RaccoonBlog.Web.Services.RssModels 5 | { 6 | [XmlRpcMissingMapping(MappingAction.Ignore)] 7 | public struct Post 8 | { 9 | public DateTime? dateCreated; 10 | public string description; 11 | public string title; 12 | public string[] categories; 13 | public string permalink; 14 | public object postid; 15 | public string userid; 16 | public string wp_slug; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/Source.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace RaccoonBlog.Web.Services.RssModels 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public struct Source 7 | { 8 | public string name; 9 | public string url; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/UserInfo.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Services.RssModels 2 | { 3 | public struct UserInfo 4 | { 5 | public string userid; 6 | public string firstname; 7 | public string lastname; 8 | public string nickname; 9 | public string email; 10 | public string url; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Services/RssModels/WordpressCategory.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.Services.RssModels 2 | { 3 | public struct WordpressCategory 4 | { 5 | public string name; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Startup.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Owin; 2 | 3 | using Owin; 4 | 5 | using RaccoonBlog.Web; 6 | using RaccoonBlog.Web.Infrastructure; 7 | 8 | [assembly: OwinStartup(typeof(Startup))] 9 | namespace RaccoonBlog.Web 10 | { 11 | public partial class Startup 12 | { 13 | public void Configuration(IAppBuilder app) 14 | { 15 | app.UseForwardedHeaders(); 16 | ConfigureAuth(app); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/CommentInput.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.Web.Mvc; 4 | using DataAnnotationsExtensions; 5 | 6 | namespace RaccoonBlog.Web.ViewModels 7 | { 8 | public class CommentInput 9 | { 10 | [Required(ErrorMessage = "Name is required")] 11 | [Display(Name = "Name")] 12 | public string Name { get; set; } 13 | 14 | [Required(ErrorMessage = "Email is required")] 15 | [Display(Name = "Email")] 16 | [Email(ErrorMessage = "Email is invalid")] 17 | public string Email { get; set; } 18 | 19 | [Display(Name = "Url")] 20 | public string Url { get; set; } 21 | 22 | [AllowHtml] 23 | [Required(ErrorMessage = "Comment is required")] 24 | [Display(Name = "Comments")] 25 | [DataType(DataType.MultilineText)] 26 | public string Body { get; set; } 27 | 28 | [HiddenInput] 29 | public Guid? CommenterKey { get; set; } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/CurrentUserViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.ViewModels 2 | { 3 | public class CurrentUserViewModel 4 | { 5 | public string FullName { get; set; } 6 | 7 | public bool IsAuthenticated() 8 | { 9 | return string.IsNullOrEmpty(FullName) == false; 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/NewCommentEmailViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web.Mvc; 3 | 4 | namespace RaccoonBlog.Web.ViewModels 5 | { 6 | public class NewCommentEmailViewModel 7 | { 8 | public int Id { get; set; } 9 | public string Author { get; set; } 10 | public string Url { get; set; } 11 | public string Email { get; set; } 12 | public DateTimeOffset CreatedAt { get; set; } 13 | public MvcHtmlString Body { get; set; } 14 | public bool IsSpam { get; set; } 15 | 16 | public string PostId { get; set; } 17 | public string PostTitle { get; set; } 18 | public string PostSlug { get; set; } 19 | public string BlogName { get; set; } 20 | public string Key { get; set; } 21 | public string CommenterId { get; set; } 22 | public string IpAddress { get; set; } 23 | public string UserAgent { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/PostReference.cs: -------------------------------------------------------------------------------- 1 | using RaccoonBlog.Web.Infrastructure.AutoMapper.Profiles.Resolvers; 2 | using RaccoonBlog.Web.Infrastructure.Common; 3 | using RaccoonBlog.Web.Models; 4 | 5 | namespace RaccoonBlog.Web.ViewModels 6 | { 7 | public class PostReference 8 | { 9 | // if Id is: posts/1024-A, than domainId will be: 1024-A 10 | public string Id { get; set; } 11 | public string Title { get; set; } 12 | 13 | private string _domainId; 14 | public string DomainId 15 | { 16 | get 17 | { 18 | if (_domainId == null) 19 | _domainId = Post.GetIdForUrl(Id); 20 | return _domainId; 21 | } 22 | } 23 | 24 | private string slug; 25 | public string Slug 26 | { 27 | get { return slug ?? (slug = SlugConverter.TitleToSlug(Title)); } 28 | set { slug = value; } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/PostSummaryJson.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.ViewModels 2 | { 3 | public class PostSummaryJson 4 | { 5 | public string Id { get; set; } 6 | public string Title { get; set; } 7 | public string Start { get; set; } 8 | public string Url { get; set; } 9 | public bool AllDay { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/PostsSeriesViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.ViewModels 2 | { 3 | using RaccoonBlog.Web.Infrastructure.Indexes; 4 | 5 | public class RecentSeriesViewModel 6 | { 7 | public string SeriesId { get; set; } 8 | public string SeriesSlug { get; set; } 9 | public string SeriesTitle { get; set; } 10 | public int PostsCount { get; set; } 11 | public Posts_Series.PostInformation PostInformation { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/PostsStatisticsViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.ViewModels 2 | { 3 | public class PostsStatisticsViewModel 4 | { 5 | public int PostsCount { get; set; } 6 | public int CommentsCount { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/RecentCommentViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace RaccoonBlog.Web.ViewModels 2 | { 3 | public class RecentCommentViewModel 4 | { 5 | public string CommentId { get; set; } 6 | public string ShortBody { get; set; } 7 | public string Author { get; set; } 8 | public string PostTitle { get; set; } 9 | public string PostId { get; set; } 10 | public string PostSlug { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/RedditSubmissionFailedViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using RaccoonBlog.Web.Models; 6 | using RaccoonBlog.Web.Models.SocialNetwork; 7 | 8 | namespace RaccoonBlog.Web.ViewModels 9 | { 10 | public class RedditSubmissionFailedViewModel 11 | { 12 | public Post Post { get; set; } 13 | 14 | public Reddit.PostSubmission Submission { get; set; } 15 | } 16 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/SectionDetails.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | 3 | namespace RaccoonBlog.Web.ViewModels 4 | { 5 | public class SectionDetails 6 | { 7 | public string Title { get; set; } 8 | 9 | public MvcHtmlString Body { get; set; } 10 | public string ControllerName { get; set; } 11 | public string ActionName { get; set; } 12 | 13 | public bool IsActionSection() 14 | { 15 | return MvcHtmlString.IsNullOrEmpty(Body); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/TagDetails.cs: -------------------------------------------------------------------------------- 1 | using RaccoonBlog.Web.Infrastructure.Common; 2 | 3 | namespace RaccoonBlog.Web.ViewModels 4 | { 5 | public class TagDetails 6 | { 7 | public string Name { get; set; } 8 | 9 | private string _slug; 10 | public string Slug 11 | { 12 | get { return _slug ?? (_slug = SlugConverter.TitleToSlug(Name)); } 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/TagsListViewModel.cs: -------------------------------------------------------------------------------- 1 | using RaccoonBlog.Web.Infrastructure.Common; 2 | 3 | namespace RaccoonBlog.Web.ViewModels 4 | { 5 | public class TagsListViewModel 6 | { 7 | public string Name { get; set; } 8 | 9 | private string _slug; 10 | public string Slug 11 | { 12 | get { return _slug ?? (_slug = SlugConverter.TitleToSlug(Name)); } 13 | } 14 | 15 | public int Count { get; set; } 16 | } 17 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/ViewModels/UserSummeryViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace RaccoonBlog.Web.ViewModels 4 | { 5 | public class UserSummeryViewModel 6 | { 7 | public string Id { get; set; } 8 | 9 | [Display(Name = "Full Name")] 10 | public string FullName { get; set; } 11 | 12 | [Display(Name = "Email")] 13 | public string Email { get; set; } 14 | 15 | [Display(Name = "Phone")] 16 | public string Phone { get; set; } 17 | 18 | [Display(Name = "Enabled?")] 19 | public bool Enabled { get; set; } 20 | 21 | [Display(Name = "Twitter Nick")] 22 | public string TwitterNick { get; set; } 23 | 24 | [Display(Name = "Related Twitter Nick", Prompt = "This is a nick of someone that you would want to recommend the user to follow.")] 25 | public string RelatedTwitterNick { get; set; } 26 | } 27 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/MailTemplates/RedditSubmissionFailed.cshtml: -------------------------------------------------------------------------------- 1 | @model RedditSubmissionFailedViewModel 2 |

3 | Reddit post submission to /r/@Model.Submission.Subreddit failed for post "@Model.Post.Title" 4 |

5 |

6 | Current submission status: @Model.Submission.Status
7 | Attempt#: @Model.Submission.Attempts
8 | 9 | 10 | Manage Reddit submissions 11 | 12 |

13 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/MailTemplates/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @RenderBody() 5 | 6 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/MailTemplates/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/MailTemplates/_Layout.cshtml"; 3 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Search/SearchResult.cshtml: -------------------------------------------------------------------------------- 1 | @model string 2 | @{ 3 | ViewBag.Title = "search"; 4 | } 5 | 6 | 7 | 8 | 9 | @section Script { 10 | 21 | } 22 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Section/AdministrationPanel.cshtml: -------------------------------------------------------------------------------- 1 | @model CurrentUserViewModel 2 | @{ 3 | Layout = ""; 4 | } 5 | @if (Model.IsAuthenticated()) 6 | { 7 |
8 |

ADMINISTRATION PANEL

9 |

Welcome @Model.FullName!

10 |
    11 |
  1. Posts
  2. 12 |
  3. Section
  4. 13 |
  5. Users
  6. 14 |
  7. Settings
  8. 15 |
  9. Log out
  10. 16 |
17 |
18 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Section/ArchivesList.cshtml: -------------------------------------------------------------------------------- 1 | @model IList 2 | @{ 3 | Layout = ""; 4 | } 5 | 25 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Section/FuturePosts.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Globalization 2 | @model FuturePostsViewModel 3 | @{ 4 | Layout = ""; 5 | } 6 |
7 |

@ViewBag.SectionTitle.ToUpper()

8 | @if (Model.Posts.Count > 0) 9 | { 10 |
    11 | @foreach (var futurePost in Model.Posts) 12 | { 13 |
  1. @futurePost.Title - @futurePost.Time
  2. 14 | } 15 |
16 | 17 | if (Model.TotalCount > Model.Posts.Count) 18 | { 19 |

And @(Model.TotalCount - Model.Posts.Count) more posts are pending...

20 | } 21 | if (Model.LastPostDate != null) 22 | { 23 |

There are posts all the way to @Model.LastPostDate.Value.ToString("MMM dd, yyyy", CultureInfo.InvariantCulture)

24 | } 25 | } 26 | else 27 | { 28 |

No future posts left, oh my!

29 | } 30 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Section/List.cshtml: -------------------------------------------------------------------------------- 1 | @model IList 2 | @{ 3 | Layout = ""; 4 | } 5 | 6 | @foreach (var section in Model) 7 | { 8 | if (section.IsActionSection()) 9 | { 10 | Html.RenderAction(section.ActionName, section.ControllerName, new { sectionTitle = section.Title }); 11 | } 12 | else 13 | { 14 |
15 |

@(section.Title)

16 | @(section.Body) 17 |
18 | } 19 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Section/PostsStatistics.cshtml: -------------------------------------------------------------------------------- 1 | @model PostsStatisticsViewModel 2 | @{ 3 | Layout = ""; 4 | } 5 |
6 |
7 | Posts: @Model.PostsCount.ToString("0,0") 8 |
9 | | 10 |
11 | Comments: @Model.CommentsCount.ToString("0,0") 12 |
13 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Section/RecentComments.cshtml: -------------------------------------------------------------------------------- 1 | @model IList 2 | @{ 3 | Layout = ""; 4 | } 5 |
6 |

@ViewBag.SectionTitle.ToUpper()

7 |
    8 | @foreach (var comment in Model) 9 | { 10 | var postUrl = Url.Action("Details", "PostDetails", new { Id = comment.PostId, Slug = comment.PostSlug }); 11 | 12 |
  • 13 | 18 |
    19 | By @comment.Author on @Html.Raw(@comment.PostTitle) 20 |
    21 |
  • 22 | } 23 |
24 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Section/TagsList.cshtml: -------------------------------------------------------------------------------- 1 | @model IList 2 | @{ 3 | Layout = ""; 4 | } 5 | 18 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Shared/DisplayTemplates/HiddenInput.cshtml: -------------------------------------------------------------------------------- 1 | @model object 2 | @Html.Hidden("", Model) -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Shared/DisplayTemplates/String.cshtml: -------------------------------------------------------------------------------- 1 | 
2 | @ViewData.ModelMetadata.DisplayName 3 | @ViewData.TemplateInfo.FormattedModelValue 4 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Shared/EditorTemplates/EmailAddress.cshtml: -------------------------------------------------------------------------------- 1 | 
2 | 7 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Shared/EditorTemplates/HiddenInput.cshtml: -------------------------------------------------------------------------------- 1 | @model object 2 | @Html.Hidden("", Model) -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Shared/EditorTemplates/MultilineText.cshtml: -------------------------------------------------------------------------------- 1 | 
2 | 7 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Shared/EditorTemplates/Password.cshtml: -------------------------------------------------------------------------------- 1 |
2 | 7 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Shared/EditorTemplates/String.cshtml: -------------------------------------------------------------------------------- 1 | 
2 | 7 |
-------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_ErrorLayout.cshtml"; 3 | } 4 | 5 |
6 |
7 |
8 | #@ViewBag.ErrorCode 9 |
10 | 11 | Go to home page 12 |
13 |
14 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Shared/_ErrorLayout.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | @RenderBody() 18 |
19 | 20 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/Welcome/Success.cshtml: -------------------------------------------------------------------------------- 1 | @model RaccoonBlog.Web.Models.BlogConfig 2 | @{ 3 | Layout = null; 4 | } 5 | 6 | 7 | 8 | 9 | 10 | RaccoonBlog :: Success 11 | 12 | 13 |
14 |

Your blog "@MvcHtmlString.Create(Model.Title)" was created successfully

15 | 16 |

@Html.ActionLink("Go back", "Index", "Posts") to your blog, or @Html.ActionLink("start posting", "Index", "Posts") .

17 |

The default user credentials, which you are strongly encouraged to modify are:

18 |
    19 |
  • Email: @Model.OwnerEmail
  • 20 |
  • Password: raccoon
  • 21 |
22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | } -------------------------------------------------------------------------------- /RaccoonBlog.Web/Web.Debug.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/Web.Release.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/android-chrome-192x192.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/android-chrome-512x512.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/apple-touch-icon.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/compilerconfig.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "outputFile": "Content/css/error.css", 4 | "inputFile": "Content/css/error.less" 5 | } 6 | ] -------------------------------------------------------------------------------- /RaccoonBlog.Web/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/favicon-16x16.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/favicon-32x32.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/favicon.ico -------------------------------------------------------------------------------- /RaccoonBlog.Web/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/mstile-144x144.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/mstile-150x150.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/mstile-310x150.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/mstile-310x310.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/RaccoonBlog.Web/mstile-70x70.png -------------------------------------------------------------------------------- /RaccoonBlog.Web/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /RaccoonBlog.Web/wlwmanifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Yes 5 | No 6 | Yes 7 | Yes 8 | Yes 9 | No 10 | No 11 | No 12 | Yes 13 | 14 | 15 | -------------------------------------------------------------------------------- /SharedLibs/AutoMapper-unmerged/AutoMapper.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/SharedLibs/AutoMapper-unmerged/AutoMapper.dll -------------------------------------------------------------------------------- /SharedLibs/AutoMapper-unmerged/Castle.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/SharedLibs/AutoMapper-unmerged/Castle.Core.dll -------------------------------------------------------------------------------- /SharedLibs/AutoMapper-unmerged/Castle.DynamicProxy2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/SharedLibs/AutoMapper-unmerged/Castle.DynamicProxy2.dll -------------------------------------------------------------------------------- /SharedLibs/SgmlReaderDll.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayende/RaccoonBlog/ad1e916b77cb4dc59dfb7b2c0b3ef3e32b638ff4/SharedLibs/SgmlReaderDll.dll -------------------------------------------------------------------------------- /cleanup.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | powershell -NoProfile -ExecutionPolicy Bypass -Command "& '%~dp0\cleanup.ps1' %* 4 | -------------------------------------------------------------------------------- /cleanup.ps1: -------------------------------------------------------------------------------- 1 | $path = split-path -parent $MyInvocation.MyCommand.Definition 2 | $title = "Cleanup" 3 | $message = "Do you want to DELETE all uncommited files in " + $path + "?" 4 | 5 | $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", ` 6 | "Deletes all uncommited files in the folder." 7 | 8 | $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", ` 9 | "Retains all uncommited files in the folder." 10 | 11 | $options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no) 12 | 13 | $result = $host.ui.PromptForChoice($title, $message, $options, 1) 14 | 15 | switch ($result) 16 | { 17 | 0 { 18 | Get-ChildItem $path -Include bin,obj,build -Recurse -Force | Select -ExpandProperty FullName | Where {$_ -notlike '*Imports*' -and $_ -notlike '*pvc-packages*'} | Remove-Item -Force -Recurse 19 | &"C:\Program Files (x86)\Git\bin\git.exe" clean -f -x -d 20 | } 21 | 1 { return; } 22 | } -------------------------------------------------------------------------------- /normalize-crlf.ps1: -------------------------------------------------------------------------------- 1 | foreach ($ext in @("*.cs", "*.js", "*.html", "*.csproject", "*.sln")) { 2 | (dir -Recurse -Filter $ext) | foreach { 3 | $file = gc $_.FullName 4 | $file | sc $_.FullName 5 | } 6 | 7 | } -------------------------------------------------------------------------------- /packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | --------------------------------------------------------------------------------