I first bumped into DNN back around 2006 when I was a site admin at a local university. DNN was at around version 4.7 back then and the university’s Admissions department at the school started using a 3rd party solution that was based on something called “DotNetNuke”. Inevitably the Admissions department came to me with a change request and I had to learn more about this application called DotNetNuke.
It’s been a while since then and my initial research into DNN got me hooked and led me to using DNN more and more and consequently I wanted to learn more and more about it. I remember being new, aggravating people to help me, reading forums and blogs trying to learn more, spending time on DNNCreative.com, reading Michael Washington’s site a lot, and doing anything I could to learn about DNN in general.
At first just learning how DNN is architected and where I should go to update various settings and permissions within DNN were my goals. It didn’t take me long at all to realize that I could do a lot more with DNN than I could have ever done on my own. Over time I learned more about the DNN Community and came to recognize that by using DNN I was essentially standing on the shoulders (and generosity) of developers from around the world who worked on the platform and freely contributed their code. I did not know these people, but I knew they were smarter than me and I knew that I appreciated their generosity!
After learning the basics of how to manage a DNN site I then wanted to know how to update the look and feel of the site even more. I am a very hands-on, visual learner with a short attention span so I set down the path which I would later learn is referred to as “skinning” a DNN site. I wasn’t a front-end or back-end developer guru and don’t have a really strong background in development. Initially I could only do simple things like change a font size, but I pushed myself to learn more about how a skin works and how it is coded. Over time I learned more about skinning and got to where I could change backgrounds, create different pane layouts, and create unique site designs in DNN.
I spent a few years learning all about site administration and skinning and eventually thought to myself that it would be neat to know how to develop a module. I interacted with modules all the time when managing DNN sites. Though, developing a module required a lot of skills that I didn’t have at the time and many of which I am still learning. I wanted to learn more and I joined the Charlotte based DNN user group, the “QCDUG”. I thought to myself that hopefully I could meet people from whom I could “mooch” knowledge. If you ask Allen Foster (former president of QCDUG) he can tell you about the many questions I used to ask him when I was first starting out. I was embarrassed to ask Allen so many questions that were so basic, but he made it ok for me to be clueless and I still appreciate that. Allen spent a lot of time with me on meetings with no reason to help me other than probably feeling sorry for me. Allen’s generosity with his time fell right in line with the open source mindset of sharing and helped me get the beginnings of understanding of module development.
One thing I very vividly remember was being frustrated when I was trying to learn about module development. Part of the frustration was due to my own lack of knowledge and experience, but the other part was that I couldn’t seem to connect all the dots. Yes, there were tutorials, but none of them were geared for me, the guy who wasn’t a strong developer, the guy who needs hand holding and wants to know the how and why of everything, the guy who spends more time confused than actually making progress. I needed a start to finish tutorial with explanations of what’s happening all along the way at the most basic level. I needed diagrams, videos, and explanations of concepts that I should probably have already known.
Back then I would read one person’s tutorial and get understanding about a certain topic, then I would read a different person’s tutorial and gain understanding about a different topic or about how I could do the same topic, but yet in a totally different way. Some tutorials assumed that readers had a certain level of development knowledge and a lot of times I even missed that cut! It was indeed good to learn the bits and pieces, but at the same time it was frustrating because I simply couldn’t put it all together. I could never get a firm grasp on it all. As time passed I kept on pushing, nagging, and learning and that still continues today.
So here we are now in 2014 and I am still learning about module development and I nag people weekly with questions trying to learn more. One thing I promised myself back in the moments of frustration when I was trying to learn more about module development was that if I ever could code even the most basic module that I would write a tutorial blog series about it targeted at the “me” back in 2006. This blog series is the first entry of me staying true to that promise.
So if you’re the person who may be trying to learn about module development, but yet are intimidated by all the smart people that use this site or if you are the person who is hesitant to ask the basic questions or if you are new to DNN and simply want to know more or if you are a front-end developer who’s trying to learn more about module development (and development in general)… if you are any of those people then this tutorial series is dedicated to you because I either used to be you or still am you.
What to Expect in This Series
I’m going to attempt to write this blog series about module development from the perspective of a complete newbie. I’m going to try to explain concepts, code, and some history too. If you are a seasoned developer, feel free to laugh at my attempts to explain concepts because it will probably be a different “style” than normal, but please do read any comments posted to the series and assist by answering questions and providing insight into things I could have described better. I’m also going to try to speak to the “multiple intelligences” or multiple learning styles that people have. I’m going to document things thoroughly in text, provide conceptual images and screenshots, and videos in hopes of providing something for how each learning styles learn best. If any external resources are helpful I will include links to them as well.
I invite you to join me on this blog series as we go from absolutely clueless to having a basic, but modern module. This series may not be the best module development series out there, but hopefully it will help someone somewhere move a step or two closer to developing your own module. If that happens then this series will have been a success as that is my intended goal.
Series RoadMap
I'm going to post these entries for the next 21 days in a row. So come on back if you want to keep up with the series!
- Series Intro (This blog)
- What is a Module?
- Software and Resources
- Installing DNN
- The "Tasks" Module
- Module Development Templates
- Designing and Styling the View Control
- Creating the Tasks Table
- Creating the Tasks Class
- Creating the GetTasks Stored Procedure
- Creating the Task Controller Class
- Module Development vs. Modern Module Development
- Creating the Web Service Class
- Using jQuery & Ajax
- Mentally Mapping The Pieces Together
- Debugging a DNN Module
- Adding Tasks
- Editing Tasks
- Deleting Tasks
- Giving Our Module a Setting
- Installing Our Module in Another DNN Instance
- Series Conclusion
GO TO THE NEXT BLOG ENTRY - WHAT IS A MODULE