Somewhat of an abbreviated Community Server work week, having gone Vermont leaf peeping with my wife and a friend of ours from out of town last Monday. We drove to Stowe and over Mount Mansfield through Smuggler’s Notch on route 108. God, we live in a beautiful place!
On the people side, I had two interesting New Client Encounters this week. One by phone, the other during a consultation at the client’s offices. The phone contact was interesting because I don’t usually speak to individuals who have such detailed back-end technical requirements. “This project would require heavy XSLT and LINQ functionality,” he said. Um, my clients typically tell me they need a form with two text boxes and a button that saves data for a report that they view every other Tuesday, stuff like that. So I passed on that one, though I knew of a good man to take the hand-off.
The second New Client Encounter was the result of a scheduled meeting (billed with travel time) to talk about a Community Server 2008.5 Wiki-centric project. One of the fellows in the room said they weren’t sure Community Server could accommodate the taxonomic verses folksonomic requirements they were considering, at which point I had to keep myself from running out of the room screaming. It’s been a long time since Library School for me (a Masters in 1988), and nowadays I deal with real world requirements that I try to deliver as quickly and economically as possible. I can’t relate to organizations who spend time and energy in those types of theoretical debates. Another pass. The company’s in-house development staff will handle the project just fine without my help, I’m sure.
The rest of the post describes my week’s more geeky Community Server exploits. Feel free to check out anytime. Hope to see you next week…
It was another interesting week in Community Server coding, at least I thought so. I started the week completing a CS2008.5 site upgrade. I was able to re-architect a Primary Categories widget for the better. (Screenpics and description at bottom of this post.) Lots of backend changes between CS2008 and CS2008.5 tag handling, so for simplicity sake I chucked the old tag-extension code and approached the Primary Category Widget as less of a tag generator and more of a simple link generator, with each link having the syntax of someblog/archive/tags/sometag/default.aspx. This meant I didn’t need to modify the CS2008.5 blog tag administrative page or use a CSModule that stored new tags on PostCreate() to a database.
The CS2008.5 Primary Tag widget converts a delimited string to urls. That’s really all it needs to do. One problem though, I needed to share the blog widget with an associated media gallery, and galleries all share a single set of sidebar widgets. Apart from some interesting blog post-to-media gallery association logic, this meant that I needed to store the widget data in a location where the media gallery widget could access it–in a database and not in a blog’s theme.config CDATA string. Below is the simplified widget and blog Primary Categories admin page.
Why the blog admin page and not save the Primary Category data directly from the Widget? Less code. The /controlpanel/ThemeConfiguration.aspx page’s Widget Modal Window is /controlpanel/utility/ConfigureContentFragment.aspx, where you’ll find the CS.Controls.ConfigureContentFragmentForm.cs handling the widget configuration and where the widget “SAVE” button method is located. It was easier adding a field in the Blog Edit form and retrieving that data in my Widget ContentFragment class than modifying ConfigureContentFragment.aspx to use a custom ConfigureContentFragmentForm.cs with some updated Save() method.
Other than Widget Work this week, I had the fun of adding a “personal dashboard” page to a CS2008.5 site. This is when the Welcome Page is displayed to all users, but an additional link is provided (typically placed in the top-right Welcome User control) to that user’s Dashboard. Afscrome blogged beautifully about it. Changes in CS2008.5 required the removal of all “FalseContentTemplate” content from the modified home.aspx as opposed to Afscrome’s TrueContentTemplate instructions, but otherwise this impressive young Community Server Stud made the task of creating a separate personal dashboard page a piece of cake.
I did some work this week with Blog Post metadata in creating post-specific contact emails and site links. The interesting aspect of this task was that the metadata used in the WeblogPostData properties were actually extended attributes of a Media Gallery and not the extended attributes of the blog post itself. Here’s the Media Gallery “Advertiser Options” tab I created to manage the extended attributes shared with the blog post.
That’s about it for this week. We’ll see what the upcoming week holds, though I don’t plan on working a lot of hours. Vermont fall leaves are near their peak color!