Planet Drupal

Subscribe to Planet Drupal feed
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 45 min 59 sec ago

Drupal Association News: The Future of Drupal.org Development

Sat, 25/01/2014 - 00:58

Hi everyone, if you don't know me I am Rudy Grigar (basic` on Freenode IRC). I have been a volunteer Drupal.org infrastructure maintainer since 2009. This month I started full time at the Drupal Association managing the Drupal.org infrastructure, which I am extremely excited about -- volunteer work has become my day job!

One of my first projects is to improve the development process for people interested in contributing to Drupal.org.

Categories: Elsewhere

Théodore 'nod_' Biadala: Critical gaps in Drupal core JS

Sat, 25/01/2014 - 00:10

Here are the main problems with Drupal javascript:

  1. no testing,
  2. no visible documentation.
Testing

This one is a maintainer nightmare. We refactor away and break eveything in the process. Thankfully we can't break the overlay anymore, but we have Views UI to break now! As well as various surprising components all over the place. Long story short, we need front-end testing.

There was a core conversation at the last DrupalCon prague about javascript testing where jessebeach, seutje and me talked about what was wrong and how we could get that going. The take away is that we need to find a framework to work with to set up our tests. If anyone has experience with a framework that might work with Drupal and the contrib space to write tests with, please let me know.

It really is the main pain point right now, let us know your thoughts in the javascript testing issue.

Documentation

Next big issue is documentation. It is currently non-existant for javascript. There are comments in the code, but it's just not fun to read and we can't see the whole picture. There have been many discussions and arguments about what and how to do. A few weeks ago I spend a whole sunday writing Drupal javascript with jsdoc and comming up with a JSDoc theme suitable for Drupal.

All that work ended up online at the Drupal JS API site. And it is looking pretty damn good. For example, you can see everything contained in the Drupal JS object. Ever wondered what was the list of all the Drupal.behaviors in core? Or what exactly are objects created from the Drupal.ProgressBar constructor? Of course there are lots of adjustments to make but it's a start.

Right now it's pretty much patch worthy. There is still a couple of issues that would be nice to get in for easier documentation: Split up contextual.toolbar.js and Split up ckeditor.admin.js. Once those are in I'll make the patch so we can use JSDoc to generate documentation while we wait for a Drupal API integration with JSDoc and finally get some javascript documentation on api.drupal.org.

There is still a long way to go for Drupal to become a javascript heaven. We can use all the help we can get to make that sooner rather than later.

Categories: Elsewhere

Ben's SEO Blog: Installing Google Tag Manager and Universal Analytics on your Drupal Website

Sat, 25/01/2014 - 00:07

Erik Wagner, Program Manager at Volacci, walks you through the steps of installing Google Tag Manager and Universal Analytics on your Drupal website.

Transcript:
Hey folks, this is Erik Wagner from Volacci, and today I’m going to be walking you through installing Google Tag Manager and Universal Analytics onto your Drupal website.

So to get started, I have actually loaded up Google Tag Manager. For those of you who don’t use Google tag manager yet, just go to https://www.google.com/tagmanager/. Once you’re here you are going to need to create a new account. I’m going to walk you through the steps here and just talk briefly about the concepts.

First, we need to create an account name. So, generally that’s going to be potentially your company or your brand name depending on the structure. I’m just going to name this Erik Wagner’s Website, okay. Then, you want to have a Container Name, and I’m going to call this Drupal Garden’s Website, because I actually have this installed or I'm going to install this on my Drupal Garden’s website here. I will capture my URL here and just copy and paste action, back in here paste that in, and change to HTTP. I’m going to set the time zone to Central. Quick review and everything looks good. Let’s create container. Excellent. So, now I have the code for our container. The container essentially will hold all of the tags. The container needs to be installed directly after the opening body tag on every single page of the website. So to do this, we’re gonna copy and paste this code, we're going to switch over to our Drupal Gardens website here. I am going to click on ‘Structure’ and theoretically it will load. Alright, we're going to click on ‘blocks’, we are going to create a new block, I'm going to ‘Add block’ and I am going to give this a description to call this Google Tag Manager Container. Now the code they gave us is HTML so I’m going to switch from WYSWYG into HTML here and paste that right in. I'm also going to make sure that this is selected on Full HTML, instead of Safe HTML. Although it may work with Safe HTML, I’m going to switch it up. And did that work? It did, okay.

Now I need to choose the location, now remember we want to have it right after that opening body tag. So I'm going to put it up as far as possible, the Preheader first, pretty early on. I'm going to have this on every single page. Now press 'Save'. Alright, your block is created. Now let's go double check to make sure everything worked out fine. Now I'm going to close that and go back to the home page here. Excellent, now code to be found, let's take a look at the page source here. Ah, here's our code, excellent, looks good. Cool, so our code looks good.

Back to Google Tag Manager, we need to get our Google Analytics code installed. We want to create a tag here. Alright, now that this has loaded the next step for us is actually to capture and create a new view within Google Analytics. So I'm going to switch tabs here. First step is we are actually going to create a new property, click on 'create new property.' We want to create a Universal Analytics property and call this Erik's Drupal Gardens Website. I am just going to drop my URL in here. We're going to come with an Industry category here and call this 'Computers and Electronics' and I'll go with Central time, which is where I am located. Press 'Get Tracking ID'. I am now brought to this page here, which has my tracking ID, which is what we're going to need next. I'm going to copy that tracking ID and then go over to Google Tag Manager again. I'm going to call this Universal Analytics, because we're going to install universal analytics, not this Google Analytics nonsense, though.

Paste this tracking ID in there. You'll notice we have the ability to choose a different Track Type, so it could be Page View event, Transaction, yadda yadda yadda. I'm choosing Page View. I'm not going to get into more settings or advanced settings, for the sake of time here press save. We have now created our first tag in our container.

However, before I get too far ahead of myself, I just realized I forgot something here. Let's go back into our tag here. You'll notice that it says here on the right hand side 'this tag will not be fired because it has no firing rules.' Alright, let's click this firing rules. Actually, there has already a default rule here. This tag will fire on every single page and that's what we want to do here. So, I will just click that 'All pages' and I'll press Save. And then I will save that here. Alright now let's go and let's create a new version here. Okay, so we created version number three. I am actually going to name this something a little bit more interesting and more descriptive as well “Universal Analytics Installed and Firing Rules Setup” and press 'save'. Let me press 'Publish.' And now our container tag and new tag has been pushed to the website.

Now that that is done, let's switch over to Google Analytics here, and we should be able to see, although I probably need to load. Alright now the website has loaded, I'm just going to click to a separate page here so we can see some browsing activity. Let's go back, let's take a look. Ah, look at that, one active visitor on the website. They're on the about us page. Looks like our Google Analytics installation is up and running.

Well, that's it folks! If you have any questions or is there anything else I can do to help, please let me know. My email address is erik.wagner@volacci.com. Thanks!

A walk-through of the steps necessary to install these useful tools.google tag manager, universal analytics, Planet Drupal
Categories: Elsewhere

Lin Clark: Video: DELETE requests and Cookie Authentication in Drupal 8's REST

Fri, 24/01/2014 - 23:00

You can remove content from your site using the HTTP method DELETE. Since you don't want just anyone deleting content from your site, you'll want to keep permission limited to trusted users. In this video, I'll show you how to run DELETE requests and...

Categories: Elsewhere

Drupal Association News: Drupal Association Board Meeting: January 15, 2014

Fri, 24/01/2014 - 22:46

Last week we held our first board meeting of the new year. We were really pleased to share a new staff report format featuring the KPIs and other metrics that we will be tracking in 2014 to document the impact of our work. Because board meetings are held in the middle of the month, our method going forward will be to report numbers against the plan for the month prior.

Categories: Elsewhere

Drupal core announcements: This (two) weeks in Drupal Core

Fri, 24/01/2014 - 21:56
What's new with Drupal 8?

Last week, in lieue of a This week in Drupal Core, xjm and wechick compiled a phenomenal This YEAR in Drupal Core, so here's a catch up of the last two weeks.

Happy 13th birthday, Drupal!

Drupal 1.0.0 was released on January 15th, 2001. Many software projects from that era are long forgotten by now. That we have stayed relevant and gotten stronger through 13 years of fast and chaotic evolution of the internet is, in my opinion, very impressive. Here's some highlights from the birthday:

Drupal 8 Alpha 8

For module developers who've already begun porting their modules to Drupal 8, there's a shiny new alpha8 for you to play with as of yesterday. These alphas are provided to give you something more stable to work off of than having to chase HEAD every day. If you do choose to chase HEAD though, be prepared for more volatility. For example, Move definition of menu links to hook_menu_link_defaults(), decouple key name from path, and make 'parent' explicit was a very important patch committed immediately following the alpha8 release, but requires extensive follow up changes that we are trying to resolve between now and the next alpha.

Where's Drupal 8 at in terms of release?

Last week, we fixed 7 critical issues and 11 major issues, and opened 6 criticals and 20 majors. That puts us overall at 136 release-blocking critical issues and 497 major issues.

3 beta-blocking issues were fixed last week. There are still 60 of 107 beta blockers that must be resolved and 38 change records that must be written before we can release a Drupal 8 beta.

Where can I help? Top criticals to hit this week

Each week, we check with core maintainers and contributors for the "extra critical" criticals that are blocking other work. These issues are often tough problems with a long history. If you're familiar with the problem space of one of these issues and have the time to dig in, help drive it forward by reviewing, improving, and testing its patch, and by making sure the issue's summary is up to date and any API changes are documented.

More ways to help

The Drupal 8 "meta meta", compiled by vijaycs85, is a great place to start if you want to dig your teeth into a technical problem but aren't sure where to start. Or if coding isn't your thing, there are plenty of issues tagged as Needs change notification. Writing these is a great way to keep abreast of recent changes - see more on change records to get started.

As always, if you're new to contributing to core, check out Core contribution mentoring hours. Twice per week, you can log into IRC and helpful Drupal core mentors will get you set up with answers to any of your questions, plus provide some useful issues to work on.

Notable Commits

The best of git log --after=2014-01-09 --pretty=oneline (and before alpha8) (65 commits in total):

  • #2144919 by yched, fago, effulgentsia, amateescu, tstoeckler, chx, larowlan, swentel: Allow widgets and formatters for base fields to be configured in Field UI.
  • #2020393 by dawehner, bdone, pcambra, oadaeh: Convert "Recent content" block to a View.
  • #1649780 by effulgentsia, jibran, Wim Leers, nod_, hefox, joelpittet, kaare, BarisW, sun, rbayliss, Cottser, fubhy: Remove first/last/odd/even classes in favor of CSS3 pseudo selectors.
  • #1862202 by plach, Berdir, katbailey, ParisLiakos, alexpott, chx, sun, larowlan, Gábor Hojtsy, cosmicdreams, vijaycs85, YesCT, penyaskito, andypost, Albert Volkman, joelpitett: Objectify the language system.
  • #2173719 by dawehner, tim.plunkett: Remove the fork of doctrine/common.
  • #2168333 by tim.plunkett, EclipseGc, yched, fago: Ensure custom EntityType controllers can be provided by modules.
  • #1892320 by damiankloip, linclark: Add deserialize for JSON/AJAX - now you can interact with all of Drupal's REST API via plain JSON as well as via HAL.
  • #2160735 by Cottser, aspilicious: Add hook_theme_suggestions_alter() - that completes item #1 from the API changes list of [meta] Theme system architecture changes.

You can also always check the Change records for Drupal core for the full list of Drupal 8 API changes from Drupal 7.

Drupal 8 Around the Interwebs

Blog posts about Drupal 8 and how much it's going to rock your face.

Drupal 8 in "Real Life"

Also, although DrupalCon Prague is well behind us, if you're feeling nostalgiac or if you weren't there but want to know what the vibe was like, you can watch the Drupalcon Face to Face video posted by John Desalvo.

Whew! That's a wrap!

Do you follow Drupal Planet with devotion, or keep a close eye on the Drupal event calendar, or git pull origin 8.x every morning without fail before your coffee? We're looking for more contributors to help compile these posts. You could either take a few hours once every six weeks or so to put together a whole post, or help with one section more regularly. Contact xjm if you'd like to help communicate all the interesting happenings in Drupal 8!

Categories: Elsewhere

Drupal Commerce: Greenville Grok Drupal Meet Up

Fri, 24/01/2014 - 20:36

Howdy pals. My name is Chris and I work at Commerce Guys as the R&D Engineering Manager. Did you know that three of the Commerce Guys live in Greenville, SC? Recently we were talking about the Drupal community and how we could rally a group to meet up in April during Greenville Grok.

I know what you're thinking: Not another conference! While this isn't a Drupal camp, sometimes it's good to get outside the community and be the expert at what you know and talk to experts in what they know. Grok is a small web/tech conference in Greenville, SC that I help run on the side. At Grok we talk, listen, eat and drink with world class people asking a ton of hard questions, digging into great issues, and making headway on some decent real-world solutions. This conference really is what you put into it. Bring your ideas, problems, and input and you will have a blast, learn some things, and make amazing pals. If you are hoping the answers to life will be handed to you I think you have the wrong conference.

Read More

Categories: Elsewhere

Mediacurrent: Meet David Younker

Fri, 24/01/2014 - 17:34

1.   So David, what's your role at Mediacurrent, both internally and client-related?

As a Drupal Developer, I develop features for new and existing sites, manage deployments, participate in code reviews with team members, and perform client trainings.

I also work with other developers to contribute to new and existing Drupal modules, and give knowledge shares on new technology or sharing things learned at a recent conference.

2.  We're so glad to have you! Give us an idea of what professional path brought you here.

Categories: Elsewhere

Commerce Guys: Drupal Commerce Site Spotlight: TommieCopper.com

Fri, 24/01/2014 - 15:00

We're always on the lookout for great sites built with Drupal Commerce, our truly flexible software that's changing the face of eCommerce one site at a time.

Take a look at TommieCopper.com, built by Northpoint Solutions.

Tags: Planet DrupalDrupal Commerce Spotlight
Categories: Elsewhere

KnackForge: Creating separate page.tpl.php per content type

Fri, 24/01/2014 - 13:25

Page.tpl.php:

  • Template file to display a page's output in Drupal
  • This file contains a combination of php and html tags
  • To render the content, we need to use the PHP variables. For list of available variables, see handbook page

hook_preprocess_HOOK():

Categories: Elsewhere

KnackForge: Make confirmation emails from simplenews obey newsletter settings

Fri, 24/01/2014 - 13:14

Simplenews is one of the solid Newsletter management modules for Drupal. It allows a Drupal site to have multiple newsletters at once, nodes can be sent out as newsletter to multiple recipients on a single cron run. It plays well with HTML emails as well with Editors like WYSIWYG, Drupal mail system and other contrib modules like Mime Mail. Besides these, it allows to have specific sender name and email address per newsletter.

Categories: Elsewhere

KnackForge: Using MyISAM engine for custom tables in Drupal 7

Fri, 24/01/2014 - 12:44

Drupal 7 uses InnoDB as default MySQL engine for all tables in database. Innodb is a better option for processing large volume of data. It gives good support for ACID property, however there are some cases where the InnoDB falls short of ones expectation. Some common examples includes count queries, memory use of Innodb,etc., see here to know more.

Categories: Elsewhere

Daniel Pocock: DruCall updated, Lumicall talk at FOSDEM next weekend

Fri, 24/01/2014 - 09:30

The latest version of DruCall is now pushed to the Drupal Git Repository. As described previously, this version uses JSCommunicator (which is based on the popular JsSIP) as the underlying phone framework. I would be very grateful if somebody from the Drupal community could kindly help my projects escape from the sandbox.

Try the new Drucall, free calls to mobiles running Lumicall

As a demo of the power of SIP and DruCall, you can make free calls to mobiles running Lumicall. It will also dial any number registered in ENUM.

Lumicall, the open alternative to Viber, FOSDEM 2014

I'll be giving a talk about the Lumicall project at FOSDEM 2014. The talk is at 13:00 on Sunday, 2 February in the Embedded and Mobile devroom. As space is usually limited in the devrooms and FOSDEM is a completely free event without any advance registration, please arrive early (maybe even 1 or 2 talks before mine) to get a seat.

Categories: Elsewhere

Chapter Three: Serve your local Drupal site locally to any device and design and debug in the browser

Thu, 23/01/2014 - 20:50
Want to test a website on your local machine on variety of other devices before you host it? This post from Lullabot (https://www.lullabot.com/blog/article/testing-local-drupal-sites-multipl...) explains how you can serve up a site you’re working on locally with a service called  xip.io.  Using xip.io In a nutshell, xip.io runs a custom DNS server on the public Internet. When your computer looks up a xip.io domain, the xip.io DNS server extracts the IP address from the domain and sends it back in the response. Anyone on your local network can visit the site on any device with a web browser.  Debug and debug and design in the browser Debugging and refining your local site design is then a breeze on devices running the Android OS. Simply connect your Android device to your computer while in USB debugging mode and then go to Menu>Tools>Inspect devices and select your device. Next, load the Chrome browser on your device running Android and navigate to your local site.  You will then be able to debug and modify elements on the page with the inspector tool in your desktop browser and see the results update on your mobile device in real time.  Here’s an indepth overview of the debugging process: https://developers.google.com/chrome-developer-tools/docs/remote-debugging.  The debugging process is limited to the chrome browser and is only compatible with devices running the Android OS. It’s not a complete debugging solution, but certainly a great tool to get you going in the right direction. What other tools do you like for debugging mobile sites and/or designing in the browser? Are there any similar tools for working with iOS?

Want to test a website on your local machine on variety of other devices before you host it? This post from Lullabot explains how you can serve up a site you’re working on locally with a service called  xip.io

Using xip.io

In a nutshell, xip.io runs a custom DNS server on the public Internet. When your computer looks up a xip.io domain, the xip.io DNS server extracts the IP address from the domain and sends it back in the response. Anyone on your local network can visit the site on any device with a web browser. 

Debug and design in the browser

Debugging and refining your local site design is then a breeze on devices running the Android OS. Simply connect your Android device to your computer while in USB debugging mode and then go to Menu>Tools>Inspect devices and select your device. Next, load the Chrome browser on your device running Android and navigate to your local site. 

You will then be able to debug and modify elements on the page with the inspector tool in your desktop browser and see the results update on your mobile device in real time.  Here’s an indepth overview of the debugging process: Chrome developer tools - Remote debugging

The debugging process is limited to the chrome browser and is only compatible with devices running the Android OS. It’s not a complete debugging solution, but certainly a great tool to get you going in the right direction. What other tools do you like for debugging mobile sites and/or designing in the browser? Are there any similar tools for working with iOS?

Categories: Elsewhere

There is a module for that!: Loading Facebook embeds via AJAX in a CTools modal dialog

Thu, 23/01/2014 - 18:34

oEmbed is a simple and popular protocol for embedding external media in web pages. It supports many types of content, including images, videos, and even "rich" content (i.e., HTML snippets). Unfortunately, the current Facebook embed mechanism does not work so well when the embed code is loaded dynamically on a page, e.g.

read more

Categories: Elsewhere

Tim Millwood: Deploying Drupal to heroku

Thu, 23/01/2014 - 15:41

Although not advised, it's actually possible to get Drupal up and running on Heroku.

Read the full post on Millwood Online

Categories: Elsewhere

Open Source Training: Colorbox with Drupal Fields and Videos

Thu, 23/01/2014 - 12:26

A lot of sites like to show content inside pop-ups. They are useful to allow people to browse through multiple image 

In this tutorial, we're going to show you how to use the Colorbox pop-up with Drupal.

We'll see how to display both image and video fields inside a pop-up window.

Categories: Elsewhere

Lin Clark: Video: Setting up REST Services in Drupal 8

Wed, 22/01/2014 - 23:00

With Drupal 8, you can provide REST services to interact with your site’s data, and you don’t have to rely on contrib modules to do it. This screencast is the first in a series demonstrating how to configure such services. In this one, I will show...

Categories: Elsewhere

Midwestern Mac, LLC: Debugging Varnish VCL configuration files

Wed, 22/01/2014 - 18:45

If you're a Drupal or PHP developer used to debugging or troubleshooting some code by adding a print $variable; or dpm($object); to your PHP, and then refreshing the page to see the debug message (or using XDebug, or using watchdog logging...), debugging Varnish's VCL language can be intimidating.

VCL uses C-like syntax, and is compiled when varnish starts, so you can't just modify a .vcl file and refresh to see changes or debug something. And there are only a few places where you can simply stick a debug statement. So, I'll explain four different ways I use to debug VCLs in this post (note: don't do this on a production server!):

Categories: Elsewhere

Aten Design Group: A Seamless Media Experience

Wed, 22/01/2014 - 18:07

One of the primary goals of the new CPR.org website was creating a great, seamless media experience. Part of this was the creation of a persistent audio player that worked on as many modern browsers and devices as possible. Creating this experience, though, was a bit of a process. The audio landscape is pretty scattered when you take a close look at HTML5 audio support and Flash support. So the first thing up was finding a library that let us use both types of audio to reach a wider audience.

jPlayer for HTML5 Audio

HTML5 Audio is an important step forward in bringing media to the masses. It allows browsers to natively play audio without the help of plugins, whereas Adobe Flash was the primary means for playing audio in the past. This is doubly necessary for the plethora of new devices that don’t use Adobe Flash. But HTML5 Audio isn’t exactly a silver bullet just yet. While all modern browsers support Audio, each browser supports different formats (especially when considering compressed formats like MP3 or AAC).

The player on the site is using a library called jPlayer, which provides HTML5 Audio and a Flash fallback. The change between players is transparent to site visitors and works well across the devices we tested. The site can play the audio files for stories and the audio streams that let you listen to live CPR programming anywhere you have an internet connection.

AJAX Navigation

The next issue is that if you throw an audio player on a page, and the users get excited about a link they see on the site the browser will leave the page and the audio will stop. We wanted to accomplish something more seamless, which leaves a couple options:

  1. Have an audio player that pops up in a new window
  2. Use AJAX for navigation, keeping the audio player on the page between requests

The new window approach is tried-and-true, but does present a user experience we wanted to avoid: having a separate window is confusing, especially on mobile devices. On a mobile device that would essentially become a new tab/screen and prevent the site exploration that we wanted. Desktop users would still have to deal with a separate window that may or may not be visible.

We opted to make the site use AJAX navigation and leverage HTML’s new History API. This gives us the seamless navigation that the site uses and keeps the address of site resources clean, which is not only important from an OCD standpoint but also for search engine’s and users a-like. To pull this off, we turned to the AJAX Links API (“Ajaxify Drupal with JQuery Ajax”) module. The module will take a normal Drupal site and allow you to target a set of links to work via an AJAX load instead of via normal navigation.

For the most part, the module seemed to work as needed out of the box. There were a few small changes we made and submitted back to the project as we came across issues. Many of these were feature additions, but we also ended up fixing some bugs along the way. In the end, we had diverted from the installed version quite a bit to make the functionality work with an updated jQuery, fixing bugs, and a few specifics from the site. Some of our changes included:

  • Updated to work with jQuery 1.8
  • Added “negative selector” support
  • Fixed some issues with browser history navigation (forward & back buttons)
  • Fixed targeting of links to downloadable files, mailto: links, and external links
  • Added custom callbacks for successful link navigation
  • Fixing a couple smaller issues with the module: 2135145, 2135135

Some issues were outside of the AJAX module’s control though. Other modules like reCaptcha and Webform had to be updated to submit and update via AJAX. We even wrote code to allow Polls to work via AJAX.

In the end, we hope the site encourages listeners to enjoy the programs and stories they have come to love, but also explore CPR’s stories in word and graphic form. So, sit back with your favorite device, enjoy some audio streams, and catch up on some stories you may have missed on CPR.org.

Categories: Elsewhere

Pages