Giter Club home page Giter Club logo

dasblog-core's Introduction

DasBlog

FAQ | Deployment | Blog | Contributing to DasBlog

Latest release Windows Build status Linux Build status

DasBlog

One of the primary goals of this project is to create a new blogging engine that preserves the essence of the original DasBlog Blogging Engine, we also get the opportunity to take advantage of the modern cross platform goodness of ASP.NET Core.

Building

If you want to build and contribute code to DasBlog please fork this repo and submit a PR, check out the contribution docs here for more details.

Deployment

You can deploy anywhere where .NET Core is hosted.

Easiest Way: Click The Deploy To Azure Button

Click the button below, answer some questions, and be up and running on your DasBlog instance in a few minutes. Once you've deployed, be sure to read the post-deployment instructions here.

Deploy to Azure

Deploying Manually

After deploying the app you should immediately update the security settings.

Documentation

Check out the wiki for additional information on DasBlog fundamentals, architecture and themes.

Please submit an issue if you encounter any problems.

dasblog-core's People

Contributors

barzin144 avatar bkort avatar bradwyoung avatar brandonrdnt avatar brian-bagley avatar chillryan avatar clemensv avatar dsmeltz avatar lodenrogue avatar manzanotti avatar mikedamay avatar noopman avatar paulk-k2dev avatar phatcher avatar poppastring avatar rajivpopatwork avatar rostacik avatar rullyrmd avatar rumdood avatar shanselman avatar simoncropp avatar simplyged avatar spboyer avatar thousandtyone avatar tsdamas avatar wireduk avatar zukomgwili avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dasblog-core's Issues

UI for deleting a post

Currently deleting a post can only be done by navigating to the URL. It should be done via some UI button e.g. a button with confirmation.

Site Description - TagHelper

A TagHelper that pulls the blog description from the site configuration file. The TagHelper should be useable from any page and would be in the following format (can use dependency injection to get info from ISitConfig.cs:

<sitedescription></sitedescription>

Which would produce an output like this:

Site Description

TagHelpers should be created in the DasBlog.Web.UI project under the TagHelpers folder, I have a blog post on authoring TagHelpers here. Find out about why we use TagHelpers here, and specific steps on authoring TagHelpers can be found here.

Please note that these tasks are for code newbies who are looking to make contributions to supportive open source project using ASP.NET Core MVC. Please feel free to reach out to me on twitter and I will be happy to help walk you through this.

Consider refactoring author in the PostViewModel

Issue #9 brought up a point that it is not obvious where meta data like twitter account can be found.

Potentially the PostViewModel could be expanded to contain meta data directly.

An advantage would be that the view would have direct access to this data via the model.

The current method of using dependency injection to get access to the data (IDasBlogSettings.IMetaTags) is a workable solution, but expanding the model could have benefits as well.

A concern for making this change is that it would affect users on the legacy dasblog from upgrading. The current mechanism would need to make changes to the security file.

Refine and document how "Themes" works

  • Ensure the list of shared partial views are in a shared location (any theme can use it)
  • Document the list of shared views
  • Document the list of partial views to be used

Create a Unit Test project

This is bad I mean really bad ... each contribution should have a minimum of one unit test so we are off to a slow start here.

Post Twitter share link - TagHelper

A TagHelper that shares a Tweet for a blog post. The TagHelper would be exclusively for the _PostPartial.cshtml and would be in the following format:

<posttweet post=@Model>Twitter</posttweet>

Which would produce an output like this:

<a href="https://twitter.com/intent/tweet?url=https%3a%2f%2fwww.baseurl.com%2fblog%2fsomepost&amp;text=Some+blog+post%3f &amp;via=poppastring+%23musings" class="">Twitter</a>

TagHelpers should be created in the DasBlog.Web project under the TagHelpers folder, I have a blog post on authoring TagHelpers here. Find out about why we use TagHelpers here, and specific steps on authoring TagHelpers can be found here.

Please note that these tasks are for code newbies who are looking to make contributions to supportive open source project using ASP.NET Core MVC. Please feel free to reach out to me on twitter and I will be happy to help walk you through this.

Change project names to remove redundancy

DasBlog.Web.UI -> DasBlog.Web
DasBlog.Web.Repositories -> DasBlog.Manager (this is really a manager rather than repository pattern)
DasBlog.Web.Core -> DasBlog.Core

UI for Archive view

Route:

  • /archive/
  • /archive/year
  • /archive/year/month
  • /archive/year/month/day

This will be sent to the Archive controller here which has been stubbed out and does indeed call the correct repository for the data required.

Views/ViewModels need to be created to support this enhancement.

Page layout should approximate the following:

[no html tables please]

No way to view unpublished posts

After logging in you should be able to view unpublished posts so that you can continue editing and or publish. The current view of the home page only includes published posts.

Post comment link - TagHelper

We need a TagHelper that shows an comment link for a given blog post. The TagHelper would be exclusively for the _PostPartial.cshtml and would be in the following format:

<postcomment post=@Model>Comment on this post</postcomment>

Which would produce an output like this:

<a href="//www.baseurl.com/blog/somepost/comment">Comment on this post</a>

TagHelpers should be created in the DasBlog.Web.UI project under the TagHelpers folder, I have a blog post on authoring TagHelpers here. Find out about why we use TagHelpers here, and specific steps on authoring TagHelpers can be found here.

Please note that these tasks are for code newbies who are looking to make contributions to supportive open source project using ASP.NET Core MVC. Please feel free to reach out to me on twitter and I will be happy to help walk you through this.

Contributors Guidelines Missing

I am interested to make contributions, however, not sure about sending PR and Unit Tests and preliminary checks need to be done. For most of the open source projects, there is a contributors guideline exists in repo.

I am happy to send PR with basic guidelines written for the same. However, as an owner of the repo, you can suggest what needs to be included and I can send PR for the same.

PS: Also, realized maybe issue template might also be helpful for the repo.

Create an Admin page

At minimum we should be able to update the existing admin

  • change email, displayname, password and username

[There are problems to solve around serialization/deserialization in .net core i.e. reading two records from an xml file]

XML style docs on properties

IDasBlogSettings.MetaTags has a lot of info. The naming is not completely unambiguous.

I think documenting the purpose of each setting would add useful info to future contributors.

Applying consistent code styles

Not interested in breaking the build because of style issues so we can use the editorConfig project for code consistency.

Remove redundant projects from the solution

Remove the following from the solution (do not remove files/folders):-

  • newtelligence.DasBlog.Runtime.Test (to be move to DasBlog.Tests)
  • newtelligence.DasBlog.Runtime.Proxies
  • newtelligence.DasBlog.Util.Test (to be move to DasBlog.Tests)
  • newtelligence.DasBlog.Web
  • Subtext.Akismet
  • WebControlCaptcha
  • Lesnikowski.Pawel.Mail.Pop3

This may require moving some fundamental types to DasBlog.Core or a new project all together.

Post Facebook share link - TagHelper

A TagHelper that shares blog post via Facebook. The TagHelper would be exclusively for the _PostPartial.cshtml and would be in the following format:

<posttofacebook post=@Model>Facebook</posttofacebook>

Which would produce an output like this:

<a href="https://facebook.com/sharer.php?u=https://www.baseurl.com/blog/somepost" class="">Facebook</a>

TagHelpers should be created in the DasBlog.Web.UI project under the TagHelpers folder, I have a blog post on authoring TagHelpers here. Find out about why we use TagHelpers here, and specific steps on authoring TagHelpers can be found here.

Please note that these tasks are for code newbies who are looking to make contributions to supportive open source project using ASP.NET Core MVC. Please feel free to reach out to me on twitter and I will be happy to help walk you through this.

Login page

Create a single login page to allow admin functions like approve/delete comments

Fixing the Permalink

The PostViewModel.PermaLink is being hacked together (in the HomeController) to produce a link for each blog post. The actual solution should pull the format for the permanent links for each page based on the following:

  • Compress the title (see SiteUtilities.GetPermaLinkUrl() ), this should probably exist in as IDasBlogSettings.
  • Spaces replaced by TitlePermalinkSpaceReplacement (from site.config). For example "This Is a Title!" should be come "this+is+a+title" or "this-is-a-title".

Remove items and folders from wwwroot

By convention we should only have files in the wwwroot folder that we intend to serve directly (js, css, html, etc).
We should move

  • config
  • contents
  • logs

These folders and their contents can be kept in the project and marked for distribution.

Site Title - TagHelper

A TagHelper that pulls the blog title from the site configuration file. The TagHelper should be useable from any page and would be in the following format (can use dependency injection to get info from ISitConfig.cs:

<sitetitle></sitetitle>

Which would produce an output like this:

Site Name

TagHelpers should be created in the DasBlog.Web.UI project under the TagHelpers folder, I have a blog post on authoring TagHelpers here. Find out about why we use TagHelpers here, and specific steps on authoring TagHelpers can be found here.

Please note that these tasks are for code newbies who are looking to make contributions to supportive open source project using ASP.NET Core MVC. Please feel free to reach out to me on twitter and I will be happy to help walk you through this.

Post edit button - TagHelper

We need a TagHelper that shows an edit link for a given blog post. The TagHelper would be exclusively for the _PostPartial.cshtml and would be in the following format:

<postedit post=@Model>Edit this post</postedit>

Which would produce an output like this:

<a href="//www.baseurl.com/blog/somepost/edit">Edit this post</a>

TagHelpers should be created in the DasBlog.Web.UI project under the TagHelpers folder, I have a blog post on authoring TagHelpers here. Find out about why we use TagHelpers here, and specific steps on authoring TagHelpers can be found here.

Please note that these tasks are for code newbies who are looking to make contributions to supportive open source project using ASP.NET Core MVC. Please feel free to reach out to me on twitter and I will be happy to help walk you through this.

Support for XML-RPC based publishing

The original version of DasBlog implemented the following APIs for creating, updating and deleting posts:-
- Blogger
- MetaWeblog
- Moveable Type

We need to replicate that in this version also, the metadata of what is supported will be retrievable from /feed/rsd (See the Feed Controller).

In the traditional version of DasBlog the equivalent the url (/blogger.aspx, new version is /blogger) has both a GET and POST, the GET simply shows a HTML page (see here). A POST at the same URL will attempt to exercise one of the three available blogging APIs.

The original DasBlog Blogger API code that needs to be converted to Controller can be found here.

We can start with Moveable Type (as default).

Change "category" links pattern

Old way:
ASP.NET Core => /CategoryView,category,ASPNETCore.aspx
Development Process => /CategoryView,category,DevelopmentProcess.aspx

Update as follows:
ASP.NET Core => /category/aspnet-core
Development Process => /category/development-process

Site Subtitle - TagHelper

A TagHelper that pulls the blog sub title from the site configuration file. The TagHelper should be useable from any page and would be in the following format (can use dependency injection to get info from ISitConfig.cs:

<sitesubtitle></sitesubtitle>

Which would produce an output like this:

Site sub title

TagHelpers should be created in the DasBlog.Web.UI project under the TagHelpers folder, I have a blog post on authoring TagHelpers here. Find out about why we use TagHelpers here, and specific steps on authoring TagHelpers can be found here.

Please note that these tasks are for code newbies who are looking to make contributions to supportive open source project using ASP.NET Core MVC. Please feel free to reach out to me on twitter and I will be happy to help walk you through this.

Comments support in the UI

Need to tie into the comments API

  • Add comment (based on post, and global comment permission, comment date)
  • Delete comment (admin function)
  • Approve comment (admin function)

Daily email summary

In dasBlog's former life we would get an email summary of the activity. We should ressurect this feature.

If there is an easy to use nuget package that would be fine too. Would like to consider using MimeKit

[Removed existing comments as I have changed the approach]

Post date created - TagHelper

We need a TagHelper that makes it easier to insert the created date of a post in the format selected. The TagHelper would be exclusively for the _PostPartial.cshtml and would be in the following format:
<postcreated post=@Model>MMMM dd, yyyy</postcreated>

Which would produce the following output (based on MMMM dd, yyyy):
June 18, 2017

TagHelpers should be created in the DasBlog.Web.UI project under the TagHelpers folder, I have a blog post on authoring TagHelpers here. Find out about why we use TagHelpers here, and specific steps on authoring TagHelpers can be found here.

Please note that these tasks are for code newbies who are looking to make contributions to supportive open source project using ASP.NET Core MVC. Please feel free to reach out to me on twitter and I will be happy to help walk you through this.

Comments support API

Allow comments on posts based on the permitted expiry contain in Site.Config (DaysCommentsAllowed).

Should also include a method for deleting and approving as admin.

Post category links - TagHelper

We need a TagHelper that shows the categories associated for a given blog post. The TagHelper would be exclusively for the _PostPartial.cshtml and would be in the following format:

<postcategory post=@Model>Tagged in: </postcategory>

Which would produce an output like this:

Tagged in: <a href="//www.baseurl.com/blog/category/musing">Musing</a>

TagHelpers should be created in the DasBlog.Web.UI project under the TagHelpers folder, I have a blog post on authoring TagHelpers here. Find out about why we use TagHelpers here, and specific steps on authoring TagHelpers can be found here.

Please note that these tasks are for code newbies who are looking to make contributions to supportive open source project using ASP.NET Core MVC. Please feel free to reach out to me on twitter and I will be happy to help walk you through this.

Remove register links

Currently exists here:
/Account/Login

Not planning to open up the blog to general registration. The UI for registration should be an admin function only.

Support for LiveWriter

Move the implementation of XmlRpcService (MoveableType.IMovableType, Blogger.IBlogger, MetaWeblog.IMetaWeblog) to a new manager that inherits from BlogManager.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.