DotNetNuke (DNN) 1 module - 3 ASCX files scenario - dotnetnuke

I am new to DNN. I have created a DNN module with three controls (C#, .NET3.5) :
Controller
EmailRequest
DealSuccess
Controller checks ["ClientEmail"] cookie value AND if NULL redirects to EmailRequest control, if NOT NULL redirects to DealSuccess control.
I need to wire these components in DNN. I have decided to create separate pages for EmailRequest, DealSuccess.
Associating these controls and their respective pages, including building/assigning URLs and calling them, is bit ambiguous because some of that needs to be done in DNN configuration and some in code.

According to your reply yesterday, my reply to your forum post clarified this for you
http://www.dotnetnuke.com/Resources/Forums/forumid/201/postid/439089/scope/posts.aspx#439089

Related

DNN Module - Create Page for View.ascx

I have create a DNN Module using the Visual Studio DotNetNuke 7 C# Compiled Module template. When my module is installed, I would like to create a page for View.ascx. How can I do this? Can this be done when I upload the module in Host > Extensions?
From the Control Panel you should use the Add new page functionality, then place your Module on that newly created page.
Check out this video for how to Add a page in DNN7.
http://www.dotnetnuke.com/Resources/Video-Library/Viewer/Video/549/View/Details/How-to-add-a-page-in-DotNetNuke-7.aspx
And this one for how to adda module to a page
http://www.dotnetnuke.com/Resources/Video-Library/Viewer/Video/537/View/Details/How-to-add-a-module-to-a-page-in-DotNetNuke-7.aspx
To answer the question specifically about having this done automatically with the module, yes, you can, BUT you have to write code to do this and I only recommend it for special circumstances.
I've seen this done using an implementation of the IUpgradable interface in DNN to detect an initial installation and create the page using DNN API calls.
There is some detail in the Wiki about how IUpgradable works

How to share DotNetNuke content across multiple pages?

I have just created a new DotNetNuke 6 website. The default installation has a social links area which is on each page. Can I change the contents of the social links (e.g set the Facebook href) in one central place or do I have to go to each page and edit the contents in each place?
DotNetNuke has a notion of referencing modules that would come in handy here. Essentially you can drop a new module on the page and configure it as you please, then go to another page and instead of dropping a new module, you select an existing module from another page. Now each of the modules appear to be separate, but are actually just the same module appearing in different places. You can then edit the module and the content will change across pages. *
To answer your question specifically - I don't believe this is how the default content is set up. You would need to go in and delete all of them (save one) and then reference the remaining elsewhere.
A couple of notes:
This behavior isn't absolute across all modules, technically each module gets to decide how it's content is shared across pages. Most modules, and notably the text/html module, work how I described, but some more advanced modules may not.
Additionally, the "copy module" option in the photo above will create a new module based on the original. If you don't have copy module selected, no new module will be created, the existing one will simply be referenced.

Silverlight: Navigation app template - can we have cleaner urls? And urls like asp.net MVC / Routing has?

I have just created a new silverlight app using Silverlight navigation template. All went well and its working :-)
But the url has an extension of aspx ... can we not remove like asp.net MVC has done?
SilverlightApplication1TestPage.aspx
The next thing that i found strange is how it appends the page name, it uses # symbol like so
SilverlightApplication1TestPage.aspx#Home
I thought it would be more natural to do this (also like asp.net mvc does)
SilverlightApplication1TestPage/Home
SilverlightApplication1TestPage/About
Is there a kind of work around or updated tamplete of some kind
Or its not possible?
Thanks
I'm using Silverlight with Asp.Net MVC and here is a sample URL: http://localhost:37920/#/AdvancedSearch. When I was using straight Asp.Net then yeah I had .aspx files in it. It Still isn't what you really want but gets you closer maybe.
The bottom line is: no. To simplify it everything in a URL prior to the # belongs to the server and everything after the # belongs to the client.
A Silverlight application exists entirely with with in a single URL (page) from the servers perspective. When you use the Silverlight navigation framework you are moving about within the app inside this single HTML page.
If the # is removed there would be fetches made to the server and the results would replace the existing page, the current SL app will be unloaded to be replaced with the resulting content. Even if that resulting content is the same SL app but directed to a different context it would still unload the app and reload it.
The use # is merely a means for navigation within the Silverlight app to be tracked within the browsers navigation history. The browsers own back button will then operate in a way that doesn't surprise the user.
THanks everyone for comments, it got me thinking... and i think i have fixed it.. and found a solutions using asp.net 4.0 routing...
Add a global file to the asp.net project and then add this to application start
// Code that runs on application startup
RouteTable.Routes.MapPageRoute("SilverlightRoute",
"MyApp",
"~/SilverlightApplication1TestPage.aspx");

dotnetnuke clicking left bar opening page on the content pane(BEST PRACTISE)

ok i have created a picture gallery module in the left bar , there is a page viewpicturegallery.ascs . on clicking any image i want it details to open in the content pane in the middle . how would i do it.
can some tell me the process? i would made a new page or new module or what? for the details in the middle
here are some steps you can achive it:
create two controls in a single module for showing images and showing details for a single image and create two different definitions, each having a default view control as the one you want to show.
when you install the module in the page, it will show both definition controls in content page, you can re-arrange them in whatever panes you want.
search for inter module communication in dotnetnuke and grab a sample from net
you will find that there are two module definitions participating in the communication. Your list control will be the IModuleCommunication and your details view will be your IModuleListner
That's how you can achieve the things you want.
Please tell me if you have any other questions.
Short answer: use multiple DNN modules and communicate between them via querystring parameters, postbacks or IModuleCommunicator. Depending on your requirements, the details view may be possible to implement using a Text/HTML module and client-side tools like jQuery and plugins only?
More details on using multiple interconnected DNN modules:
You can define multiple modules in the .dnn manifest section.
This way, each interconnected submodule is part of the same install package, but you'll only have one visible module in the in the control panel's "Modules" dropdownlist. Adding this composite module to a page will add all the submodules, but you can remove any one of them independently of the others.
You should be aware that each submodule that directly inherits PortalModuleBase will have its own Settings object. If you want to share settings, you'll have to inherit from a shared parent ascx that inherits PortalModuleBase or write a function to read settings from another module in the same page (having the same ModuleID helps here).
Communication between modules can be based on querystring parameters, which is recommendable for opening a details view so that you can open it even if the gallery module weren't present. PostBacks let you use UpdatePanel, though. Modules in the same page can also use IModuleCommunicator interface for event-based communication. For example, I use an event calendar module with a "month view datepicker" module and a "list view of events" module. List view module communicates active days to the monthview via IModuleCommunicator. This way I can emphasize the active days with a boldface font in the datepicker. For more details on IModuleCommunicator, see Rafe Kemmis's blog post.

dotnetnuke: can we create a master page?

Can we create a content managed master page in dotnetnuke?
eg. I want the right pane and bottom pane to be content managed, but to show the same thing across all pages.
Thanks
What you are describing is essentially what DNN calls a Skin.
A DNN skin is actually just an ASP.NET user control (ascx) that dictates page-wide or site-wide look and feel, which offers developers the same functionality as a Master page, except that it ties into DNN-specific elements and uses some DNN-specific user controls, such as menu/navigation, logo, breadcrumbs, login/user account links, etc.
Now, in order to add the ability to provide content management capabilities site-wide, you specify an area in your skin to place a module (let's say, a Text/HTML module). This area is called a pane. Once you add a module to this pane, in its settings you can tell it to appear on every page. This way, the module can be edited on any page, and its changes will be reflected on all pages automatically.
Check out DNN's site, as it contains a TON of documentation on how to do many common tasks: http://www.dotnetnuke.com/Support/Documentation/DownloadableFiles/tabid/478/Default.aspx. Under the Technical Documentation section, you'll want to grab the Skinning document (I believe it's a PDF).
DNN Modules can be set to appear on all pages by checking a checkbox in the module settings. However DNN does not use the concept of a Master Page. It injects modules (user controls) in containers on a single aspx page at runtime.
A Master Page would be a great addition to DotNetNuke you cannot replace content in a single area of the page. The whole page refreshes. For example if you have a menu and you only want the content of what you select to appear in a specific content area without refreshing the rest of the page you have to resort to third party modules that attempt to do that but usually fail. There are 'module wrappers' but all the ones I've tested have issues with modules that allow the user to edit content. Edit screens are usualy different user control files (ascx) that are launched when you edit the module content. Since the page refreshes with the new page you have lost your place. Those module wrappers work fine for static content and some other controls but not for all controls.
IFrames can be used (DNN has one) to trade out content but that doesn't get rid of the probelms mentione above. I'm heavily invested in DNN, running the UCanUse.com web site so this isn't a slam on DNN. I just thought I'd try to answer the quesiton with detail.

Resources