A few years ago, I built a CMS for Dallas Theological Seminary that has served us pretty well. It has some features we really wanted, but to get them I had to hack up the ASP.NET 2.0 page life cycle to get it to work. With ASP.NET 4.0, a lot of what I did is much easier and can be done “normally” instead of with things that felt like hacks.
Project Requirements
Different projects require different kinds of CMS packages, but here were my requirements:
- Extensionless URLs (no .aspx on the end of URLs) – this was harder in ASP.NET 2.0, but in ASP.NET 4.0 especially on IIS7 this is much easier.
- Normal Masterpages – I don’t want a special, proprietary template engine. I just want to use normal ASP.NET features so that people can work on the site without learning an new language and use Visual Studio if they want.
- WebForms and *.ascx Controls – I love using MVC on certain projects, but for a site with lots of pages (DTS has around 1000 pages), I need to be able to use simple *.ascx controls. We have lots of pages with various repeaters and forms to fill out and using MVC controllers for each it too much to maintain. Personally I like <script runat=”server”> rather than codebehind or codebeside so we can keep a site agile.
- Not require <form runat=”server”> – A lot of pages with plain HTML or just a <asp:repeater> don’t need viewstate, so there is no need to have ASP.NET form on every page. The CMS is smart enough to wrap content in <form runat=”server”> if needed, but not otherwise.
- No takeover – The CMS can’t take over the entire site and not allow other normal ASP.NET functionality like pages (*.aspx) and handlers (*.ashx).
- In page editing – This isn’t really a requirement, but I like being able to edit a page in place rather than have to go to a separate admin area.
Click “edit” and then you go to:
- Page versioning – Of course we need to be able to rollback to a previous version. Nothing too complex, just a list of revisions with dates.
- XML or SQL – A nice CMS shouldn’t have to use SQL for a 10 pages site. For now, XML is the default.
- Permissions – We don’t need a complex workflow, but we need to be able to specify a role for super admin and a role for users who can be assigned edit access to special pages. It needs to work with ASP.NET Membership and Roles.
- Redirects – A small feature, but we use a lot of vanity URLs in print advertisements that need to go somewhere else (www.dts.edu/thm -> www.dts.edu/admissions/degrees/thm)
- Complex URL handling – I also want to be able to create a page that has wildcard handling for all sub pages. For example, I want a page that lists a faculty (www.dts.edu/about/faculty) but can also handle and sub pages and show an individual faculty member (www.dts.edu/about/faculty/dbock). This also allows things like blogs or forums if someone wanted to make those.
Download Purple CMS 0.1
I’ve put up a very rough demo you can try out. The permissions, redirects, and “complex URL handling” are not yet finished in this build, but the main ability to use masterpages, controls, and edit pages with HTML is in the demo. It looks just like the default ASP.NET site and allows you to login and edit pages.
To use it, you’ll need Visual Studio .NET 2010 RC and .NET 4.0 RC. Just unzip the file, run the solution, and hit “Debug” or point your local IIS to the website folder and select “ASP.NET 4.0” it’s Application Pool.
Let me know what you think.
Hey JD,
Puple CMS looks cool, but….
I’m hoping you can help guide me. Since I’m a mac guy and I stay away from the evil microsoft empire :o), Would you happen to know of anyone who may be working on a CMS like Youversion that I can use 2 socialize scriptures. Think YouVersion meets UrbanDictionary.com. I’ll use ASP if I have to, but I’d much rather use PHP since I’m not really a programmer and have kinda learned my way around it a little bit out of necessity… and I keep all of my pages on a linux server.
Thanks in advance…
Chris, I don’t know of any packages like that. Sounds like fun though!
Hope this information will benefit many people.