in

Telligenti

Serving up fresh ideas every day, Telligent style

Kevin Harder

  • Enhance your Graffiti powered blog

    Graffiti Blog Extensions PluginGraffiti is an awesome CMS and an excellent blogging platform. But there a few advanced features that are common in blogs but don't really make much sense in a general CMS which we left out on purpose. The idea was that we would create an official Telligent Graffiti plugin to add these blogging features for people using Graffiti to run a blog.

    The Blog Extensions plugin was one of the first things I got to work on when I switched from the CS/Harvest team to the Graffiti team at Telligent. It was nice to take some of the experience I had from working on the blogging component in Community Server and use it on another project. We decided to start with four features for the initial version of the plugin:

    • Support for receiving and automatically sending both trackbacks and pingbacks. These are two different protocols for the same purpose - to let another blogger know that you linked to his or her post. Some other blogging/CMS platforms only support one or the other, but Graffiti (and Community Server) fully support both. After you add or update a post the plugin will scan the body for any links, retrieve the web page that each link points to, and check if the remote site supports trackbacks or pingbacks, and send one if they do.
    • Adds a Comment RSS feed to display all comments for all posts in a single feed located at /feed/comments/. This is really useful when you want to follow all of the comments on a blog without having to check each post's web page every day.
    • Can send a weblog update ping to services such as Ping-O-Matic, Technorati, Weblogs.com, and many more (the list is configurable). This is a way to let the various blog search services know that you have published or updated a post.
    • Extends the core RSS feeds with GeoRSS support. GeoRSS is a simple way to encode a geographic location for each post in your feed. Some web sites and services look for this information to enable people to search for content written in or about specific locations. The plugin allows you to set a default location (where most of your posts are written at or about) and optionally override it for each post via an automatically created custom field.

    Each feature can be individually enabled or disabled. Jef Kazimer wrote a very detailed blog post about how to configure and enable the plugin.

    The Blog Extensions plugin requires Graffiti version 1.0.1 or above (Service Pack 1). While working on the plugin we realized that we needed add a few additional events and methods to the core to enable the plugin to do everything that we wanted it to do, which were included in the service pack. So it won't run on the original (v1.0) release of Graffiti.

    After the plugin was released to the integrated Graffiti marketplace, we decided to also make the Blog Extensions an open source project. This way interested community developers can contribute, and other developers who want to create plugins for Graffiti can look at the source as an example.


    Tagged as graffiti , plugins

    Similar Posts

    1. Now Graffiti Powered
    2. First Graffiti Update Delivers Tasty New Events
    3. Live Blogging the CSDC - Part 3

  • Source Code for Graffiti Silverlight Photo Gallery plugin released

    A few weeks ago I released a beta version of the Silverlight photo gallery plugin for Graffiti CMS that I have been working on, along with a blog post describing it. I wrote then that:

    Once they get tested a little more I'll make any needed changes and re-release it, along with the full source code... They are being released as a beta because I have not had time to fully test every combination of the options.

    Since then I have not received much in the way of feedback, so I'll be optimistic and assume everything works splendidly. I have not made any changes since that release either, although there are a few features I would like to add to future versions of the plugin (thumbnail support, reading EXIF info, improved config UI).

    Between working on the next version of Graffiti, other plugins and widgets, and of course the new baby, I know it will be slow going in adding those features in. So instead of just releasing a source code drop in a zip file as I usually do for my personal projects, I decided to create a Google Code project for this set of plugins. That way if there are other developers interested in improving the plugins they can do so with relative ease.

    I will keep the Slide.Show Photo Gallery Plugin download page on this site updated to point to the latest compiled and source code releases in the project. You can also use SVN (my source control system of choice) to grab the latest code from the project by following the instructions here. If/when you find bugs or have suggestions please use the Issues page in Google Code project. And, although it's probably overkill, I also setup a developer and news mailing list for the project that you can subscribe to if you are interested in participating or following future development.

    Even if you have no interest in a Silverlight photo gallery, the source code may be of educational interest if you are considering writing a complex Graffiti plugin.


    Tagged as graffiti , plugins , slide-show

    Similar Posts

    1. Add a Silverlight photo gallery to your Graffiti site
    2. Now Graffiti Powered
    3. New .Text to CS 2007 Blogs migration tool available

  • Cadence is born

    My beautiful new daughter Cadence Danielle Harder was born this morning. She weighed 7 pounds and 10 ounces, and was 20 inches long. Megan did a fantastic job and both her and the baby are healthy and doing great.

    Photos from her first day can be found on my photo gallery page on this site, and on my Flickr account. I am taking the next two weeks on PTO/holiday. So please be warned that any work-related emails you send to me may have an even more delayed response than usual.


    Tagged as family

    Similar Posts

    1. Live Blogging the CSDC - Part 3
    2. Add a Silverlight photo gallery to your Graffiti site
    3. Live Blogging the CSDC - Part 2

  • Add a Silverlight photo gallery to your Graffiti site

    A few weeks ago Andrew Duthie modified the default Graffiti theme by adding in the Slide.Show Silverlight photo gallery control, with a hand written configuration and data xml files, and shared it with the Graffiti team at Telligent. I had not seen the Slide.Show control before and it looked amazing! Especially for being free and relatively new.

    Slide.Show was developed by Vertigo Software as a demonstration of Silverlight's power and flexibility. It was then released as an open source project on CodePlex. It consists of a few javascript files that retrieve the album and photo data via XML, JSON, or a built-in Flickr provider and renders the Silverlight.

    I thought it would make a great Graffiti plugin. The plugin can render the necessary javascript and dynamically create the configuration and data xml files so you don't have to modify your theme or manually create any xml files. I also found an additional Slide.Show data provider javascript that allows it to retrieve photos from Google Picasa Web Album which was written by Wesley Riley.

    So I built three very similar plugins that use the Slide.Show control to display a photo gallery on a post page. The difference between them is in where they get the photos from:

    • Slide.Show Photo Gallery Plugin - This plugin looks for photos on the web server. Create a folder to be the "root" of the photo gallery and enter that in the plugin configuration. Inside of this root folder, create subfolders for each album. Put the image files that go in each album in the respective album folder. You can optionally create a plain text file called "album.txt" inside each album folder that contains the album description.
    • Flickr Slide.Show Photo Gallery Plugin - This plugin uses the Flickr API to retrieve photos from a user account on Flickr. Flickr sets are displayed as albums in the gallery. This is currently running on this site.
    • Picasa Slide.Show Photo Gallery Plugin - This plugin uses the Picasa API to retrieve photos from a user account on Google Picasa Web Albums. Albums in Picasa are displayed as albums in the gallery.

    You can now download a beta version of these plugins now on the download page. You need to have Silverlight 1.0 installed to view the gallery.

    If you try out one of these plugins, please send me feedback about any issues you run into and suggested improvements. You can use the contact form on this site or email me at kevin _at_ kevinharder.com. Once they get tested a little more I'll make any needed changes and re-release it, along with the full source code.

    Disclaimer: They are being released as a beta because I have not had time to fully test every combination of the options. Also, I have seen one instance where the Picasa plugin would not download pictures from the Picasa API for some reason, but then worked after a refresh. I had started working on a feature to automatically generate thumbnail images when using the folder version of the plugin, but removed it from this version as I need to get more info about what sizes Slide.Show uses. Use these plugins at your own risk.


    Tagged as graffiti , plugins , slide-show

    Similar Posts

    1. Live Blogging the CSDC - Part 2
    2. Now Graffiti Powered
    3. Live Blogging the CSDC - Part 3

  • First Graffiti Update Delivers Tasty New Events

    Graffiti 1.0 Service Pack 1 (a.k.a. v1.0.1), the very first update of Graffiti CMS, was publicly released this morning. Go download it and update your sites. Or install it if you haven't yet tried out Graffiti!

    You can read the full list of included changes and fixes on the official Graffiti blog. But to sum it up, we fixed just about every bug that had been reported to us since the initial release and threw in a few new features and lots of extensibility goodness.

    My favorite things in v1.0.1 are all the new events that were created to enable Graffiti plugins to add a whole lot of additional functionality to a (IMHO) elegant and flexible core. A couple of plugins I have been working on recently take advantage of the new events, such as the soon-to-be-released Blog Extensions plugin and Slide.Show Photo Gallery plugin. Here is the scoop on the new events:

    AfterInsert - DataObjectEventHandler(DataBuddyBase dataObject, EventArgs e)
    Called after an object is inserted into the database. The dataObject parameter is the object that was inserted, such as a Post or Category.
    AfterUpdate - DataObjectEventHandler(DataBuddyBase dataObject, EventArgs e)
    Called after an object is updated in the database. The dataObject parameter is the object that was inserted, such as a Post or Category.
    RenderPostBody - RenderPostBodyEventHandler(StringBuilder sb, PostEventArgs e)
    Called when the body of a post is being rendered (i.e. $post.Body). The StringBuilder param lets you append additional content to the end of the post body when it is being displayed. The PostEventArgs contains a PostRenderLocation enum that tells you whether the body is being written out to a Web page or RSS feed (or other).
    RenderHtmlHeader - RenderContentEventHandler(StringBuilder sb, EventArgs e)
    Called by the $macros.Head() method, which is used in the layout.view file to generate all of the HTML head elements needed by Graffiti, such as meta tags, javascript, etc. The StringBuilder param lets you append additional content in the HTML head section.
    RssItem** - RssPostEventHandler(XmlTextWriter writer, PostEventArgs e)
    Called while Graffiti is generating the item element in a RSS feed. By adding elements to the XmlTextWriter parameter your plugin can add additional elements to each RSS item.
    RssNamespace - RssEventHandler(XmlTextWriter writer, EventArgs e)
    Called while Graffiti is generating the namespaces in a RSS feed. The XmlTextWriter param can be used to add additional namespaces to the RSS feed. This is often needed when adding additional elements to the feed.

    ** Note: The RssItem event is not actually new, but the delegate changed in v1.0.1. In the initial Graffiti release it passed a RssToolkit RssItem in the params which wasn't very useful for adding additional (non-RSS-core) elements. So we changed how Graffiti generates RSS feeds to use a plain XmlTextWriter which gives more flexibility.

    In addition to the actual events listed above, there were two new virtual methods added to the abstract GraffitiEvent class, which is what all Graffiti plugins inherit from. These methods are EventEnabled() and EventDisabled(), and as you can probably guess they are called when a plugin is enabled or disabled in the Graffiti control panel. Your plugin can optionally use them to do any desired setup or cleanup tasks, such as writing out a file.

    We also added a few nifty utility classes to Graffiti.Core that plugins can use to do some pretty advanced stuff if needed. There's a new GRequest class that makes it easy to send HttpRequests and read the response. This is very similar to the CSRequest class that long been a part of Community Server. And there is a ManagedThreadPool class you can use to do long-running tasks (such as sending trackbacks) on a background thread.

    Have fun extending Graffiti!


    Tagged as graffiti , plugins

    Similar Posts

    1. Now Graffiti Powered
    2. Live Blogging the CSDC - Part 3
    3. Live Blogging the CSDC - Part 2

  • Now Graffiti Powered

    Last night I migrated this blog from Community Server 2007.1 to Graffiti. Although it might be hard to tell that at first glance because it is using a very similar theme.

    When the first batch of Telligenti jumped from CS to Graffiti a couple months ago, I had thought I would keep my blog on CS for the foreseeable future. Mostly because I've been working on CS for several years so it was hard to imagine not using it, and also for dogfooding new versions. When I first created this site back in 2004, it was running a combination of .Text and nGallery. Then I migrated to Community Server 1.0 and pretty much every alpha, beta, and stable version of CS since then up to v2007.1.

    But about a month ago I switched over to the Graffiti team here at Telligent, and the more I work with it the more I love how simple yet flexible it is. So I decided to migrate my blog, and started planning out tasks I wanted to complete beforehand:

    • I created a Graffiti version of my Gulf Coasting theme that I had written for CS 2007 last summer. You can download this theme for free from the Graffiti Marketplace that is integrated in the Graffiti control panel, and I'll put it up for download here soon.
    • To make Graffiti a top notch blogging platform, I created a Blog Extensions plugin that extends graffiti with a few advanced blogging features that we left out of the core to keep it simple. This plugin adds the ability to automatically send & receive trackbacks and pingbacks, sends blog update pings, adds a comments RSS feed, and support for GeoRSS. It's running on this site right now, and we are planning on releasing this as an official Telligent plugin in the near future.
    • To go along with the new ability to receive trackbacks (via plugin), I added support for importing trackbacks from CS to the CS 2007 migrator and some new Chalk collections that on the post page. These changes will be included in the upcoming Graffiti service pack release.
    • I wanted to keep a simple photo gallery on my site, and a short while ago Andrew Duthie sent us a sample Graffiti theme where he had added the very slick open source Slide.Show Silverlight photo gallery control. I was really impressed with how polished and configurable that control is, so I created another Graffiti plugin that embeds it and allows you to add a photo gallery to a post page. It supports photos uploaded to your web site or saved in Flickr. This plugin is also running on this site. I'll release it (with source code) when the aforementioned Graffiti service pack is available, as it requires some of the new events that were recently added to core.
    • I am using Rich Mercer's Permanent Redirect Graffiti plugin, which redirects requests to posts and tags using the Community Server format to the new Graffiti paths. It is working wonderfully, and combined with a few IIS redirects that I setup for my downloads and a few other urls, should hopefully prevent anyone from getting a 404 error on my site. Unless of course you just type some random url in.=)
    • Lastly, I am also using Jayme Davis's SkinnyWeb plugin to compress the output source for faster download times, and one that Scott Watermasysk wrote to display related posts inside the RSS feed.

    Now that my site is running on shiny new bits, I feel inspired to start blogging again. Expect lots of new Graffiti related posts and projects coming soon, and I'll try and mix it up with a few Community Server tips every now and then as well.


    Similar Posts

    1. Live Blogging the CSDC - Part 3
    2. Live Blogging the CSDC - Part 2
    3. The Gulf Coasting Debut

  • Three Girls

    I couple months ago I announced that my wife and I are expecting a new baby Harder in April of 2008. We already have two girls in our household - my seven year old stepdaughter Mackenzie and my 21 month old daughter Jillian.

    And so as you might have expected, the new baby is also a girl. =) We found out a few weeks ago during the second ultrasound. Mackenzie is very excited that she will have a second sister.

    Posted Dec 23 2007, 07:02 PM by Kevin Harder
    Filed under:
  • Live Blogging the CSDC - Part 3

    This is the third part in my series of live blogging the Community Server Developer Conference. This post will cover the sessions and events on Sunday, Oct 21, 2007.

     

    9:00 AM - The second day of the CSDC kicks off with Ado playing a video clip of Nicole Keith doing her best Lara Croft impersonation while playing a video game at Dave & Busters last night.

    9:04 AM - Nicole begins her presentation on the Telligent Partner program. She describes all of the benefits that partners receives and how to become a partner. She mentions that she would really like to get case studies from Telligent Partners about using Community Server and other Telligent products. Nicole also mentioned that partners can call her anytime to talk about their products and services so she is familiar with them and can recommend them to other Telligent customers.

    DSC00001 DSC00003

  • Live Blogging the CSDC - Part 2

    Note: This post continues the original Live Blogging the CSDC post which covered the morning sessions and lunch.  Afternoon sessions will be blogged in this new post.

    12:35 PM - Wyatt Preul is now on stage presenting more info about customizing Community Server 2007.

    IMG_1163

  • Live Blogging the CSDC

    I will be "live blogging" the 2007 Community Server Developers Conference today similar to how Engadget live blogs Apple Keynotes and such.

    This post will get continually updated throughout this morning with the latest news, announcements, witty observations, and hopefully a few pictures. After the lunch I will probably start a new post to live blog the afternoon sessions, and then new ones for tomorrow as well.

    Enjoy!

  • Another Upcoming Addition to the Harder Family

    UltrasoundA new baby Harder is currently under construction and is due in April of 2008. We have done one ultrasound so far and got to take home this picture, but it's too early to determine the sex. I'll post an update once we find that out in a few weeks.

    I'm getting a slight sense of déjà vu writing this, as it was right about this time two years ago when I published a very similar post announcing Jillian. I guess you could say I'm just trying to keep up with Tom and Jose. =)

    Posted Oct 16 2007, 01:22 AM by Kevin Harder
    Filed under:
  • The Pumpkins Are Invading Telligent

    Telligent keeps growing and it seems like every week for the past few months there has been at least one new face in the offices. This week there were several new faces, although of the orange persuasion: Pumpkins!

    For those who may not know, I love pumpkins. They're the perfect Fall fruit. Pumpkin coffee, pie, ice cream, carvings, etc - you can't go wrong with Pumpkin. So when Laura Gore put out a call for some Telligenti pumpkin creations I was only too happy to participate.

    Monday my girls went to the Flower Mound Pumpkin Patch and brought home some big and beautiful pumpkins. That night after a couple hours of hacking with various kitchen knifes my cannibal pumpkin was complete. There were four other very nicely carved pumpkins created by other Telligenti as well. Low res pictures taken with my PDA are below.

    Someone created ballots for voting and by some miracle my cannibal pumpkin barely won. I have no idea why - all of the others were much more intricately carved than my uneven creation. I personally loved Dana George's pirate ship design. David Penton did a great job with his Harry Potter motif. And Laura had two creative carvings using foam pumpkins so they will still be around next year: "witches brew" and "pyro".

    Oct10 069 Oct10 065 Oct10 070 Oct10 067 Oct10 066

  • Gulf Coasting theme updated for CS 2007.1

    The best looking Community Server theme (I may be slightly biased) just got better! Go download the new version and try it out.

    I've made many small improvements and added additional configuration options over the past two months. Here are the ones that I can remember:

    • Updated to include all of the theme-related fixes/changes in the Community Server 2007.1 release (the original Gulf Coasting was designed for CS 2007 SP2).
    • Now has a "wide content" mode that hides the wide right sidebar for pages that need a little more elbow room. Many of the post/thread level forum pages use this new mode, as well as some of the general pages such as logout, forgot-password, view content article, etc.
    • Sidebar colors and font styles are now completely configurable via the Theme Configuration Control Panel screen. These were hard coded in the original Gulf Coasting release due to lack of time.
    • Many other types of content are also now configurable in Theme Configuration, including the navigation menu, post info boxes, blog date boxes, blog comments, and site headers.
    • You can enable/disable each of the three main controls on the home page from the Theme Config screen: Recent Content list, Activity List, and Users Online control.
    • Blog and File post view counts should now get updated correctly.
    • Fixed indentation bug in how UL and OL lists were displayed inside of posts.
    • Improved caching logic of the activity list control on the home page.
    • Skinned the previously un-skinned feed roller page (this is not used by 99% of people, it's only for compatibility with people who are still using the CS 2.0 feed reader that was replaced with Blog Mirroring in CS 2.1).
    • Added some additional comment subscription links to the blog post comment list (email subscription button for logged in non-owner users, and extra link to comment RSS feed after you post a comment).

    If you using the original version of Gulf Coasting and are updating, go to the Theme Configuration screen after updating the files and click on Save to make sure the defaults for all of the new configuration options are saved. You may also need to do a "hard refresh" (Ctrl + F5) in your browser to force it to refresh the style sheets.

    KevinHarder.com (and my harderfamily.org site) are running the latest version of Community Server and the Gulf Coasting theme if you want to get a preview.

    Please leave a comment on this post if you have any feedback or notice anything strange. Thanks!

  • How to use the XStandard editor in CS 2007

    Community Server allows users to select what editor they would like to use for writing/editing posts and other things such as ContentParts.  This option is available when editing your user profile under the Site Options tab. The first editor choice is a plain text box, and a WYSIWYG HTML editor has always been included in Community Server as well.

    In early versions of CS the standard HTML editor was FreeTextBox. Around version 2.0 or 2.1 we switched to the tinyMCE editor, which is still used in CS 2007. In my personal opinion, they are fine for quick forum posts, but suboptimal for long blog posts like this one. I mostly use client apps like Windows Live Writer when possible.

    imageBut there is one web WYSIWYG HTML editor out there that doesn't make me want to pull my hair out because it's fast, reliable, and generates amazingly clean (and strict) XHTML markup. It is the wonderful XStandard editor.

    To be fair there are a few drawbacks with XStandard, although they are not nearly as bad as the ugly HTML-mashing markup that every other WYSIWYG html editor I have tried generates.  And there may be other awesome editors out there - I'm just saying XStandard is by far the best one I have ever used.

    Anyways, here are a few reasons why you may not want to use XStandard as your CS editor:

    • It's a plugin. You have to install an ActiveX component or plug-in (depending on the browser). Although it prompts you to install it (you don't have to hunt down the web site) and it works in IE, FireFox, Safari, and Opera on both Windows & Mac.
    • There's a free and commercial version, and some nifty features are only in the commercial one.  For example I can't add custom toolbar buttons to the free version, so any extra features like the CS content selector have to be an external button.
    • It is very strict on markup. If for some reason you still want to use obsolete HTML tags such as <font>, <blink>, etc., this isn't the editor for you.

    Still with me?  Great, then lets cover how to add XStandard as an available editor on your CS 2007 site. It's actually very easy.  Ever since v1.0, Community Server has supported custom editors via "wrappers".  A wrapper component is needed for each editor you wish to use and basically translates between the CS API and the editor's API.

    First, download the Community Server 2007 XStandard Wrapper on this web site.

     Now go to xstandard.com and download and install their XStandard editor control. That will install it for all browsers on your computer. Open the Wrapper zip file and just follow the super-simple steps in the included read_me file. You'll just have to drop the .dll file in your web site /bin folder and add a line to your communityserver.config file.

    For those 1 or 2 long-time readers, you may remember that I wrote a XStandard wrapper for CS 1.0 waaay back in the day, before I even thought about working at Telligent.  It worked pretty well, but a funny thing happened during CS 2.0 development that caused me to abandon XStandard until recently. We added tab controls to most of the CS editor pages, and I realized there is a nasty six year old Firefox bug that causes it to destroy and recreate objects (such as XStandard) when you switch tabs. This basically made XStandard in CS unusable with Firefox, and although I tried a JavaScript work-around I couldn't get it to work reliably at the time and so moved on to other personal projects.

    In CS 2007 we are using a simpler tab control that makes it easier to implement JavaScript behavior tweaks, and this week XStandard 2.0 was released, so I decided to try again. It took next-to-nothing to get it working in IE, but several hours of JavaScript trial-and-error with Firefox to work-around the aforementioned bug before I finally got it to work reliably.

    If you try this out, please leave a comment and let me know how it works for you. Especially if you run into any bugs or have a suggestion for how to improve it. If there is demand, I may create another wrapper for the Professional version of XStandard to be able to use some of the slick pro-only features for those who decide to purchase a pro license.

  • Download some hand crafted Community Server themes

    As I mentioned in my previous post, we setup a new Community Server site to showcase all of the themes submitted to the first Community Server Theming Extravaganza. Sixty CS 2007 themes were submitted and you can view and download each of them on the new themes.communityserver.org.

    There are some pretty amazing prizes being awarded to the top themes, and we need your help in determining which ones are the best. The themes are divided into three tracks, with separate prizes for each one:

    1. Customizations to existing out-of-the-box CS themes using the dynamic theming functionality in CS 2007. All changes are embedded in a single xml file that CS can export from a theme.
    2. Brand new site theme, or modification of an existing one, with changing as many as necessary.
    3. Telligent employee submissions. These are a wide variety of types - blog themes, theme config changes, and brand new site-wide themes like my Gulf Coastiing one that is being used on this site.

    Go to themes download page, click on each track, and vote for your top five favorite themes.preview If it all possible, please download and try out the themes that look interesting to you when picking your favorites.  The public voting period ends this Friday at 5 PM Central.

    And if you like Gulf Coasting and end up trying it out on your Community Server site, please let me know what you think and any improvements you can think of. I will release an updated version of it in a few weeks with improvements and fixes.

More Posts Next page »
Powered by Community Server (Commercial Edition), by Telligent Systems