The Drupal Sandbox Podcast

Episode 11 "Standout, Stickynote, Format by Content, Modmaker, Collapse Blocks, Recall Ad"

This week on the Drupal Sandbox Podcast, I will highlight seven new modules in the sandbox.

Let's get started with the first one, Standout.

This module uses a google specific link, aptly named <standout>. I blogged about this tag as well.

This project is designed to provide a simple implementation of Google's "standout" link tag; see: and

From the latter:

If your news organization breaks a big story, or publishes an extraordinary work of journalism, you can indicate this by using the standout tag. When determining whether to use this tag for your own article, consider whether that article meets the following criteria:

Your article is an original source for the story.
Your organization invested significant resources in reporting or producing the article.
The article deserves special recognition.
You haven't used standout on your own articles more than seven times in the past week.

In addition, we strongly recommend citing standout articles from other publishers when your own article draws from that standout piece of journalism. When determining whether to use this tag to cite the work of others, consider the following criteria:

The publisher's article was the original source for the story you are now reporting.
The original source invested significant resources in reporting or producing the article.
You know that the original article deserves special recognition.

If a piece draws on multiple pieces of standout work, you can use the standout tag multiple times in the header of the article. Also, citing standout articles from other publishers does not count against the limit of seven self-citations per week.

If we find sites abusing the standout tag, we may, at our discretion, either ignore that site's tags or remove the site from Google News.

Next up is the Stickynote project.

This module simply creates a block with the ability to add, delete, and edit notes. Notes are stored on a per page basis can be made visible to certain roles like any other block. All of the notes, sitewide, can be viewed from the Manage page at admin/structure/stickynote/manage.

And then Formats by Content Type.

Allows you to set a default text format per content type.

Currently the drupal 7 version of the Better Formats module does not allow the setting of the default format by content or field.

This allows such settings until the Better Formats module includes such functionality.

Depends on Better Formats

Next is Modmaker

Modmaker is intented as a developer tool, allowing developers to quickly create a module skeleton to build from. It create a module fileset from a template.

Modmaker creates a module file set (.module, .install, .info) at a specified location (eg: sites/default/modules). FIles are pre-populated with common Drupal functions like hook_menu(), from a template file set.

The version 7 template fileset contains demonstraition menus (normal, tabbed, callback) and forms (simple, dynamic and ajax). The simple form demonstraites all the common types of elements, and is a great cheet-sheet.

The base template fileset is intended at a template template. A new template set can be created from any existing template set, the base template set containst the minimum amout of code so the developer can build up a template set with their favourite functions, etc.

Our next module is the Collapse Blocks module.

Users can collapse/expand blocks or regions. (e.g. right sidebar...)

We're almost done, but I like the Linked to Node module too.

This module shows all content that references the node that is about to deleted. It only shows a table on the deletion page. This module relies on core search and will not work without it enabled.

Our final module today is the Recall Ad module.

The module adds a page with advert to the site, the advert appears after the set number of page views on the site.

In the backend the following settings (admin/config/content/recall_ad) are available:

Frequency of occurrence settings:

the number of pages viewed on the site, after that a page with advert appears
the time of page displaying before return to the last requested page (in seconds)
Page look settings

a link to the image with the logo
the width and the height of the image
the background colour
the links above and under the advert
the advert code
Compatibility notes

The module is compatible with drupal 7.x


Thanks for joining me today, and as always if you have any modules you would like highlighted, just contact me.

Episode 10 "Close2u, HybridAuth, JQuery Message Alert, Custom Contact Forms"

It is episode 10 of the Drupal Sandbox Podcast with some new modules to check out.

The first is Close2u that adds geolocation tracking for nodes and users to your site.

"Why do bird suddenly appear
Every time you are near?
Just like me, they long to be

This module uses the location API to figure out nodes (or users, or whatever) that are... you guessed it... close to you. The block does a call to the browsers' navigation.geolocation object (if it exists) and returns the location entries closest to the given coordinates. If the browser doesn't support geolocation, the user may enter an address, the address is reverse geocoded using gmap module and then proximate nodes are returned just as smoothly as Karen Carpenter sang those infamous words so very long ago.

Next up is HybridAuth which allows you to let your users login using a myriad of already existing accounts from other sites like twitter, google, facebook and many others. It simplifies the registration and login procedures for your site.

This module aims to integrate HybridAuth with Drupal so that you can allow your end-users to login and register using Twitter, Facebook, Google, Yahoo, Windows Live, MySpace, Foursquare, Gowalla, PayPal, LinkedIn, OpenID, Tumblr, Friendster, Vimeo, AOL, Flickr, and more.

HybridAuth is an open source web-based authentication and authorization solution that combines the strengths of several major social networks and Identity Providers services into one simple PHP Library.

Main Features:

HybridAuth makes it easy to authenticate users with a wide variety of well known social websites
After authentication, HybridAuth provide the connected user profile's in a rich, simple and standardized structure across all the social APIs
Been made on top of others open source third party client libraries, HybridAuth allow you to use those libraries not only to authenticates users but also for interacting with the social API client the user is connected to
The complexity of implementing identity providers authentication and authorization protocols are simplified for the developers
All transactions are completely transparent to the end user
More information:

Next, how about a jquery replacement for the standar drupal_set_message() function? Check out Jquery Message Alert

This module displays Drupal's messages as a little alert at the bottom corner. Every message sent by drupal_set_message() will be converted to a dialog alert, using jQuery Msg Alert plugin.
You can configure the time interval between then and they will reorganize themselves to be always near each other.
These alerts are actually jQuery UI dialogs, so you have a huge option of themes to customize the look and feel.

Look some screen shots.

jQuery Update
jQuery UI
First, install jQuery Update and jQuery UI modules at sites/all/modules.
After enabling them, you need to download jQuery UI 1.7 and extract it at your sites/all/libraries. You can read more info about this at README from jQuery UI module, but remember to rename the folder to only "jquery.ui".

Copy the folder to your sites/all/modules and enable jQuery Msg Alert.
Go to admin/settings/jquery_msg_alert and make sure that you have the correct path to jQuery UI 1.7. If you do, you'll see a list of themes, choose one and configure the jquery plugin options as you wish.
This module has two permissions, one to administer the settings and the other to be able to see the dialogs alerts. If your user isn't seeing these alerts, make sure he has the permission.
You can download a lot of themes at jQuery UI Themeroller.

And finally Custom Contact Forms

This module extends a core Contact Module. Contact categories are as different contact pages with an URL based on the category name (`contact/website-feedback` as an example). Every contact page can have different fields, which can be easily managed through only one additional field (something similar to the Contact Form 7 in Wordpress).

Note: This project is developed for the Drupal 7.

Episode 9 "Gpmap, Taxonomy Icon, Butterflive"

We have some new modules today for the podcast, one for displaying google maps and manipulating them with views, a new way to replace taxonomy text with images, and a third that adds tracking and real-time chat to your site.

First up is Gpmap, a simple views plugin for displaying Google Maps on your site and manipulating them with views.

Simple GoogleMap Views Plugin

Next up is Taxonomy Icon that allows you to replace the text for taxonomy term references with images.

Adds a new display format to taxonomy term references. If you select it on the manage display, an image field instance is added to the corresponding vocabulary terms. Once you edit your terms you can upload an icon that replaces the text.

And the third is Butterflive Live Tracking and Chat. If you're a Butterflive user, now you can integrate it with your Drupal site.

Butterflive is a powerful tool to help you see visitors on your website and chat with them.

The Drupal Butterflive Live tracking & chat module helps users to use Butterflive on their Drupal website easily.

Butterflive allows you :
- Real-Time Monitoring of your visitors
- Visitor Scoring to highlight the high potential prospects
- Integrated Live Chat
- Intelligent Incitement to let your visitors make the first move

After filling account information, the module displays the Butterflive tracking code on each page of the website.
Moreover, a user can create a Butterflive account in the module, without going to the Butterflive website.
This process includes account creation and validation. It's a simple and fast way to create an account and start using Butterflive right after module installation.

Thanks for listening and keep those suggestions coming.

Episode 8 "Clone Site, Commerce POS, View Field Options"

Episode 8 of the Drupal Sandbox Podcast covers three new projects in the Drupal Sandbox. One for site builders, one for Drupal Commerce users, and another Views plugin for site builders.

The first is Clone Site, which does pretty much what the name implies. It allows you to quickly clone a site. This functionality is often found in a lot of hosts cpanel and is very useful for development and testing.

From the project's page:

This module main function is to make identical copy of a selected website, including database structure, data and files .
You will need to make a new name and new database tables prefix before you clone the selected website.

Clone Site sponsored by King Saud University

Next up is Commerce POS. Drupal Commerce is really taking off. It is the best e-commerce project for Drupal 7 right now. It also is being extended and added to by a lot of contributed modules that are being created on almost a daily basis. How about turning your Drupal installation into a cash register? Then you need Commerce POS.

This project provides a Point-of-Sale interface for Drupal Commerce.

Our third project today was suggested by Joe Moroca, View Field Options. Thanks Joe!

This module creates a new field type that uses views to generate the list of available options for a field.

The benefit of this is any information that a view can query (only fields at the moment - not nodes) can be used as the option list. The field settings also require you to set a display and storage field from the view, enabling you to display a list of one field and store another. For example, You could have a view that shows a list of articles filtered by nodes the current user has flagged. You could have a select list to show all the article titles - you could then store the uid (Author uid) as the value in that field.

current issues

Autocomplete values showing as storage values and NOT saving
Storage of field settings is currently messy (In field_settings_form_alter too)
Settings form ajax, Need to populate default when there are no settings
Select lists can only be populated from single value elements from views_get_view_results() and will not show anything if there are no results for the view yet!

Don't forget to check out the Module-a-day that Andrew M. Riley releases for full-project modules and the podcast for news and current events in the Drupal community.

As always, if you have any suggestions or find a module that you would like featured here, leave a comment or use the contact button to get in touch with me.

Episode 7 "EZ Banner Rotator, Media Cmdr, Better Updater"

We have three newborn modules again today. One for banner display on your site, the second for managing media, and the third to enhance your site updating experience.

The first is a simple module for displaying rotating banners on your site, the EZ Banner Rotator project.

EZ Banner Rotator is a JQuery based advanced banner module. This provide an Image based slideshow like banner rotator for the Drupal page. This creates a block in Drupal block section which can be assigned to a page block.

The strength of the module is, highly configurable to fit any type of website.

Next up is the Media Cmdr project. I mistakenly described the Media WYSIWYG project during Episode 6 with this module. This module adds a media browser using the Media module. Sorry.

Add a new tab to Media ( module browser with an MC look&feel file manager

The last module is Better Updater.

Better Updater is a small module that provides a functionality which allows users to install new modules into subdirectories of sites/all/modules.

Allows to install new modules into existing directories inside sites/all/modules.
Better Updater maintains the specific hierarchy of modules, for instance all developer modules can go into sites/all/modules/developer or all of the conributed modules into sites/all/modules/contrib.
Make select list instead of simple textfield to choose proper subdirectory.
Expand Better Updater to install new modules in sites/ directory.
Make possibility to create new directories and install new modules there.
Better Updater needs Update module enabled.

Episode 6 "Drupal Commerce Reorder, Rainbow, Media WYSIWYG"

Welcome back, Episode 6 of the Drupal Sandbox Podcast will focus on three more brand-spankin' new modules that just popped up in the sandbox. I have a mix of module types today. One for commerce fans, one for display of content, and one for file display and media management.

Number one is Drupal Commerce Reorder. I am excited about this one because the Drupal Commerce project is awesome and any time I see a contributed module that extends it makes me happy.

From the project's page:

This module adds a new operation to Drupal Commerce orders allowing a user to create a new cart using the contents of an existing order.

Using this module adds a simple "repeat this order" function to your Drupal Commerce Store.

Tested for Drupal Commerce RC1.

Sponsored by i-KOS.

Number two is the Rainbox Module.

We've all seen the zebra stripping that are found most noticeably in odd and even lists generated by views. This module lets you extend this by adding colors. Cool!

This module concept is simple, small and specific.

It extends the concept of zebra striping, which allows odd/even alternation of styles to be applied to lists or table rows.

The Rainbow module will insert classes to allow cyclic styling of lists or table rows.

This is simple in principle, but requires experimentation to determine how to control which lists and tables it's applied to and what the size of the cycle will be in each case, e.g. a 3-colour cycle or a 7-colour full rainbow!

Feature suggestions welcome.

Limited time is available for development of this module, so co-developers/maintainers welcome.

Comparison with CSS3 nth-child selector

CSS3 defines the nth-child selector, which can achieve the same effect as this module:
li:nth-child(3n+1) { background-color: red; }
li:nth-child(3n+2) { background-color: green; }
li:nth-child(3n) { background-color: blue; }

This works great on all 'modern' browsers, but unfortunately IE 8 and below do not support this, which would cut out ~35% of users (as at Jul 2011). CSS3PIE is a great utility for emulating some useful CSS3 properties in IE, but it cannot help with CSS3 selectors.

The third module for today is the Media WYSIWYG Browser. If you've used the Media Module you might have wished you could have a file browser to select files already on your server. Well, this module gives you that. It needs a little work, but right now it opens up a terminal-looking browser window that you can select files that are already present.

Allows easy linking to Media files in the WYSIWYG link dialogs.

Congrats to the project creators for all of their hard work and thanks for listening.

Episode 5 "Honeyblock, Nice Dash, Zazzle"

Episode 5 of the Drupal Sandbox Podcast includes three new modules:

The first, Honeyblock is a security module that integrates with Project Honeypot to stop spammers, email harvesters and attackers.

An alternative implementation of Project Honeypot's HTTP Blacklist for Drupal 7

Honeyblock features have now been incorporated into httpBL

(see way below for info on legacy Drupal 6 beta version)

Key Features:

Project Honeypot Blacklist lookups for visitor IPs
Blocking of current and future requests from blacklisted IPs
Local database caching, decreases DNS lookups on repeated visit attempts
Honeypot link placement on ban page and optionally in footer
Session and cached Whitelisting
Greylisting: Intermediate blocking of medium-threat IPs, grants user access after passing a simple test
Optional Comment checking only (re-writes comments from bad IPs and bans from future visits)
Optional 3 levels of logging (Error only, Positive Lookups or Verbose)
Length of time cached visits are held are determined by configurable settings
Default Views included (see blocked and whitelisted IPs with links to their Honeypot profiles)
Basic statistics on the number of blocked visits
Can be used for Honeypot link placement only (no blocking)
Honeyblock stops reputed email harvesters, dictionary attackers, comment spammers and other
disreputable, nuisance traffic from visiting your site by using the centralized DNS blacklist at
Project Honeypot (

Honeyblock requires a free Project Honey Pot membership. Honeyblock provides fast and efficient blacklist lookups and blocks first-time malicious visitors. IPs of previously blocked visitors are stored locally and kept from returning for admin configurable periods of time, without additional lookups being required during that time. Blacklisted IPs are added to Drupal's "blocked_ips" table. Likewise, non-threatening IPs are also stored locally for configurable periods of time, during which additional DNS lookups are not required for their return visits.

Honeyblock includes optional logging on three levels: Off - (errors only), Positive Lookups (when IP's are grey or blacklisted), and Verbose (useful for testing and gaining trust).

Honeyblock also includes two default Views reports, one for blocked IPs and one for cleared IPs. You can use these instead of logging. IPs are listed along with their status, and the IP links directly to its profile in Project Honeypot, so you can quickly see where it came from and why it was blocked.

Honeyblock can also be configured to lookup IPs only for commenters when comments are placed. If commenter is found in blacklist lookup, comment is re-written (queuing for moderation is also available, depending on Drupal's core comment permissions). In the event the commenter is actually human, error messages and the re-written comment will alert and inform them as to why their comment was blocked.

Honeyblock can also place hidden Honeypot links in page footers. These make it possible for you to participate and "give back" to Project Honeypot, by catching newer nuisance IPs that may not yet be ranked as threats in Project Honeypot profiles. They find these links irresistable, and "clicking" these links reports them and their ill-intent.

* Version 6.x-1.1.beta1
* Earlier D6 version (I consider this stable as I've been using this for nearly two years)

Key Features differences from httpbl (drupal 6):

* Optional Logging of Positive Lookups (Logging works but you can turn it off if you don't want it)
* Length of time cached visits are held are determined by configurable settings.
* Default Views included (see blocked IPs with links to their Honeypot profiles)

The second project for today is the Nice Dash project that adds some improvements and simplification to the default dashboard.

This module makes the lifes of editors and webmasters a bit easier. We want to make it as easy as possible for Drupal end-users to have all the tools at a central spot. In trainings with customers it was sometimes very hard to explain how to get at the right spots to alter content. As a webmaster they can create a dashboard with all the widgets you think are needed the most.

Module sponsored by Nascom and Villa Viscom

The third project for today is Zazzle. If you don't need a full e-commerce solution, like Drupal Commerce or if you already have a Zazzle store, this module adds integration for using that service.

This project adds zazzle storebuilder to your drupal website. It does this by importing all you products from a max of 10 stores to a drupal database. From there you can display the products the way you want to.

Episode 4 "Embed Google Map" and "Lock"

This episode features two projects:

The first project, Embed Google Map:

Allows for the embeding of a Google Map in a content area.

This module looks like it seeks to allow a quick and easy way for content authors to add a google map to a content area. Perhaps this would allow someone to add a map without giving the the "Full HTML" text filter permission?

The second project, Lock:

Provide an high-level applicative locking API.

Core provides, in file a low-level locking framework for basic and technical-related maintenance operations, such as cache rebuild; This module intends to provide a high-level applicative locking API for business modules.

A good example of applicative lock would be, for example, locking the node form. If a user locked it, any other user cannot access it, but if the user that locked it wants to fetch it back from another place, another browser and session, you can let it happen.

It can also provide group locking, you can lock multiple objects under a certain group and release them by lot. Example: a user is editing a node with node references, you might want to lock referenced nodes as well to avoid other users to edit it while the parent node is being edited.

Locks are linked to user (or not, depending on how you use the API), you can control if the lock owner can bypass or not its own locks, you can control lock grouping, you can clear stalling locks easily, and user locks are linked to the user session: explicit login or logout will release user lock.

If you would like to be a guest or have a project that you would like featured here, leave a comment.

Episode 3 "Election"

The past two episodes were focused security related projects. Today, I have a more user-centric module, the Election module.

This module has the potential to be really big and useful. It looks like the original use case of the module was for a student union election, but it could easily be adapted for almost any application.

Election will be a module for Drupal 7.x providing online voting in both referendums and STV elections.

The module will be used by a large university's student union.

Features planned will include:

Nominations including the ability for administrators to approve or reject nominees.
Candidate directory including archives of candidates in historical elections. Candidates will be able to upload manifestos, videos, etc.
STV vote counting according to the ERS97 standard, or at least the ability to export an OpenSTV ballot file (.blt) at the close of voting.
Referendums: voting yes or no to a single proposal.
Eligibility rules: set up of conditions on voter eligibility using Rules API. Complex voter information can be matched in a separate database (rather than the Drupal user profiles).
The package will be trialled in a production environment in February-March 2012. A stable public release is not expected until at least that time.

Episode 2 "Sanitizer"

This episode focuses on the Sanitizer project.

Have you ever wanted to give someone a copy of your site, but not wanted to give them all of the personal and secure data contained on that site? Things like passwords, email addresses and usernames in the wrong hands could pose a serious security issue.

This project aims to solve that by sanitizing your site.

Obfuscates data in a Drupal install that could be potentially sensitive so you can give the data to someone you don't entirely trust.


Subscribe to The Drupal Sandbox Podcast