POP Forums v10 for ASP.NET MVC 4 posted to CodePlex

Download it here!

This is the RTW source for POP Forums v10, with the mobile special sauce. It requires ASP.NET MVC 4 RTM, which you can download here. The project and solution files require Visual Studio 2010 or 2012. If you need an MVC3 version, please enjoy v9.2.1 The database has been tested and known to work on SQL Server 2008 and later, as well as Windows Azure SQL Database. The app runs great in Windows Azure Web Sites. Of course, feel free to submit bugs to the issue tracker.

See a live demo here: http://popforums.com/Forums

Read the documentation for installation and integration.

While the app will run fine on .NET 4.5, you'll need to replace the Ninject reference to the 4.5 build (go to Ninject.org to get it) and change the target framework in each project to 4.5.

Upgrading?

You can mostly just replace the files, though /Areas/PopForums/Home has been replaced by /Areas/PopForums/ForumHome. The database is unchanged from v9.2.x. If you're upgrading from v9.0.x or v9.1.x, please see the scripts included in the SQL data project.

What's new?

  • Uses a very light weight CSS and Javascript package to provide a touch-friendly interface for mobile devices.
  • Numbers are formatted (sensitive to culture) when 1,000 or higher.
  • CSS is more integration friendly, and specific to the ForumContainer element.
  • Mail delivery from queue is now parallel, so you can specify a sending interval, and the number of messages to process on each interval.
  • Background "services" refactored, and will only run with a call on app start to PopForumsActivation.StartServices(). This is partly to facilitate future use in Web farms/multiple Web roles in Azure.
  • Update to jQuery v1.7.1.
  • Replaced use of .live() with .on() in script, pursuant to jQuery update, which deprecates .live().
  • Renamed HomeController to ForumHomeController, to make lives easier when integrating into an MVC app.
  • Dependency resolution no longer requires that you set Ninject as the container for the entire MVC app. The controllers now resolve their dependencies in their constructors, so you're free to set up any DI container in your global.asax.
  • The included single-server SQL data layer now uses the base classes and interfaces for (DbConnection, DbCommand, etc.) instead of the specific SQL flavors, for easier refactoring in case you want to build an Oracle version or something.
  • FIX: Bug in topic repository around caching keys for single-server data layer.
  • FIX: Pager links on recent topics pointed to incorrect route.
  • FIX: Deleting a post didn't update last user/post time.
  • FIX: Ditched attempt at writing to event log with super failures, since almost no one has permission in production.
  • FIX: Bug in grayed-out fields in admin mail setup.
  • FIX: Weird color profiles would break loading of images for resize.
  • FIX: TOS text on account sign-up was double encoded.

Known issues

  • A potential race condition exists that could prevent the app from starting in ASP.NET v4.5. See the issue:ServiceModule has potential race condition in ASP.NET v4.5
  • There is apparently a bug in the MVC 4 framework around the internal caching of views (not output cache, but instances of the views). You can read about it here. Because you probably get fewer requests that result in mobile views, it's possible that these expire from the cache and the framework falls back to the standard views. This will break POP Forums because the mobile views have an extra section for the pullout menu. The fix is described in the issue tracker link, and it requires adding a line to your global.asax. We're waiting to see how the MVC team handles this before committing any new code.

No Comments