This is a solution that houses most of the DNN extensions that I manage for the community. It also is used to display how a DNN solution should be architected as a best practice, which includes several very useful MSBuild scripts. I've presented this as a topic at DNNCon Palm Beach 2014.
You can read more about this project and view/download the slide deck from my blog.
This is simply the source code repository for several of the projects I maintain or assist with. The distribution for these projects primarily happens at CodePlex. The installable form of these projects can be found at the links below.
- oEmbed Wrapper for .Net
- DNN Google Hangout Module
- DNN Media Module
- User Group Labs: Meta Data Module
- User Group Labs: My Groups Module
- User Group Labs: Group Data Module
- Contact Collector Module
- Content Slider Module
- Content Injection Module
- Lightbox Gallery Module
- Open Graph Protocol Module
- DNN Demo Skin Objects
- PrismJS Skin Object
- DNN Parallax Skin
- Future Gravity Skin
- DNN Widget Suite
- Update your global gitignore to allow DLL, BAK, and PDB files.
- You should create a website folder where your project will be. This can be anywhere on your system. My environment is in C:\Websites\Development\
- Clone the repository into that folder
- Create a new folder in the root: Website
- Install DNN 7.3.4 into the Website folder just like you would for any other DNN site
- Update IIS and your local HOSTS file to point to http://dnndev.me
- Write code.
This solution is currently being built against DNN 07.03.04. It is the latest production version that's stable enough to use. When 07.04.01 comes, we might upgrade to that.
http://dotnetnuke.codeplex.com/releases/view/137325
Be sure that you get the file permissions properly assigned to the folders when you install DNN.
The following Visual Studio Extensions are currently installed and being used in my environment, but are not necessary to work on the project. There are more, but these are the only ones that are relevant to this project.
- GhostDoc
- Guidinserter2
- Microsoft ASP.NET and Web Tools
- NuGet Package Manager
- ReSharper 9 (not free, except to active open source developers)
- UIMap Toolbox
- Web Essentials
First, thank you! Every single moment you participate benefits a lot of people in the world.
Here are a few ground rules:
- Do not submit pull requests for more than one fix. Keep them small and focused.
- Please code review yourself. There are a lot of pull requests with typos and mistakes. Don't worry, we all do it. But a code review of yourself will help. :)
- Please review the diff in GitHub that I will see before I merge your pull requests. If it's hard for you to tell what the differences are, it's going to be hard for me too.
You should probably not build the at the solution level, since this will also build the website, but it won't hurt anything if you do. It will just take longer.
In general, you should be building from the specific module project you're currently working on.
Building in DEBUG mode will compile the project/solution as you'd expect, but an MS Build script will also move the module files into the appropriate Website\DesktopModules\ folder as well.
Building in RELEASE mode will not move the project files, but it will package up the respective module in an Install and Source package that can be used to install on another DNN site for testing or deployment. The resulting packages will be found in the following directory.
\Website\Install\Module
\Website\Install\Skin
\Website\Install\Widget\
This is VERY important to know. Each project has a .Build file that properly maps it's files that need to be moved into the website folder.
You can reverse engineer this to see how it works by referencing each individual Module.Build file. In order to add this to your own module project, copy the build file, make the appropriate changes, and then add the following lines of code to your project file.
<ItemGroup>
<Content Include="Module.Build">
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<Import Project="Module.Build" />
Debugging should be done using the "Attach to Process" method.
You'll find a database backup in the Assets folder. This should be used as your starting point, as defined in the Getting Started section above.
This solution folder contains the common configuration files for the entire solution, such as the web.config.
This folder should contain all of the class library projects that will be used across the various modules.
These projects should contain any code that will be common across two or more modules.
This contains the various module projects that will be placed onto pages.
In the future, this will contain DNN scheduled jobs along with the appropriate MS Build scripts.
If you don't already know, skin objects are very similar to modules, except that a designer uses them instead of an administrator by putting them into their skin designs. Skin objects go here.
Skins are the equivalent to "themes" or "templates" in other CMS's. You'll find skin packages here (skins and their respective containers).
Widgets are the client-side equivalent of a module. They are mini-JavaScript libraries used for a very specific purpose.
The website project is only used for reference. We should not be making any core code changes to DNN itself.