Drupal

My first paid Drupal site

Over the past week I've been working on building, theming and tweaking a new Drupal site for a friend. It's my first paid (as in, with chocolate) Drupal-based website outside of the ones we maintain at work, and it was great to be able to put into practice some of the tips and tricks I've picked up over the past eight months or so.

I'm quite pleased with the amount of work that Drupal removes from creating a website (steep learning curve aside), and how flexible it is out of the box, without even beginning to look into the many modules that you can plug and play with the framework. I'd say the majority of the time spent working on the site has been walking my friend through, showing her how to add new content, link it all together and all that good stuff.

The site went live today but isn't quite polished, so I'll leave the link off for now. At least until I've had a chance to make all those last minute tweaks that inevitably don't show up until you leave the nice comfortable environment of Safari and Firefox and see the thing torn to pieces in Internet Explorer.

The importance of interoperability

When a colleague asked me today if I knew any way of converting XML to CSV, I was up for the challenge. It turned out that all she wanted to do was import event information into Google Calendar from Groove. Simple, right?

Google liking to follow standards, they allow you to import iCal feeds and even let you import CSV files from Outlook (because that's presumably the main userbase and Outlook doesn't export iCal). But try to import the XML export from Groove, and it tells you - rightly - that it's broken and it can't understand it. Admittedly it's not a format that Google says it can import, but from looking at the file, it does look very broken.

Why have an export facility in Groove that allows you to "export Calendar events for importing into another Calendar tool" when it exports in some propietary format that no other programs read? Just because it's XML doesn't necessarily mean it's interoperable. Groove doesn't even let you export as old-school CSV.

In the end it took the enabling of the "publish all events to Outlook" option, then going into Outlook to export the CSV, and only then is there a usable file that we can import into Google Calendar. It shouldn't be that difficult, should it?

I'm glad Drupal supports iCal - even if it doesn't allow for imports yet. With node_import, it at the very least allows imports of CSV calendar files.

PfP using Drupal

It was great to see yesterday that Dries Buytaert - the founder and lead of the Drupal project - had showcased one of the Drupal sites we have created at work. The Partnership for Peace Training Centers website is one of over forty that we have built using the Drupal platform.

The PfP Training Centres Website is a common endeavour between PIMS, PRIME and NATO, and is intended to demonstrate the potential for future collaboration in the Euro-Atlantic community.

Searching by location in Drupal

There have been great improvements to search in Drupal 4.7 including the ability to extend it to search content from different modules. What I'd like to do is incorporate location into the search (instead of being a separate tab as it presently is using the location.module), allowing people to type their search text, choose which node types they'd like to search and then type in the name of a place (eg a city) they'd like to search near to.

To simplify the input, the new AJAX autocomplete functionality could be used to suggest places based on the name you're typing in. The co-ordinates of this place could then be used to filter the nodes that were returned from the search and allow for the ordering of search results by distance if desired.

I'm conscious that a search screen should be as simple as possible, but think this would be a useful addition for people who wanted to search for things by location. Perhaps allowing people to type '[searchstring] near Stuttgart, Germany' would be a better way of allowing location based searching. The autocomplete could still be used for that as well, by autocompleting only the bits after a 'near' statement.

Any input from the community is welcome, including thoughts on the interface and on how the back end hooks in the search system may best be put into place.

Location-based functionality within Drupal

Having laid out last week some of the overall location-related functionality I'd like to see within Drupal, I wanted to start a proper list of areas around which I would like to see development within the Drupal community. I'll be putting effort into creating and improving many of these, and hopefully working with others who want to help as well.

I've broken down the functionality into three sections of the data flow - incoming data, internal processing and display, outgoing data and external systems. Please feel free to leave comments on which bits you'd like to see sooner rather than later, and any extra functionality that I've missed off the list.

  • Incoming data
  1. Ability to tag individual nodes in system with location information
  • by address (functionality already exists)
  • by clicking map
  • by coordinates
  • Ability to extract location information from EXIF tags in jpg images
  • Ability to automatically extract location of items from incoming feeds
    • from RSS feeds (using the geo namespace or GeoRSS implementation)
    • from KML feeds?
    • from GML feeds?
    • Internal processing and display
    1. Ability to search near location
    • by address (currently can search near zipcodes only)
    • by city/country
    • by clicking on map (or entering coordinates)
  • Listing of similaraly tagged nodes nearby
  • Mapping
    • Simple visualisation
    • Mapping nodes on top of imagery
      • Google Maps
      • Yahoo Maps
      • Maps from a GIS (eg MapServer)
    • GIS functionality
      • Point in polygon analysis (for example, to find which region a point lies in - useful for determining which country a pair of coordinates lies in, or which administrative district a point lies in)
    • Community map creation
    • Map of nodes with ability to filter by users, buddies, location, etc
    • Outgoing data
    1. Export any Drupal page as a feed (or layer) - e.g. search terms, tags, node types etc
    • RSS feeds with location imformation embedded
    • KML feeds
    • GML layers (using WFS from OGC to allow data output capabilities to be determined)
  • Ability to filter by geographic location, user, content type etc
  • Ability to export single points
    • links to maps (functionality already exists)
    • link to Google Earth placemark (complete)
    • External systems
    1. Creation of a geocoding system that can be accessed and queried by other systems (including Drupal) through a RESTful style XML interface - similar to Mikel Maron's geocoder

    updated 16th February 2006

    After the OSCMS summit

    The OSCMS summit is now over, but it's been a great week, packed full of information and activities. I've met a number of the other people interested in using Drupal for location-enabled activities, from simply tagging of content with a geographic location, to mapping those locations (and others) and actually implementing more GIS-like functionality.

    One of the things I really want to see happen (and will certainly be helping with) is making sure that we are complying to standards of geographic data sharing so that information from outside the Drupal framework can be pulled into Drupal, and information can similarly be pushed out and used by other systems - from Drupal sites (through GeoRSS feeds - or the other GeoRSS standard being proposed), to Google Earth (using KML) and also systems capable of reading in OGC-compliant feeds (probably implementing a WFS interface).

    Improving the usability and functionality of inputting geographic information is also high on my priority list, trying to get away from the largely US-centric input that is present at the moment. Of course, that's not easy when the availability of reliable and open geographic data is scarce outside of the USA.

    I'll be keeping track on here of the bits I'm working on - and others are working on - here in my blog over time.

    OSCMS Summit

    I'm lucky enough to be flying out tomorrow to go to the OSCMS Summit (that's Open Source Content Management Systems) which is being held in Vancouver this week.

    The summit will be my first chance to meet some of the large community of open source developers that support the Drupal project that much of the work I'm currently doing is based on.

    I'm particularly interested in the location aspects, how it can be improved and what new functionality can be implemented to improve the spatial awareness of sites run using Drupal. It's great to see such a large crowd of people have signed up for the geodata workshop on Wednesday so it ought to be a great opportunity to meet others interested in the same area and work together on producing some great new features.

    Pages

    Subscribe to RSS - Drupal