Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...Page model and module-to-module communicationPage model and module-to-module communication
Previous
 
Next
New Post
12/21/2008 10:50 PM
 

Five years ago I built this web site to teach myself .NET and C#: http://seattleinsight.org.  Now they'd like an update and I thought I'd investigate DNN, just to try something new, again.  For the most part, I'm impressed with what I've read.  DNN will make it easy to add lots of things they want like blogs and membership lists and announcements.  These things seem to fit well into the DNN module architecture.  But there are several features they need that will require me to do some custom module development for them.

However, there are a couple things I've not been able to answer for myself after reading the module development guides I've found.  Maybe I'm just not thinking of it in the right way.  Let me describe how audio works on the SIMS website today.

SIMS hosts classes and events.  Most of these feature speakers.  We record the lectures ("talks") at the events and post them on the web site.  I created an admin screen where the talk admin can upload an MP3 and fill out various forms for class homework, talk description and select the speaker.  Speakers (guest teachers) are defined in a different admin panel.  These basically fill out tables for teachers and talks.  The talks have a foreign key into the teacher table to reference the teacher who gave the talk.

So that's the db.  Once a talk is uploaded and assigned to a teacher (and event), it affects several pages.  You can view the talk on the talk page.  Here's an example: http://seattleinsight.org/talk.aspx?ID=347 (excuse the lame formatting -- very old site).  A link to this page is added to the talk library, to the bio for that teacher, and to the event page.

So back to DNN.  I can see how to create a module that will only be viewable to the talk admin that uploads the talk.  Similarly, I can see a module that could add a new teacher record.  I could put these modules on the talk library page and guest teachers page, respectively.  What I can't figure out is how to create the talk page programatically.  All the examples I have seen require an admin to create a page, then you add modules to it.  The talk page should not be editable by the admin.  I can't allow them to choose a template and make each talk page different.  They also can't do any more work than they do today, which is to simply upload the talk, choose a teacher, then all the pages are created or updated that needs to refer to that talk.

Am I missing something, or is this inherent to the page model DNN uses?  Does it assume an admin creates pages rather than maintain objects is the db?

And finally, I imagine the talk page has content areas for downloading the talk, playing it in your browser, reading homework and description, etc.  It also has a list of links on the sidebar called "related talks" that point to other talks in this series or on the same topic.  I presume the "related talks" panel is another module I write that takes the talk ID and presents the list based on my stored procedure that grabs that data.  How does this module pull the talk ID from the page?  Do I sent it on the query string?  Again, "related talks" is not an editable section of the page.  That is, a talk admin will not be allowed to remove or edit it.  It should just be part of the page template, but I presume it will need a talk ID in order to work.

Thanks for all your help.  I know, I'm a DNN noob.  I appreciate any help you can give me, or to point me to a decent example of a site that does something like this.

AldenG

 

 
New Post
12/22/2008 9:23 AM
 

Without fully loading your design into my head, I think you've probably gotten confused between asp.net pages, dotnetnuke pages and dotnetnuke modules.

Just remember, a DNN page is not a page at all, but just a record in the database representing a page.    You request a unique url, you get back a page of html constructed from the database.  This is the key to your understanding.   If you're worried about creating a 'talk' page, then you would create a talk module, and put it onto a base page.   Then, you'd give certain users the ability to create your talk pages, which would just be records in the database.  This would work in the same way as this forum post : you clicked on 'create new post', and a new 'page' in the DNN site was created.   You'd just write your module to do something similar.  You don't have a unique module for each of these add/view functions : it's all one module.  You have different ascx user controls for each function, and DNN will load the relevant one depending on what action the user clicks on - they click the 'add' link (which you'll define and create), and DNN will load the 'Add' user control - all from the same DNN page.

You would use some sort of unique identifier in the Url to display which talk to show for a url.  You would also be able to generate the related links from this, using a stored procedure.  You're on the right track here.

You can look at the source code for the blog module for inspiration : it's a module that lets you create new pages (blog posts) plus has related links for blog posts (such as archives, child blogs, etc).  The blog module has a set of controls that gets installed when you install the blog module itself : this would be analogous to what you would like to do.

I've actually written a blog post a little while back talking about these 'architecture' points which are a little difficult for the first-timer to get their head around.  It's at this Url : http://www.ifinity.com.au/Blog/Technical_Blog/EntryId/48/Designing-Structuring-and-Architecting-DotNetNuke-reg-Modules/

But my main recommendation will always be : just try it out.  Hack together a quick module in a local dnn install, until you get the hang of it. You'll never know until you get started.  But believe me when I say anything is possible with DNN : it's just a framework for building on, and there are virtually no limitations if you've got the right imagination and skills.

 
New Post
12/22/2008 9:59 AM
 

Hi AldenG,

You can create multiple DNN modules for the same application. In that case you can create special 'talk' user control like talk.ascx and assign specific rights to that module. You don't need to put all modules together in one DNN module. You can, but by creating multiple controls you can drop them from the control panel to the page and assign the correct user rights to them.

By passing querystrings you can change the content of a module as well. Module communication is for controls on one page that need to talk to eachother, but if both react on the same querystring you have the same result.

Hope this helps.

J.

 
New Post
12/22/2008 12:29 PM
 

Wow.

I've already learned the most important thing from these responses: DNN has a responsive and helpful community.  With guys like you watching my six, I can't go wrong.

Sounds like the blog module will be a good example for me.  I'll dig into it.  Better keep a VB reference handy -- I'm a C# guy.  I'm confident now that DNN will do what I need.

I was worried that I would have to ask the talk admin to create a new page for each talk (and with a library of 500 to port over already, the prospect of making 500 talk pages was daunting).  If I can create one canonical page then pass in a talk ID, or have DNN create the pages for me (like the blog module will show me how to do?), then I'm golden.  I'll report my findings to this thread and mark it answered.

AldenG

 
New Post
12/29/2008 6:31 PM
 

Good luck AldenG!

I believe Bruce is also a C# person like I am. I think the majority of developers is.....but that won't be a problem by using DNN. You can best start with the help templates of Micheal Washington. From bitthebullet website you can download a C# template to create a desktopmodule on the fly.

J.

 
Previous
 
Next
HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...Page model and module-to-module communicationPage model and module-to-module communication


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out