Feed aggregator

Stanford Web Services Blog: Troubleshooting the Field Group 7.x-1.4 Update

Planet Drupal -

In July, 2014, the Field Group module was updated from 7.x-1.1 to 7.x-1.1 on Stanford Sites. This update has the potential to cause issues with CSS, as certain types of markup were removed from the HTML output of the page.

Background

The Field Group module allows site builders to group fields together on the back-end edit form of entities (e.g., nodes, BEANs), and on the front-end display of those entities. The latter is what was affected.

Drupalize.Me: Drupalize.Me Free Icon Package

Planet Drupal -

Are you finding yourself searching for some new icons to use on your latest project? Drupalize.Me loves helping out the Drupal community, and people in general, so for this post I thought it would be fitting to provide you with a carefully designed free icon set.

precessionmedia: How To Create A Custom Rules Action

Planet Drupal -

This post should give a quick example on how to write the code to create your own custom actions for Drupals' Rules module. Writing your own plugins for rules (events, conditions or actions) can give you enormous benefits later, when you start to reuse them throughout the site or even port them on other Drupal sites.

We will be creating an action, which will provide a hashed string. In order to create this string we need to pass some parameters to php's hash function like a source string, a list with possible algorithms to choose and an output length. These parameters will be configurable through Rules' backend. So let's dive in.

First you need to create a basic custom module in your Drupal installation. The one I have in my custom environment is called "my_module".

You don't need anything special in your "my_module.info" or "my_module.module" files, but there has to be a file called "my_module.rules.inc", which will hold the code for your rules' action. Create it and add following code to it:

<?php   /** * Implement hook_rules_action_info(). */ function my_module_rules_action_info() { return array( 'my_module_rules_action_create_hashed_string' => array( 'label' => t('Create hashed string'), 'group' => t('Custom'), 'parameter' => array( 'string' => array( 'type' => 'text', 'label' => t('String to be hashed'), 'description' => t('Enter a value for a string that will be hashed using the md5 hash-algorithm.'), ), 'length' => array( 'type' => 'integer', 'label' => t('The length of the returned string'), 'description' => t('Enter a number for the length of the hashed string that will be created.'), ), 'algorithm' => array( 'type' => 'text', 'label' => t('Algorithm'), 'description' => t('Select a hash algorithm.'), 'options list' => 'my_module_algorithm_options', 'restriction' => 'input', ), ), 'provides' => array( 'hashed_string' => array( 'type' => 'text', 'label' => t('Hashed string'), ), ), ), ); }   // A helper function to provide us with a list of algorithms function my_module_algorithm_options() { $bundles = array();   $bundles['md4'] = t('md4'); $bundles['md5'] = t('md5');   return $bundles; }   // This callback creates the hashed string by using the parameters provided through rules' UI function my_module_rules_action_create_hashed_string($string, $length, $algorithm) { if ($length <= 0) { // For anything below or equal zero lets return the default value. $string = hash('md5', $string); } else { $string = substr(hash($algorithm, $string), 0, $length); }   return array( 'hashed_string' => $string, ); }

Here we implement initially "hook_rules_action_info" and add our own action to it. Our action is an associative array keyed with the name of the callback that will return our value (in this case a hashed string). Inside it we give our action a label and put it in a group ("Custom"). The next part of this array is an associative array itself, keyed with "parameter". Inside it we describe our 3 parameters, which will be passed to the action callback. Note that the "algorithm" parameter has an entry with the key "options list" which points to a helper function ("my_module_algorithm_options") to keep the code more lean.

The last part of the array is another associative array keyed with "provides". This key tells Rules what the machine name of the provided variable is, among with giving it some additional data like type or label. You can use this provided variable in latter actions of your rule now!

The last part of the code is the action callback. Only thing to note here is that we return the whole string returned by the hash-function, when the value of $length is below or equal to 0.

Clear your cache in order for Drupal to register the code you added and the new action should appear now:

In order to see it's working I've added a "Show a message on the site"-action which shows the provided hashed string when we're looking at a node page:

That's it with this simple example! Please leave a comment if there is anything more that comes to mind. Thanks!

By dimitar on 05.08.2014

Share this: 

Great Nonprofit Marketing Jobs: Take It Forward Tuesday

Getting Attention! -

Please post your open nonprofit marketing positions here

Assistant Manager of Digital Engagement, Rubin Museum of Art (New York, NY)

Associate Director of Communications, World of Children Award (Dublin, CA)

Communications Coordinator, Urban Libraries Council
(Washington, DC)

Communications Manager, Trinity Church Foundation (Boston, MA)

Design Associate, Public Interest GRFX (Philadelphia, PA)

Development/Communications Officer, Countryside Association (Palatine, IL)

Editorial Assistant, Thomas B. Fordham Institute (Washington, DC)

Executive Director, Osterville Village Library (Osterville, MA)

Marketing & Communications Manager, Prospect Park Alliance (Brooklyn, NY)

Marketing Manager, Education Super Highway (San Francisco, CA)

Media Associate, National Abortion Federation (Washington DC)

Outreach Manager, Peninsula Open Space Trust (Bay Area, CA)

Senior Communications Officer, Robert Wood Johnson Foundation (Princeton, NJ)

Web Producer, Council on  Foundations (Arlington, VA)

Recent Opportunities

Nonprofit Marketing Jobs—July 29, 2014

P.S. Get this jobs post delivered right to your in-box every week!
Register here
for jobs + nonprofit marketing templates, tools & tips—Getting Attention blog & e-news

Cheppers blog: 7 +1 steps to plan a successful Drupal website

Planet Drupal -

According to our experience the most usual approach for clients with web development needs is to contact multiple agencies with more or less vague ideas - asking for quotes, and then selecting a choice based on price. This approach is doomed to fail for two reasons:

  • Without a precise specification of requirements, agencies will have to base their quotes entirely on guesses.
  • The client is missing out on the value that the agency could have added if they were involved in the discovery and planning as well.

Pages

Subscribe to Cruiskeen Consulting LLC aggregator