More WebPart Next Steps

I implemented the WebPartModule and WebPartAdmin module in my sandbox over the weekend using the MS SQL data layer. I still have some work in the other data layers but I'm waiting until I complete all the schema changes In this db before moving through the other layers.

These modules work just as I planned using a test dll I made with a simple web part. I was able to drop it in the bin folder, it showed up on a list in the WebPart Admin module as a WebPart available to install. Installing was 2 clicks and 2 check boxes to indicate whether it should be made available for MyPage and the Content System. I checked them both and then was able to use the WebPart on MyPage and in the content system. Pretty Sweet!....but, if you build it wil they come?

Googling I could not find any webpart libraries available for download except those for Sharepoint which are not compatible with ASP.NET WebParts. Often, people don't realize these are not the same thing because they are both named WebParts, but they are not the same thing.

So the utility of this feature is good for developing your own WebParts as features for mojoPortal or other projects using WebParts but we have yet to see much of anything out there right now as far as 3rd party WebParts. Maybe that will emerge later, we shall see.

But anyway, there is still more that I want to do in the MyPage implementation of WebParts.

Similar to what they have over at www.pageflakes.com, I want the user to be able to have multiple pages on MyPage, with the ability to create more as needed.

Also, I want to do something more elaborate with the WebPart Catalog. You can only show so many choices in the default presentation without it getting obnoxious so I need to figure out how to implement it so that the most popular ones show up in a short list and there is a more link where you can open a screen that lets you page through them so that it is not too cumbersome having a large catalog and browsing through them.

I think after those 2 things are implemented I will start the QA process towards a release. Not sure how long that will take, hopefully it will go quickly.

WebPart Next Steps

Now that I've had a chance to think more about WebParts and play with the first iteration of WebParts in mojoPortal as implemented in the MyPage feature I'm starting to get a vision for the next steps and here is what I've come up with and will be working on this weekend. Basically, I'm envisioning 2 new modules WebPartModule and WebPartAdminModule.

WebPartModule will allow us to use any installed WebPart as content anywhere in the site. When I say installed I'm talking about assemblies dropped in the bin folder, in other words third party WebParts or WebParts developed as pure WebParts outside of mojoportal and compiled into a class library like MyCustomWebParts.dll and placed in the bin folder beneath the web. Of course WebParts used this way won't have the drag and drop and personalization but will be just like any other content in the site (not including MyPage) and will stay where the Admin puts it. So this module will just be a way to make any WebPart available for the Content System. When installed WebParts are used on MyPage they will have all the WebPart features but the WebPartModule is not part of that equation, its job is just to load a WebPart as if it were any other site content wherever you tell it to. In this context the WebPart will be treated like an ordinary Control.

WebPartAdminModule will allow the admin to "install" the WebParts by entering the Assembly Name, the Class Name, and Description to display in the WebPart Catalog on MyPage. It will also allow configuring whether each installed WebPart is available for MyPage and/or available for the Content System using the above WebPartModule. To make it friendly I may use Reflection to iterate through the assemblies in the bin folder and make a list of WebParts in those assemblies that aren't yet installed. I've already done preliminary work on loading WebParts dynamically from assemblies. The WebPartAdmin module will just give them permission to be used on a site by site basis. In a multi site installation the root site will be able to determine which WebParts are installed in each subordinate site just as we currently do with the Installed Feature Administration in Site Settings. This feature will show the currently installed WebParts and the WebParts found in the bin assemblies that are not installed to make it easy to install them.

So these features will allow us to use third party WebParts on MyPage where they will have all the WebPart bells and whistles or anywhere else in the site where they will be treated like ordinary controls.

I think this will work, should be fun.

New Email List for Subversion Commit Notification

Hey Everyone the svn commit notification is working again but I think it lost the people I had added manually to recieve notification. The good news is we now have a list that the notifications go to so people can subscribe or unsubscribe as it suits them.

If you would like to get notification whenever commits are made to the Subversion Repository please visit this page and subscribe:
http://forge.novell.com/mailman/listinfo/mojoportal-svncommits

If you have been getting the notification in the past I think you will still need to subscribe as I'm pretty sure it lost the previous list of individual users. There were only about 10 of you, you know who you are

WebParts have landed in svn branches/2.1

You may have noticed the new MyPage link at the top of this site. The appearance of this link signifies completion of the first iteration in implementing WebParts in mojoPortal. WebParts allow page personalization kind of like My Yahoo or Google personalized pages. To customize the page and see how it works you have to login to this site, otherwise you just see the default content I have enabled on MyPage.

I've started some documentation on the MyPage feature here. Any content in the site can be made available for the MyPage Catalog and users can pick which content to show on MyPage and the site will remember their settings. You can also drag and drop the content into any of the 3 columns.

There is an upgrade script in svn for MS SQL, MySQL, and PostgreSQL. I still have some work left for the SQLite implementation. Of course backup your db and site completely before trying this out.

I know the mono users will be dissapointed this is only for Windows at this time but be patient, when the mono 2.0 stack is ready you will be able to upgrade.

There is also a new Content Manager module and content module instances have been de-coupled form pages so you can have the same content on any number of site pages and you can even have content that is not on any page but is available for MyPage.

Any developers out there who play with this please give me your feedback on any problems you find. It should be fairly stable as this site is running on it. We are probably getting close to a 2.1 release depending on what people report.

Those of you who have contributed translations, now would be a good time to update the translation files to get them updated before the next release. There are a lot of new items in the cultureusa.config file, it would be nice to get the others updated before we make a release.

On another note, svn commit email notification hasn't been working lately but believe me there have been a lot of commits. I've notified Paul at Novell forge about the problem so it will probably be cleared up soon. Most likely its releated to some transition of the project administration to media wiki. In the past I have added users 1 by 1 to the svn list when they let me know they would like to be on it, but going forward we will have a mailing list for svn commits and people can opt in or out as they please. To sign up for the list just visit this page
http://forge.novell.com/mailman/listinfo/mojoportal-svncommits

Cheers,

Joe

Update - some additional notes for those upgrading from svn, ignore if doing a clean install

In addition to the normal backup your db and site completely before upgrading, you should be aware of a few manual steps you will want to take after the upgrade to enable some new features.

First you will want to add the new Content Manager module. Go to Admin > Feature Modules and click add new module. For the Feature Name type "Content Manager", for the Control Source, tpye Admin/ContentManager.ascx. Leave Is Admin unchecked for now but after we add this to a page come back in here and set it to true so that it cannot be added to any other pages. Save the Feature and then go back into it and you will see a new link for "Configure Settings", click this link and add a new setting:
ContentListPageSize
TextBox
15
^[1-9][0-9]{0,2}$

Now while we are in here there are some new settings for the Forums module. Go back to Admin > Feature Modules and click the gear for Forums then click the Configure Settings link. Add the following settings:

ForumEnableRSSAtModuleLevel
CheckBox
false

ForumEnableRSSAtForumLevel
CheckBox
false

ForumEnableRSSAtThreadLevel
CheckBox
false

this is just making the deafult setting false, if you want to enable this for a specifi forum you will be able to do that as these new settings will show up in the module settings for each forum instance.

CSS Control Adapters, Site Upgrade and more..

I just updated this site to the latest code from my sandbox in svn (/branches/joedev2.1). Hopefully you won't notice much difference. The menu is now rendering as ul and li elements using the new CSS Menu Adapter based on the sample from MS. It should look the same as ever in the browser but if you view the source you'll see no more of the nasty nested tables that the menu rendered as previously.

Also the Personalization, Membership, and Roles provider apis have been implemented in all the data layers (this site is using the MySQL data layer).

I'm also using the built in asp.net login control, change password control, and password recovery control which run on top of the Membership Provider.

Personalization in particular is the main plumbing needed to support WebParts and it is working well now in all the data layers so I'm beginning to experiment with web parts and conversion of the built in features to web parts. Its going to be cool. The only thing is the web parts controls all seem to render with nested table layouts so I will probably have to implement CSS Adapters for them before I'm happy with it.

There were quite a few changes under the hood so let me know if you notice any problems or anomolies with this site