Connect Conference

This is the home page of the DNN Connect Conference module. This module (for DNN Platform version 8 and higher) is used to create and manage our yearly conferences. The philosophy behind the module is that the creation of a successful conference is a collaborative effort between the organizers, the speakers and the anticipated audience. With features such as public/private chat and voting we aim to involve others in creating the content the audience desires.

Video

MVC Module

This module is written using the new DNN 8 MVC module pattern. It was designed to be instantiated on any number of pages and still show the same conference. In other words the content of the module is stored "portal-wide". So you can create a page for speakers and put the module there and then create a page for attendees with this module on it and all will look at the same conference. For this the module offers 2 settings: the control to load and the conference to show. For each module you stick on a page you specify these two parameters. This will determine how the module presents itself on the page to the user.

Home screens

There are 6 screens to choose from:

Security settings

Besides the default "View" and "Edit" permissions, the module adds 3 other permissions that are used in the module:

Main Components

The module manages Conferences, Locations, Sessions, Slots, Tracks, Tags, Resources, Comments, Speakers and Attendees. This is how they relate to each other:

Conferences

This is the root object. You can have any number of conferences in a single DNN portal. You specify the start and end dates, the location, a url for more info, max capacity, whether to allow voting and which roles speakers and attendees should get once approved.

Locations

These are the conference rooms. The module was designed to cater for a maximum of 5 or 6 of these. If you add more the schedule will become very crammed as the locations are used a columns on your screen width.

Sessions

Most of the application revolves around this. The session obviously has a title, subtitle and abstract. But crucially it also has a status, ranging from "saved" to "submitted" to "accepted" and finally "wrapped up".

Slots

These are time slots that define when and how long a session will run. Slots can be confined to a single day, but the idea is to make management easier by providing you a grid into which you will drop the sessions when you start creating the schedule. Slots can be of two types: the default is the type that can receive a session. The other is when the slot is meant as a break or for some special period that is not defined as a session (e.g. lunch, opening/closing, party, etc).

Tracks

Tracks provide visitors with some guidance on where to go based on their primary interest. It's the organizers that control which track a session belongs to. And the track has a certain color that is used throughout the application so everyone can clearly see them.

Tags

Also called "Themes'. These can be added by anyone and voted upon by users. The idea is to provide some feedback to speakers and organizers what attendees are expecting to hear. The speakers then select any number of these to tag their session.

Resources

A session can contain any number of resources. These may be files (e.g. Powerpoint, Zip) or hyperlinks. Hyperlinks can be plain urls or links to Youtube or Vimeo videos. In the latter cases the module will present them embedded on screen in the session view.

Comments

Comments are straightforward non-threaded lists of messages. They are either between speakers (in case there are multiple speakers working on a single presentation), between speakers and conference managers or public.

Speakers

Speakers link a DNN user to the conference. Certain fields are kept specific for the conference: a resume/description, a url and a company name. If a user re-registers for another conference as speaker they'd have to fill this out again. But this ensures that these fields (that may change over time) remain static for the conference. The edit screen for the speaker facilitates the uploading of a photo and cropping it easily.

Attendees

Attendees manage the status of a DNN user vis-a-vis the conference. This starts with "intends to go", proceeds to "going" then to "confirmed" and finally "attended". Only the conference managers control the latter statuses and are meant to help plan attendee numbers.

Special Features

MVC

This module aims to show how an MVC module can be built for DNN Platform. Settings and security are grouped together in a single object that is present in the MVC controllers, the WebAPI controllers and in teh Razor views. The custom security attribute allows the application to shield itself well at the MVC/WebAPI controller level. Multiple techniques had to be developed for this pattern to allow for a solid architecture for a larger DNN module built on this framework.

React JS

A number of more complex front-end components were developed in React JS. The comment list for instance and the tag selector were built this way. The most complex component is undoubtedly the drag n drop scheduler where the user can drag and drop sessions around to fill the schedule. It generates SVG through React.

Built with Gulp

Gulp is used as a task runner to build and package the module. Note you'll need to use NPM and Bower to ensure you have all components in your local installation.

Datalayer repository pattern

The Visual Studio solution has two projects. The "core" project contains the model and data access layer. You'll find the latest patterns for data access used in DNN development here.