Work on Blog continues I completed the data conversion code yesterday and it all seems to work fine. So I moved on to the first task in the new build – updating the Journal Management Dialog to support the new features. As the first step, I renamed the FTP Sites tab to Servers and added a type dropdown which specifies the type of server – FTP, local or one of many remote blogging server types supported by Blog. At the moment, I’ve added entries only for Blogger.com, MT and B2 (though I believe WordPress is actually the successor to B2 and so B2 might not even be in development anymore :p) as remote blogging servers but you can basically use any remote blogging server which supports the Blogger API or the MetaBlog API. I also plan to add more support for the MT API since I hear that that has evolved quite a bit.
Anyway, the Server tab has a much nicer (and less complicated) UI now since selecting the server type enables/disables the fields used by that particular server type. So for instance, the local disk option doesn’t show you anything to enter except a descriptive name – I think that should be much less confusing than the old UI :p But then again, I might be mistaken.
If you select any one of the remote blogging servers, then a whole new section opens up where you can load all the remote blogs for that server. This *has to be* done at setup time and I’m not sure how I’m going to handle people who don’t follow this step but what’ll probably end up happening is that they will not be able to define an upload site without the remote blog list being populated. I did test the loading of the remote blog list and that works too
Once I had the remote blog list working, I had to provide an option to load all the posts on each remote blog on to Blog and it seemed like a good idea to have this option on the same tab – still in the Journal Management Dialog’s Servers tab. Yeah, I know it might be crowding things a bit but functionally, it seemed to make sense to have all of this in one place.
The retrieve posts button lets you get posts for the currently selected remote blog – either just the post for the entry selected in the main UI, a specific number of posts or all the posts for that blog and then it asks you to specify which local blog to put the posts in. This way, you can transfer over all your posts from a remote blogging server and be able to publish these posts in any manner you like – or even publish to multiple servers (even remote servers) from now on. I’m still working on this bit and once I get this perfected, I should be ready to move on to modifying the Sites tab where you specify individual upload sites. This will have to be recoded to include support for remote blogging servers.
I guess it’s a good thing I wrote about how I planned to do stuff in Blog yesterday :p Because it is obvious from the comments that I’ve received so far that if I’d done things the way I’d planned to do, I’d have messed up :p I was planning to allow publishing only the current entry (or all unpublished entries) for remote blogging servers – the same way the functionality had been implemented in BlogMan. However, I see that most people would have expected Blog to behave the same way it has been behaving so far – basically, pick up all updates and publish in one go. While this is still possible with the publish all unpublished entries option, there is one catch – in *my* terminology, "unpublished" would mean an entry which has never been put on the remote server at all – if you’d put the entry on the remote server already but had edited it since then, that particular entry wouldn’t get picked up by the publish all unpublished entries option.
So, at the moment I’m trying to figure out how to implement a mechanism that would detect changes for published entries in Blog but am not so sure that I can do this since a remote blogging server implies that there could be more than one person who might have changed an entry – so the entry that you just changed might already have been changed on the server by somebody else that you gave access to … How to make sense out of all that is going to be the problem … Personally, I think I should leave that to the user’s discretion by letting them use the "Publish only the current entry" option. But even there, I’m not really sure how to do all this in a user friendly manner via the UI. Guess I’ll have to ponder on this a bit …