Planet Drupal

Subscribe to Planet Drupal feed - aggregated feeds in category Planet Drupal
Updated: 40 min 22 sec ago

Entity Pilot: Working with normalizers in Drupal 8

Sat, 08/11/2014 - 05:06

Entity Pilot makes extensive use of normalizers for handling dereferencing incoming content.

Normalizers are a key part of Drupal 8's serialization strategies and represent a flexible extension point for your module to interact with core APIs.

Read on to learn how your code can interact with Drupal's normalizing and denormalizing operations and influence what is output by the REST and Hal modules.

Categories: Elsewhere

Entity Pilot: Introducing Entity Pilot - Painless content staging for Drupal

Sat, 08/11/2014 - 05:06

After nine months of development, we're proud to announce Entity Pilot, a painless content-staging solution for Drupal.

Offering a flexible content deployment model that adapts your preferred workflow, Entity Pilot aims to solve deploying content once and for all.

Read on for details on how it works and our plans for future development.

Categories: Elsewhere

Paul Booker: Updating push notification page to send out messages to devices belonging to users with a given role

Sat, 08/11/2014 - 01:49
/** * Additional handler for push_notifications_mass_push_form_validate form validate. */ function mymodule_push_notifications_mass_push_form_validate($form, &$form_state) { } /** * Additional handler for push_notifications_mass_push_form_submit form submit. */ function mymodule_push_notifications_mass_push_form_submit($form, &$form_state) { $recipients = $form_state['values']['recipients']; $payload = $form_state['values']['payload']; $role = $form_state['values']['role']; $language = (isset($form_state['values']['language'])) ? $form_state['values']['language'] : false; // Send message to all iOS recipients. if (!empty($recipients['ios'])) { // Get all iOS recipients. $tokens_ios = push_notifications_get_tokens_by_role(PUSH_NOTIFICATIONS_TYPE_ID_IOS, $role, $language); if (!empty($tokens_ios)) { // Convert the payload into the correct format for APNS. $payload_apns = array('aps' => $payload); $result = push_notifications_apns_send_message($tokens_ios, $payload_apns); $dsm_type = ($result['success']) ? 'status' : 'error'; drupal_set_message($result['message'], $dsm_type); } else { drupal_set_message(t('No iOS recipients found, potentially for this language.')); } } // Send message to all Android recipients. if (!empty($recipients['android'])) { // Get all Android recipients. $tokens_android = push_notifications_get_tokens_by_role(PUSH_NOTIFICATIONS_TYPE_ID_ANDROID, $role, $language); if (!empty($tokens_android)) { // Determine which method to use for Google push notifications. switch (PUSH_NOTIFICATIONS_GOOGLE_TYPE) { case PUSH_NOTIFICATIONS_GOOGLE_TYPE_C2DM: $result = push_notifications_c2dm_send_message($tokens_android, $payload); break; case PUSH_NOTIFICATIONS_GOOGLE_TYPE_GCM: $result = push_notifications_gcm_send_message($tokens_android, $payload); break; } $dsm_type = ($result['success']) ? 'status' : 'error'; drupal_set_message($result['message'], $dsm_type); } else { drupal_set_message(t('No Android recipients found, potentially for this language.')); } } } /** * Determine all recipients of a given role from a specific device type. * * @param $type_id * Device Type ID. * @param $role * User Role. * @param $language * Language code, optional. * @param $raw * Boolean, set true to retrieve the raw query results. * * @return * Array of results, null if no entries. */ function push_notifications_get_tokens_by_role($type_id = '', $role = FALSE, $language = FALSE, $raw = FALSE) { // Make sure this type_id is supported. $valid_type_ids = array(PUSH_NOTIFICATIONS_TYPE_ID_IOS, PUSH_NOTIFICATIONS_TYPE_ID_ANDROID); if (!in_array($type_id, $valid_type_ids)) { return FALSE; } // Select all tokens for this type id and users of given user role. $query = db_select('push_notifications_tokens', 'pnt'); $query->join('users', 'u', 'pnt.uid = u.uid'); $query->join('users_roles', 'ur', 'u.uid = ur.uid'); $query->fields('pnt', array('token')); $query->condition('pnt.type', $type_id); $query->condition('ur.rid', $role); // If language code is passed, limit the results by language. if ($language) { $query->condition('pnt.language', $language); } $result = $query->execute(); // Return raw result, if needed. if ($raw) { return $result; } // Otherwise, create an array of tokens. else { $tokens = array(); foreach ($result as $record) { $tokens[] = $record->token; } return $tokens; } } /** * Implements hook_form_alter(). */ function mymodule_form_alter(&$form, &$form_state, $form_id) { if ($form_id == 'push_notifications_mass_push_form') { $result = db_select('role', 'r') ->fields('r',array('rid','name')) ->condition('name',array('administrator','anonymous user'),'NOT IN') ->execute() ->fetchAll(); $role = array(); foreach($result as $role){ $roles[$role->rid] = $role->name; } $form['role']['#title'] = "Roles"; $form['role']['#type'] = "select"; $form['role']['#options'] = $roles; $form['role']['#required'] = 1; $form['#validate'][] = 'mymodule_push_notifications_mass_push_form_validate'; unset($form['#submit']); $form['#submit'][] = 'mymodule_push_notifications_mass_push_form_submit'; } } Tags:
Categories: Elsewhere

Code Karate: How to setup a Drupal website with Bluehost

Fri, 07/11/2014 - 23:57

So let me guess: You either have a Drupal website or are going to create one and need a place to

Categories: Elsewhere

ImageX Media: Speeding up your MySQL dump/restores with Mydumper

Fri, 07/11/2014 - 23:39
Why Mydumper?

How many times in your last web development project have you had to load a mysql/mariadb database? If your answer was "too many", and you've been frustrated by how slow the process can be, this article may be for you.

Categories: Elsewhere

Appnovation Technologies: How to Use Drupal REST Services with AngularJs

Fri, 07/11/2014 - 23:20

In a previous post I showed how to use Drupal 8 RESTful services.

var switchTo5x = false;stLight.options({"publisher":"dr-75626d0b-d9b4-2fdb-6d29-1a20f61d683"});
Categories: Elsewhere

Mediacurrent: Why Drupal is the Right Fit for Higher Ed

Fri, 07/11/2014 - 21:35

After speaking to dozens of higher ed institutions over the last several years, I’m convinced now more than ever that open source technology, particularly Drupal, is the best fit for these organizations. I know I’m echoing what many in the Drupal community have observed for a while, but I’d like to describe why Drupal makes so much sense for higher ed.

Categories: Elsewhere

CMS Quick Start: Publishing Drupal 7 Content to Social Media: Part 1

Fri, 07/11/2014 - 20:55

 Streamlined workflows are important for sites of any size. Today it is very common to update your readers via multiple social sites, namely Twitter and Facebook. However, it can be tedious sometimes to update your site, then update Facebook and Twitter separately with the correct links (especially if you publish a lot of content). In this series we are going to explore different ways of pushing content to your social media platforms automatically.

read more

Categories: Elsewhere

Deeson: Using PhpStorm's Live Templates for t functions

Fri, 07/11/2014 - 18:00

At Deeson's PhpStorm is our IDE of choice. Working with PhpStorm's Live Templates can save you some valueable time. In this post I'll show you how to use Live Templates to surround strings in simple t functions in template files.

Live templates

PhpStorm’s Live Templates are chunks of code which can be quickly inserted into a file. Surround Live Templates allow you to select a piece of text and surround it with template.

Drupal's t function

It's Drupal best practice to wrap all strings in a t function - this allow the sting to be translated. In a template file this looks like:

<span><?php print t('This is good Practice'); ?></span>

On most sites there will be hundreds of these strings, so anything that can shave off time will be worthwhile.

Take a look

Here’s an example of Surround Live Templates in action. It’s quick and easy to surround a string with a simple t function.

PhpStorm Live Templates and T function


To show the Surround Live Template list on Macs use Cmd+Alt+J and if you are on a Windows machine use Ctrl+Alt+J.

Setting up Live Templates

To set up a Surround Live Template, go to Preferences > Live Templates and click the plus symbol in the top right of the window.

A Surround Live Template needs to have ‘$SELECTION$’ in it, which is replaced with the selected text. The template also need to be available in the correct contexts.

Here's one I prepared earlier...

Have a go

To set up this T string Surround Live Template, the template text needs to be:

<?php print t('$SELECTION$'); ?>

It needs to be applicable in the ‘HTML’ context.

That’s it! You should now be able to use the template. Let us know if you've got any PhpStorm tips too.

Categories: Elsewhere frontpage posts for the Drupal planet: Drupal 7.33 released

Fri, 07/11/2014 - 16:37

Drupal 7.33, a maintenance release with numerous bug fixes (no security fixes) is now available for download. See the Drupal 7.33 release notes for a full listing.

Download Drupal 7.33

Upgrading your existing Drupal 7 sites is recommended. There are no major new features in this release. For more information about the Drupal 7.x release series, consult the Drupal 7.0 release announcement.

Security information

We have a security announcement mailing list and a history of all security advisories, as well as an RSS feed with the most recent security advisories. We strongly advise Drupal administrators to sign up for the list.

Drupal 7 includes the built-in Update Manager module, which informs you about important updates to your modules and themes.

There are no security fixes in this release of Drupal core.

Bug reports

Drupal 7.x is being maintained, so given enough bug fixes (not just bug reports), more maintenance releases will be made available, according to our monthly release cycle.


Drupal 7.33 contains bug fixes and small API/feature improvements only. The full list of changes between the 7.32 and 7.33 releases can be found by reading the 7.33 release notes. A complete list of all bug fixes in the stable 7.x branch can be found in the git commit log.

Update notes

See the 7.33 release notes for details on important changes in this release.

Known issues


Front page news: Planet DrupalDrupal version: Drupal 7.x
Categories: Elsewhere

Code Karate: Drupal 7 Exclude Node Title Module

Fri, 07/11/2014 - 13:37
Episode Number: 177

Have you ever had to try to hide a title on a page in Drupal? Maybe you created a page to be your front page and don't want the Node title to show up. The Exclude Node Title module makes this situation or any other situation in which you need to hide a node title, as simple as a few clicks of the mouse.

Tags: DrupalDrupal 7Drupal Planet
Categories: Elsewhere Cracking Acquia Certified Developer - Front end Specialist Certification

Fri, 07/11/2014 - 02:46

I had a chance to try the upcoming (Drupal) Acquia Certified Developer - Front end Specialist Certification Exam. Thanks to Acquia Certification Team for allowing me to try it out.


I have been able to clear it with an 83% score. That was way beyond what I was expecting. I expected the exam to focus heavily on advanced CSS and JS and hence was not expecting a good score. But it turned out the exam gives good weightage to Drupal theming and templating and various other concepts in Drupal that gave me a fair chance to score.


The exam evaluates you on the following areas:

  • Fundamental Web Development Concepts

  • Theming Concepts

  • Sub-Theming Concepts

  • Templates

  • Template Functions

  • Layout Configuration

  • Performance

  • Security


The official exam blue print and curriculum is not released by Acquia yet. So I do not have the links here for you. They should be out soon. The exam is scheduled to be released for public on December 1st.


But for any of you taking the exam pre-release, or if you are planning to take the exam immediately after the release, here is some information for you that could help you in your preparation before the official study guide comes out.


Fundamental Web Development Concepts

There were questions about CSS, JS, Jquery. Some of the resources that could help:


CSS Selectors:




Javascript and Jquery: (The below ones are too generic. But I would recommend a full refresher of jquery and javascript if you are a backend developer attempting the certification)


Drupal + Javascript:


Drupal + CSS


Responsive Web Design:


Grid Systems:

  • A fair idea of any one of those CSS grid systems would help




Theming Concepts

You should make yourself thoroughly familiar with all the Theming and Advanced Theming chapters in The Definitive Guide to Drupal 7.



Sub- Theming Concepts


Layout Configuration Templates Template Functions:






This notes is very specific to the Front End Specialist Certification. If you are looking for Acquia Certified Developer examination, check out my previous post on Cracking Acquia Drupal Certification.


Drop in your comments below if you have any additional resources that would help in the exam preparation that I have missed above.


Categories: Elsewhere

Wim Leers: Drupal 8's render pipeline

Fri, 07/11/2014 - 00:59

In Drupal 8, we’ve significantly improved the way pages are rendered. I will explain the entire render pipeline, which will also cover:

  • render caching — blocks and entities are now render cached automatically!
  • cache tags — finally we have the cache invalidation system we’ve always needed!
  • assets — only the necessary assets are loaded anymore, thanks to asset dependencies!
  • bubbling — rather than relying on global statics that broke caching, we now correctly bubble up all attached metadata — no more frustrations!

But I will also explain what is going to be possible in Drupal 8:

  • anonymous page loads: invalidating Varnish/CDNs with perfect precision
  • authenticated page loads: not completely regenerated on every page load, but assembled from render cached parts
  • alternative render strategies, like Big Pipe

Where relevant, I’ll compare with Drupal 7, how you can write Drupal 7 code today that will be easy to upgrade to Drupal 8, and which Drupal 7 backports exist (hint: Big Pipe does exist!).

Slides: Drupal 8's render pipelineConference: DrupalCamp GhentLocation: Ghent, BelgiumDate: Nov 7 2014 - 09:30Duration: 45 minutesExtra information: 


Categories: Elsewhere

Mediacurrent: Drupal 8 Theming Update

Thu, 06/11/2014 - 22:46

This webinar is an update to Dante Taylor’s TWIG: Getting Started in Drupal 8 presentation from October 2013. The most significant change to Drupal 8 theming is the introduction of the Classy Theme, which was part of the 8.0.0-beta2 release last month. In a nutshell, Classy is a base theme for those who want to have templates with the core classes. Setting Classy as a base is simple—add the following line to the file inside the theme directory:

Categories: Elsewhere

Midwestern Mac, LLC: Preventing yourself from accidentally breaking production with Drush

Thu, 06/11/2014 - 19:51

For all the sites I maintain, I have at least a local and production environment. Some projects warrant a dev, qa, etc. as well, but for the purposes of this post, let's just assume you often run drush commands on local or development environments during development, and eventually run a similar command on production during a deployment.

What happens if, at some point, you are churning through some Drush commands, using aliases (e.g. drush @site.local break-all-the-things to break things for testing), and you accidentally enter instead of @site.local? Or what if you were doing something potentially disastrous, like deleting a database table locally so you can test a module install file, using drush sqlq to run a query?

Categories: Elsewhere

Metal Toad: ToadCast 028

Thu, 06/11/2014 - 19:05

For ToadCast 28 we have special guest Chris Bloom!

Categories: Elsewhere

Blink Reaction: Programmatically Creating a Block in Drupal 8

Thu, 06/11/2014 - 16:20

hook_block_info and hook_block_view are gone in Drupal 8. What's more: the whole paradigm of creating blocks through the hook system is replaced with the Plugin API.

Categories: Elsewhere

ERPAL: Start an online business with ERPAL Platform

Thu, 06/11/2014 - 10:51

Drupal has everything you need to start a full-featured online business. Drupal is open, free and flexible – and it provides all the components required to integrate content, commerce and community features. With just a few of the 15,000+ modules, it’s possible to build almost any web application you need. With the ERPAL Platform Drupal distribution, Drupal developers and site builders get a pre-configured Drupal installation as a starting point for flexible and open business applications. As one of our first use cases, I want to show how you can use ERPAL Platform to build your complete online business within a single Drupal installation. In this blogpost I’ll cover the overall functionality of this e-commerce use case and in one of the next blogposts I’ll show you in detail how to build your online shop, complete with all the administration features you need to manage your online business.

Business processes first

No matter whether you sell services, projects, or products; no matter whether you sell them online or offline: all business will go through the same basic steps. Starting with the first customer contact to begin the sales process, you’ll mostly be tracking leads that will be transformed into opportunities and become prospects. In the prospect status you’ll create a quote for your customer in which you offer the products and services that the customer requested. After the quote is accepted, it becomes an order (which may be different from the quote). The order confirmation is sent as a receipt to your customer. Now it depends on the payment modalities negotiated before the order as to how and when you can create one or more invoices to get paid. You may get some upfront payment with the submission of the order, after some or all products have been delivered, or once you’ve reached a certain milestone in a project or manufacturing process. So no matter what you deliver to your customer, you get paid either in advance or upon delivery, or a combination of both.

This sales process is always fundamentally the same and it’s the core functionality that ERPAL Platform provides. With Drupal Commerce entities for quotes, orders and invoices, this business process is flexible and can be extended with fields, rules and views. With these features the administrative backend for the general business process is already in place, and you can extend it as you need. Read one of the first ERPAL Platform blog posts for more details about this business process and how it’s implemented in ERPAL Platform

Integrate a Drupal Commerce storefront

Since Drupal Commerce is already integrated into ERPAL Platform, it’s easy to extend the feature set with an e-commerce storefront. At the "frontend" you sell your products to your customers. They can buy any products directly in the web from an online store that’s built on top of your business process platform. If you already know Drupal Commerce, it’s easy to extend ERPAL Platform to expose a storefront to website visitors. In this use case, the ERPAL Platform features will serve a complete administrative backend – visible only to shop administrators – for all your business processes.

Imagine we have three commerce order bundles – order, quote and invoice – to separate these entities. If a user adds a product to her cart, this is an order entity. For an order entity that’s not yet checked out, as a customer you can request a quote, which can be used to compare products and prices with other stores or to show to another party (as PDF). If the customer comes back, she can continue with the order and complete the checkout process. After the checkout is complete, the invoice is created as a separate entity and both the user and the shop administrator can access all these receipts in the same Drupal installation: no synchronization between systems needed. If a payment is made, it’s added to the invoice and changes the balance. That’s it! There you have all you need to process your business in a nutshell. If you build an e-commerce site for a start-up you may want to begin lean and without heavy integration projects. With ERPAL Platform you have all the features in one distribution to start an online business and to continue to grow it in an agile way.

In one of our next blogposts, we’ll present a step-by-step guide for building an online business based on ERPAL Platform.

In our upcomming webinar with the Commerce Guys, we will talk about open integration of Drupal Commerce and give a real use case of an ERPAL Platform project that integrates all online-business process in one platform. 

Categories: Elsewhere

Amazee Labs: Being part of the community - a non-techie perspective

Thu, 06/11/2014 - 10:19
Being part of the community - a non-techie perspective

Recently our Sitebuilder Boris shared his thoughts on the Drupal community. So I thought I’d share my thoughts on it too, but from a perspective of a non-techie!

It’s been one and a half years since I joined the Amazee Crew. Within the first 6 months only one day a week complementary to my studies in Business Administration. Yep, you’ve read that correctly, I don’t have any background in tech, not to mention open source CMS. HTML, CSS and PHP were only a couple of letters to me and people sitting behind the screen coding seemed somewhat geeky to me. I would have only been involved with Drupal if some of the fashion and beauty blogs that I read would run on Drupal.

Fascinated by the colored lines of code on the screens of our developers (who I hold dear and absolutely enjoy working with) I very much looked forward to my first DrupalCon in Prague in 2013.

Truth be told, I was quite overwhelmed by the immensity of the community. And honestly, walking into a sprint room did make me feel a bit like being in the wrong place, but I decided to join the fun and give it at try (no I did not sprint, that wouldn’t be helpful to anybody).

I attended various sessions, in some of them I could actually understand something, some of them were just way to tech for me. During the week I’ve met a lot of really nice people and I had to admit that I did the community wrong in the first place. It wasn’t all geeky and tech talk; you’d be surprised what kind of hidden talents you can find there! Singers, musicians, paragliders, you name it.

A year later my HTML, CSS and PHP skills are still bad, but I did learn a bit and can do some basic stuff by myself. I enjoyed DrupalCon Amsterdam even more and found myself hanging out with and getting to know more people of the community from all over the world.

You’ll probably never find my coding the next big module (but then never say never) but you’ll definitely find me at a Drupal event. Because what I have experienced along the way is quite similar to what Boris experienced; Drupal is way more than just an open source CMS. And the community behind it is way more than just a bunch of geeks; it’s a community whit highly versatile skilled people who certainly know how to have fun and will give you a warm welcome, no matter what your background is. I never would have thought that a non-tech girl like me would end up in an open source CMS community and actually finding her way to contribute, even if it’s not writing code. That in fact is another aspect I like about the community - the chance to be able to contribute even if you’re not able to write patches.

As for me, I’m looking forward to the next DrupalCon in Barcelona and might actually even try and check out the local Drupal User Group. 

Categories: Elsewhere Setting up CoderDojo in Portumna Galway

Thu, 06/11/2014 - 10:05
Categories: Elsewhere