Monday 24 June 2013

The Infusion UI Options module

Last week was the first official week of coding for the GSOC. I've started writing code for the module and have written the module's help page using Drupal's hook_help() function which will probably be modified as I work on the module. I have also started working on the module's config page where the administrator can choose which version of the UIO will be displayed. The three options for this are 'Fat Panel UIO' which is the default, 'Full Page', and 'Full Page with Preview'. I've also added a setting for customizing the text for the "Show/Hide" button of the Fat Panel UIO. So far, the form for this configuration page is working properly and these settings are being saved but that's all they're doing right now.

This week, I plan to work on registering the necessary library files with the Libraries API. The Fluid Infusion Builder lets you download a package that contains all the necessary files including third party libraries that are needed for the Infusion UI Options to work. Three of these third party libraries, jQuery, jQuery UI Core, and jQuery Widgets are already included in the Drupal core. The Infusion package also includes several components and frameworks each contained in their own separate folder within this package, some of which include image files. There's also a directory that contains html files for the different UIO versions (Fat Panel, Full Page...), each of which will have to be conditionally loaded depending on the configuration the administrator has set in the config page. Also some files actually require some modification like changing the links for the script tag to point to the proper .js file. This will need to be done by the user downloading the module.

Best Practices for external libraries for Drupal dictate that users should download them and place them in the sites/all/libraries folder, a folder that is located outside of the module folder. Since the Fluid Infusion Builder downloads a package with all these different frameworks, components and libraries, the challenge here would be to come up with the most optimal way to load the necessary files for each page by using the proper Drupal hooks, figuring out which files should be defined using Libraries API's hook_libraries_info, possibly writing some custom callback functions, while making sure that setup and installation doesn't get too cumbersome for the user.

Monday 17 June 2013

Google Summer of Code

I will be participating in Google Summer of Code this year. The project that I will be working on is the Drupal Plugins for Infusion Components Project with Inclusive Design Institute. This project aims to integrate Fluid Infusion's User Interface Options into Drupal.

The UI Options improves a site's accessibility by giving users an interface that allow them to control the font size, adjust the contrast and simplify the page's layout among other things.

My project consists of two parts; the first one is writing a module for Drupal that will integrate the Infusion's UIO component into Drupal and the second part will be the creation of a Drupal theme that is optimized for this module.

I'm going to be writing this module for Drupal 7 and I will be utilizing the Libraries API for the external libraries. I also plan to add a configuration page for this module which will give site administrators the option to either have the Fat Panel UI, Full Page UI, or Full Page with Preview UI as the default interface that their users see.

The module can be used with any Drupal theme but for the second part of this project, I will be building a Drupal theme that is optimized for this module. For this, I am planning to use Zen as my base theme because it supports a lot of accessibility features.

I will be writing a lot more about my GSOC project on this blog and I will be using this blog to document my progress.