Search 
Friday, October 10, 2008 ..:: Home » Solutions Explorer Test ::..   Login
 Feed Explorer Minimize

 Print   
 Solutions Explorer or Feed Explorer (in Module list Minimize

Discussion List at snapsis.com  the SQL part is apparently done for the install of dnn 4.5.5 now.

05/05/2007 8:46 PM  

The new Solutions Explorer in DotNetNuke 4.5 is a very slick ajax application that can be used for a lot of other things.  Here is a way to quickly coax it out from it's hiding place and make it available for Users other than just Host.

First, log in as Host (Super User) and Navigate to the Host > SQL page, then insert the following SQL and click on the Execute as Script checkbox before running it with the Execute command link.

UPDATE {databaseOwner}{objectQualifier}DesktopModules SET IsAdmin=0 WHERE FriendlyName='Solutions'

After running that SQL you should now have it available as a normal module in your Modules drop-down list.

Now you can add it as a normal Module on any page you like.

OK, that's cool but it's not much in the way of customization is it?
Lets look under the hood to see how we can customize it even further. 

The config file for the Solutions Explorer is very aptly named SolutionsExplorer.opml.config and you can find that file in the root of your website.
           Note: If the file is not in the root of your website, then you probably have not opened up the Solutions Explorer yet.
                     Until the Solutions Explorer is first viewed you will find the config file in the /config folder.

Opening up the config file we can see that it is an XML file that is using the OPML specification.
What this tells us is that the Solutions Explorer can actually be easily configured to read in any OPML formatted list.

Looking at the first < outline node,
we see that the app has been configured
to make a call back to the DNN mothership:
http://marketplace.dotnetnuke.com/rssfeed.aspx?channel=marketplacesolutions&affiliateid=10054

The link above is actually a link to another OPML formatted list, and by viewing that we can see that it is in turn a list of RSS Feeds.

Before we get too far down the road though, lets look back in the original Solutions Explorer config file and see how it helps to define the navigation in the layout.  The outline entry that calls the list above has the attribute category="Tab/marketplace", and the attribute text="Marketplace".

That category and text is what is used to dynamically create the top level tab as shown in the image below:

        Note: If you are interested in just changing the words for localization of the Navigation then you could easily do it here.

So that is where the first level tab names come from. Where do the second level names come from?
That question takes us back to the mothership using the link above.  Looking in that list you can see the three highest < outline level nodes with the corresponding nodes of Modules, Skins, & Other.

So, now we have reached a point where any further customzation of the default content is out of our hands.  The rest of the application and the feeds it pulls in are controlled by DotNetNuke Corporation.  If they wanted to add more content to your site, all they need to do is change their OPML lists to include new or different feeds.

OK then, lets back up again and take a different path. 
Q: If the above link can call an OPML list and pull in the feeds it defines then why can't we have our own? 
A: We can!!  The Solution Explorer is extensible just like most other features of the DotNetNuke Framework.

All we need to do to pull in new content is create a file that is formatted the same way. 
Here is an example:
http://www.snapsis.com/resources/feeds/snowcovered.opml.xml

 Putting the above link in the SolutionsExplorer.opml.config file in it's own < outline node will render a whole new tab with content pulled from a different source.

Ok, pulling in that content works, but there is something wrong with the styling, broken image links, and some of the links do not work properly.
It took a while to track down why, but the /resources/FeedBrowser/scripts/FeedBrowesr.js on line 454 has some code to encode quotes and other characters:

Replacing that line with this one, corrects the output for our new feed nicely.  *Note to self*  Go back and figure out what problems this change may cause.

And here is the result:

 

Side note: As I was monitoring the traffic from my browser with fiddler I also found that there is a call back to DotNetNuke.com to get a js file which results in a 404 (not found) .

404 HTTP www.dotnetnuke.com/Portals/25/SolutionsExplorer/scripts/templates.js

Searching through the source I found out why in the /resources/FeedBrowser/scripts/FeedBrowesr.js file.
On line 137 there is some code that looks like this:

           /* try
            {
             var fbScript = document.createElement("script");
             fbScript.type = "text/javascript";
             fbScript.src = "http://www.dotnetnuke.com/Portals/25/SolutionsExplorer/scripts/templates.js";
                document.getElementsByTagName("head")Ύ].appendChild(fbScript);
            }
            catch(e)
            {
            }
            */           

The code in the .js file seems to want to add some other source in from DotNetNuke.com, but since it is not there then we sure don't need that call.
Lets lighten the load on DotNetNuke.com and comment that out as well.


That's all I have for now.  For the first release of the Solution Explorer I would say we really got our money's worth.  I'll be playing with it more and may even make it into a module with settings so that config files do not need to updated directly if anyone is interested.

 

 

08/08/2007 5:36 PM  

OPML is basically a list of rss feeds, so you can make an OPML list yourself, or some apllications (especially blog apps) are including OPML as part of their funtionallity. Expect to see more and more OPML lists whereever you see multiple stand-alone rss feeds.

The skinning of this explorer is actually controlled by some files in the Resources folder off the root of your DNN install. Digging through there and the javascript code will point you to how this is skinned.

The opml file I changed for this tutorial can be added to or modified to make your own OPML config files.

I don't have the spare time to make this into a module right now, but I'd be glad to answer any questions to help someone else that wanted to take on the task.


 Print   
Copyright 2008 by WBTI   Terms Of Use  Privacy Statement