Greg and Simon are talking about an extension to BlogThis. I agree that BlogThis as-is is fairly limited and could definitely use some improvements. For instance, I had been considering writing a w.bloggar plugin but quickly realized that it needed a configuration setting (the install directory of w.bloggar). Unfortunately, IBlogThis does not provide any hooks for configuration of the plugin. Greg's proposal would fix this issue.
public interface IBlogThisEx : IBlogThis { // Name of plug-in, suitable for display to a user string DisplayName; // Display configuration dialog to user, if applicable void Configure(IWin32Window parent); // Return true if an editing GUI will be shown to the // user when BlogItem is called. In this case, the // aggregator will not display its own editing UI. bool HasEditingGUI(); }
I do have some questions about this proposed implementation though:
HasEditingGUI
confuses me - if this returns false, the aggregator needs to display its own editing UI? But what should that be allowed to edit, and what should be passed to the plugin once editing is complete? One of the cool things about BlogThis (for me anyway) is that the aggregator does not need to include any kind of weblog-posting UI anymore, but instead can rely on the plugin to provide this if needed. Handling HasEditingGUI
takes away this advantage by forcing aggregator-writers to now include an editor.
Configure()
would be called by the aggregator from some kind of menu-option. Not all plugins will need to be configured though, so an extra boolean property hasConfiguration
may be useful to inform the aggregator whether or not to show this menu-option.
Control.ControlCollection
?) instead of a IWin32Window
.
Configure()
function first when "BlogThis" is selected.
IBlogThisEx
from IBlogThis
, you're breaking the Liskov Substitution Principle. Plugins that need prior configuration will not work in aggregators that only support IBlogThis
as they will try to call IBlogThis.BlogItem()
without allowing the user to first configure the plugin.
IBlogThis
is still new and therefore not many aggregators support it or plugins are written for it, we do still have the option of starting over with a new and improved version. It shouldn't be too hard to get the existing code-base upgraded to the new version.
IRssHandler
instead. Plugins should be able to do more than just post to a weblog.
IBlogThisEx (or maybe IRssHandler)
Luke makes some valid points about the interface Greg, Simon and I have been discussing. I do agree with HasEditingGUI to a point. This allows the aggregator to maintain a consistent user interface throughout. However, I see this is perhaps...
Posting interface (IBlogExtension?)
More on the interface extension that Luke, Simon, Matt, and I have been talking about...
Luke, I am working on a configuration platform that allows plugins to manage their own configuration through a ApplicationRegistry type settings provider. I'm in final unit testing of the second release.
With this..
You could use auto discovery for the plugins, and then the plug-in can access the applications settings registry to allow custom configuration of the plug-in through a key that the plug-in it self manages.
Add on top of that an IPropertySheet passed to the main application from the plug-in and you can now dynamicly intergrate "unknown" plugins into the applications properties/configuration.
IBlogExtension
Apparently the Blogger folks were first to the BlogThis name by about 4 years, so BlogThis is now IBlogExtension, and the interface definition has be revised based on earlier discussions between
Greg, Luke, Matt, and I. The revised assembly is avail...
IBlogExtension and NewsGator
I'm pleased to announce that NewsGator 1.2 will include full support for IBlogExtension, and we will simultaneously release plug-ins for most major weblog publishing tools...