Supercharging HTML tables with DataTables

Prototype CPRC DataTables interfaceIn the CHSS web team we have been building web interfaces that work with large amounts of data harvested from the University’s research database (PURE). The crucial thing about these interfaces is that they are ‘display’ interfaces – there is no interactivity with the underlying database as such, no ‘writing’ of the data. The emphasis on the interfaces is on displaying the data in a tabular format, allowing text to be searched and for the display of data to be filtered and sorted by particular fields (or columns).

Using standard methods of creating a web interface that communicates with a database using something like Perl DBI or PHP PDO to build a simple display-only interface has quite a few unneccessary overheads in terms of performance and complexity – and it turns out there is a technology that can be used to construct this sort of web interface in a much more simple and lightweight way, using DataTables.

Continue reading

Pure Profiles WordPress plugin – version 1.7

A new version (1.7) of the WordPress plugin for displaying Pure Profiles is now available to download at https://bitbucket.org/gmaxwell/pure-wordpress-plugin/downloads

The WordPress pseudo-cron has been removed, meaning that it now updates the cache using a traditional cron job only. This helps prevent any confusion about when the update will take place. In addition, an authentication key (editable on your Settings page) must be sent with the call. This ensures that the API is not being called maliciously.

There are also some other improvements, such as the use of preferred names, and publications linking to DOIs.

 

WordPress plugin for Pure profiles

The University is using the Pure software to keep track of research activity. The front end for this is the Edinburgh Research Explorer, which allows you to browse the data.

Pure provides an API to the data, and several people in the University have been investigating how to extract and make use of the information. It’s been interesting to see the variety of approaches taken, and it seems that different solutions may be suitable depending on the application. We plan to make use of some of these solutions in our sites. In the HSS Web Team, we’ve been particularly keen to make the information available in WordPress. We use WordPress for several sites and wanted a plugin to give users a nice profile page, automatically generated from the golden copy.

I’ve been working on a WordPress plugin to do this, which is now at a release stage: https://bitbucket.org/gmaxwell/pure-wordpress-plugin

Development decisions

There was a consensus in the University that REST was the best way forward (Pure also provides a SOAP API). I’ve written a couple of REST APIs in the past, and used the PHP cURL library to consume them. However, we recently discovered Guzzle, a library which makes things nice and easy, and abstracts things a little from the PHP cURL library. Guzzle is going to be part of Drupal 8 core, so well worth checking out.

It’s important that the data is cached locally, both to reduce the load on the server, and to ensure fast page load times. Therefore, when the plugin is enabled, it creates several custom WordPress tables. The API is then called periodically and the data stored in these tables until the next time we want to refresh the database.

The source code is available to browse or clone on Bitbucket.

Installation

To use the plugin, you should first download the latest version (currently 1.5) from the downloads page.

You can then go into your WordPress admin area, and Plugins->Add New->Upload to upload the zip file. After installing, click to enable the plugin.

Once the plugin is enabled, you have an additional option under Settings for Pure Profiles.

settings

The first section in the Settings page is Connection Details. This is where the hostname, username and password go. It’s sensible to connect to the beta server to begin with.

connection-details

You can currently specify which people to pull out by specifying the Pure UUID, Employee ID, or a combination of both. You can also specify an organisation’s UUID, to pull out all the people associated with it (to reduce server load, it’s best to do it this way only when you actually need all of the people in that organisation). All of these should be provided as comma separated lists. The system ignores line breaks, which means you can have the UUIDs on separate lines for readability.

parameters

I’ve found the easiest way is to search the Edinburgh Research Explorer for the person you want, and then retrieve their UUID from the URL (between the brackets). It’s also a way of checking that they are actually in Pure!

The next section allows you to specify the time of the cron job to update the database. Note that this is a WordPress pseudo-cron, and is actually triggered the next time the site is accessed. For this reason, it makes sense to set up an actual cron job to call the site shortly after the scheduled WordPress cron. This ensures that the update takes place overnight, rather than being triggered in the morning when someone visits the site.

cron-appearance

There’s also an option to enable Development Mode. This calls the API on every page load. Enabling Development Mode slows the site down significantly and puts an unnecessary load on the Pure server, so it should be avoided, particularly with the live server. However, enabling it after you install the plugin and then disabling it immediately afterwards allows you to populate the database right away, rather than waiting overnight.

Under Appearance, there’s the option of whether or not to use the default stylesheet. The default stylesheet provided with the plugin gives some basic formatting, but these styles can be overridden in your theme’s stylesheet. The generated HTML has lots of classes provided, so there’s a fair amount of flexibility in how you can style the output.

Displaying the data using Shortcodes

Once the plugin has been configured in Settings, and the database has been populated, the next step is to add the shortcode to a page. The plugin adds an extra icon to TinyMCE, which brings up a dialog.

tinymce-dialog

You can then select the person to include from a dropdown list, and optionally hide sections.

tinymce-dialog2

Clicking Create Shortcode inserts the shortcode into the page.

shortcode

Then it’s just a case of saving the page, and the profile appears.

profile profile2

Note that you could have your publications or projects on separate pages, by using multiple shortcodes and hiding the appropriate sections.

Future Development

The plugin is still very much in development. There may be some fields missing, and there’s no paging of publications, for example.

Please feel free to add issues in Bitbucket, make suggestions, etc., and to use it!