Elsewhere

Code Karate: Creating a Drupal 7 Entity Reference View

Planet Drupal - ven, 10/10/2014 - 14:26
Episode Number: 172

The Entity Reference module not only allows you to reference entities within your Drupal site, it also allows you to do so using a custom created entity reference view. This allows you to leverage the power of the views module to control how the entity reference selection field is displayed.

Tags: DrupalEntity ReferenceViewsDrupal 7Site BuildingDrupal Planet
Catégories: Elsewhere

Deeson: The value of Drupal mentoring at DrupalCon Amsterdam 2014

Planet Drupal - ven, 10/10/2014 - 13:09

Last week was my first time as a Drupal Core mentor at a DrupalCon event

Why does Drupal need mentors?

At DrupalCon Amsterdam, Dries mentioned in his key note that Drupal needs more people pitching in and contributing to Drupal Core. 

The Drupal community is growing, but the ratio of contributors to free loaders is getting worse. This is probably because people are struggling to get involved or don't understand which skills are needed.

To help overcome these barriers, DrupalCon events ask for people involved in Drupal Core to act as mentors.

How do you get involved?

First of all, you need to attend a mentor orientation session where you meet other mentors who share their experiences. At my orientation session, seasoned mentor Cathy Theys (YesCT) gave an excellent talk about what mentoring involves and what to expect.

Our introductions to each other were very amusing as we shared our Drupal.org usernames. Most of us felt it necessary to defend our choice of usernames with a full entomology and my personal favourite was eojthebrave (you'll have to ask him!).

What did I do as a mentor?

Last Wednesday I spent two hours triaging the issue queue, which contains issues with possible tasks suitable for novice contributors.

A novice is unlikely to complete a whole issue on their own, but there may be components of the issue, called tasks, that they can do. Tasks could include providing steps to reproduce a problem, feeding back on UX or design, taking screen shots or writing documentation. You do not always need to be a developer to contribute.

On Thursday I manned the mentor desk for a few hours. The DrupalCon events have a mentor desk manned by mentors who can advocate to delegates about contributing to Drupal Core and explain how to get involved. A key priority is to encourage delegates to attend a mentored sprint on the last day of DrupalCon, their first steps into the world of the Drupal Core community.

During the mentored sprints, more than 100 people got together to listen to a community tools presentation which covered the installation of everything you need to contribute, how to use the issue queue and comment and IRC etiquette.

Drupal 8 presentation

As a mentor, I gave a presentation to a small group of new contributors which helped them configure the tools and install Drupal 8 for the first time. For some, this was quite an achievement in itself.

Once set up with the tools, the new contributors broke up into smaller groups and selected issues to work on together with the aid of a mentor.

Critical issues

Some of the contributors I worked with looked at an issue to provide more user-friendly text on the 'Extend' section of the site. This was called 'Modules' on Drupal 7 and is where site administrators searched for modules to enable or disable them.

If the patch the contributors provided is committed, then the text they chose may appear on thousands of websites throughout the world - not bad for a short period of collaborative working!

The contributors also uncovered an issue in Drupal Core which we decided to mark as critical. Some of the new contributors were selected to have their finished patches committed directly into Drupal 8 by Drupal Core maintainer Angie Byron (webchick). Angie showed how the process of patch review and committing a patch to core works.

Après sprint

After a tiring, yet satisfying day, the mentors went to dinner together, where we discussed Drupal, development and PHPStorm.

Give it a try!

Being a mentor was a fantastic experience and I recommend it highly. I met some pretty incredible mentors and new contributors.

The Drupal community is made of a wide and varied skill base and everyone can get involved to make a difference to Drupal Core's quality.

If you've not contributed before, come along to the mentored sprint at the next DrupalCon.

If you can't wait that long, there is the Drupal Ladder which describes the small steps you can take to become a regular and useful contributor to Drupal Core.

Catégories: Elsewhere

Janez Urevc: Drupal 8 from my media perspective - update #2

Planet Drupal - ven, 10/10/2014 - 12:20

It's been a while since my last post and with DrupalCon Amsterdam behind us it seems a good timing for another update.

Catégories: Elsewhere

Purencool Website Developer: How to set-up Compass on Ubuntu 14.04 for Omega 4 Development

Planet Drupal - ven, 10/10/2014 - 11:34

I had some issues installing Compass on Ubuntu 14.04 this is what I did and the errors I came up against that gave me a large headache. I hope others can benefit from what I learnt. This assumes that you have already created a sub-theme in Omega4. I installed the following packages initially:

Tags Drupal Planet Web Development SASS
Catégories: Elsewhere

Mario Lang

Planet Debian - ven, 10/10/2014 - 11:00
GStreamer and the command-line?

I was recently looking for a command-line client for SoundCloud. soundCLI on GitHub appeared to be what I want. But wait, there is a problem with its implementation.

soundCLI uses gstreamer's playbin2 to play audio data. But that apparently requires $DISPLAY to be set.

So no, soundCLI is not a command-line client. It is a command-line client for X11 users.

Ahem.

A bit of research on Stackoverflow and related sites did not tell me how to modify playbin2 usage such that it does not require X11, while it is only playing AUDIO data.

What the HECK is going on here. Are the graphical people trying to silently overtake the world? Is Linux becoming the new Windows? The distinction between CLI and GUI has become more and more blurry in the recent years. I fear for my beloved platform.

If you know how to patch soundCLI to not require X11, please let me know. My current work-around is to replace all gstreamer usage with a simple "system" call to vlc. That works, but it does not give me comment display (since soundCLI doesn't know the playback position anymore) and hangs after every track, requiring me to enter "quit" manually on the VLC prompt. I really would have liked to use mplayer2 for this, but alas, mplayer2 does not support https. Oh well, why would it need to, in this day and age where everyone seems to switch to https by default. Oh well.

Catégories: Elsewhere

Drupal Association News: Doei Doei, DrupalCon Amsterdam

Planet Drupal - ven, 10/10/2014 - 10:49

DrupalCon Amsterdam has wrapped up, and now that we’re over the jet lag, it’s time to look back on one of the most successful DrupalCons to date. DrupalCon Amsterdam was the largest European DrupalCon yet, by far. Just to knock your socks off, here are some numbers:

  • More than 2,300 attendees showed up to 120 sessions and nearly 100 BoFs
  • 115 attendees showed up to the community summit and the business summit
  • 146 training attendees, 400 trivia night attendees, and 400 Friday sprinters made the week a success
  • …and through it all, we ate 1,200 stroopwafels.

The fun extended to more than just the conference — with 211 transit passes and 56 bike rentals, attendees from over 64 countries were able to enjoy all the city of Amsterdam had to offer. What a success!

As with any DrupalCon, DrupalCon Amsterdam wouldn’t have been a success without lots and lots of help from our passionate volunteers. We’d like to take a moment to send out a big THANK YOU to all of our track chairs and summit organizers:

  • Pedro Cambra - Coding and Development
  • Théodore Biadala - Core Conversations
  • Steve Parks - Drupal Business
  • Lewis Nyman and Ruben Teijeiro - Frontend
  • Michael Schmid - Site Building
  • Bastian Widmer - DevOps
  • Cathy Theys, Ruben Teijeiro, Gábor Hojtsy and the Core Mentors - Sprints
  • Adam Hill and Ieva Uzule - Onsite Volunteer Coordinators
  • Social Media - Baris Wanschers
  • Emma Jane Westby - Business Summit
  • Morten Birch and Addison Berry - Community Summit

We also appreciate everything our core mentors did to make DrupalCon Amsterdam a hit — and it’s thanks to lots of hard work from our passionate community members that Drupal 8 is in Beta!

We hope you had as fun and exiting a time in Amsterdam as we did. For those of us who weren’t able to make it, and even for those who were, you can relive the fun on the flickr stream, or catch any number of great sessions on the Drupal Association YouTube channel.  And remember to mark your calendar for DrupalCon Barcelona in September 2015. See you there! Below is Holly Ross' set of slides from the Amsterdam closing session. 

DrupalCon Amsterdam Closing Session from DrupalAssociation

Image credit to Pedro Lozano on Flickr.

Catégories: Elsewhere

Martin Pitt: Running autopkgtests in the cloud

Planet Debian - ven, 10/10/2014 - 09:25

It’s great to see more and more packages in Debian and Ubuntu getting an autopkgtest. We now have some 660, and soon we’ll get another ~ 4000 from Perl and Ruby packages. Both Debian’s and Ubuntu’s autopkgtest runner machines are currently static manually maintained machines which ache under their load. They just don’t scale, and at least Ubuntu’s runners need quite a lot of handholding.

This needs to stop. To quote Tim “The Tool Man” Taylor: We need more power!. This is a perfect scenario to be put into a cloud with ephemeral VMs to run tests in. They scale, there is no privacy problem, and maintenance of the hosts then becomes Somebody Else’s Problem.

I recently brushed up autopkgtest’s ssh runner and the Nova setup script. Previous versions didn’t support “revert” yet, tests that leaked processes caused eternal hangs due to the way ssh works, and image building wasn’t yet supported well. autopkgtest 3.5.5 now gets along with all that and has a dozen other fixes. So let me introduce the Binford 6100 variable horsepower DEP-8 engine python-coated cloud test runner!

While you can run adt-run from your home machine, it’s probably better to do it from an “autopkgtest controller” cloud instance as well. Testing frequently requires copying files and built package trees between testbeds and controller, which can be quite slow from home and causes timeouts. The requirements on the “controller” node are quite low — you either need the autopkgtest 3.5.5 package installed (possibly a backport to Debian Wheezy or Ubuntu 12.04 LTS), or run it from git ($checkout_dir/run-from-checkout), and other than that you only need python-novaclient and the usual $OS_* OpenStack environment variables. This controller can also stay running all the time and easily drive dozens of tests in parallel as all the real testing action is happening in the ephemeral testbed VMs.

The most important preparation step to do for testing in the cloud is quite similar to testing in local VMs with adt-virt-qemu: You need to have suitable VM images. They should be generated every day so that the tests don’t have to spend 15 minutes on dist-upgrading and rebooting, and they should be minimized. They should also be as similar as possible to local VM images that you get with vmdebootstrap or adt-buildvm-ubuntu-cloud, so that test failures can easily be reproduced by developers on their local machines.

To address this, I refactored the entire knowledge how to turn a pristine “default” vmdebootstrap or cloud image into an autopkgtest environment into a single /usr/share/autopkgtest/adt-setup-vm script. adt-buildvm-ubuntu-cloud now uses this, you shold use it with vmdebootstrap --customize (see adt-virt-qemu(1) for details), and it’s also easy to run for building custom cloud images: Essentially, you pick a suitable “pristine” image, nova boot an instance from it, run adt-setup-vm through ssh, then turn this into a new adt specific "daily" image with nova image-create. I wrote a little script create-nova-adt-image.sh to demonstrate and automate this, the only parameter that it gets is the name of the pristine image to base on. This was tested on Canonical's Bootstack cloud, so it might need some adjustments on other clouds.

Thus something like this should be run daily (pick the base images from nova image-list):

$ ./create-nova-adt-image.sh ubuntu-utopic-14.10-beta2-amd64-server-20140923-disk1.img $ ./create-nova-adt-image.sh ubuntu-utopic-14.10-beta2-i386-server-20140923-disk1.img

This will generate adt-utopic-i386 and adt-utopic-amd64.

Now I picked 34 packages that have the "most demanding" tests, in terms of package size (libreoffice), kernel requirements (udisks2, network manager), reboot requirement (systemd), lots of brittle tests (glib2.0, mysql-5.5), or needing Xvfb (shotwell):

$ cat pkglist apport apt aptdaemon apache2 autopilot-gtk autopkgtest binutils chromium-browser cups dbus gem2deb glib-networking glib2.0 gvfs kcalc keystone libnih libreoffice lintian lxc mysql-5.5 network-manager nut ofono-phonesim php5 postgresql-9.4 python3.4 sbuild shotwell systemd-shim ubiquity ubuntu-drivers-common udisks2 upstart

Now I created a shell wrapper around adt-run to work with the parallel tool and to keep the invocation in a single place:

$ cat adt-run-nova #!/bin/sh -e adt-run "$1" -U -o "/tmp/adt-$1" --- ssh -s nova -- \ --flavor m1.small --image adt-utopic-i386 \ --net-id 415a0839-eb05-4e7a-907c-413c657f4bf5

Please see /usr/share/autopkgtest/ssh-setup/nova for details of the arguments. --image is the image name we built above, --flavor should use a suitable memory/disk size from nova flavor-list and --net-id is an "always need this constant to select a non-default network" option that is specific to Canonical Bootstack.

Finally, let' run the packages from above with using ten VMs in parallel:

parallel -j 10 ./adt-run-nova -- $(< pkglist)

After a few iterations of bug fixing there are now only two failures left which are due to flaky tests, the infrastructure now seems to hold up fairly well.

Meanwhile, Vincent Ladeuil is working full steam to integrate this new stuff into the next-gen Ubuntu CI engine, so that we can soon deploy and run all this fully automatically in production.

Happy testing!

Catégories: Elsewhere

Ingo Juergensmann: Buildd.Net: update-buildd.net v0.99 released

Planet Debian - jeu, 09/10/2014 - 21:29

Buildd.Net offers a buildd centric view to autobuilder network such as previously Debians autobuilder network or nowadays the autobuilder network of debian-ports.org. The policy of debian-ports.org requires a GPG key for the buildd to sign packages for upload that is valid for 1 year. Buildd admins are usually lazy people. At least they are running a buildd instead of building those packages all manually. Being a lazy buildd admin it might happen that you miss to renew your GPG key, which will render your buildd unable to upload newly built packages.

When participating in Buildd.Net you need to run update-buildd.net, a small script that transmits some statistical data about your package building. I added now a GPG key expiry check to that script that will warn the buildd admin by mail and text on the Buildd.Net arch status page, such as for m68k. So, either your client updates automatically to the new version or you can download the script yourself.

Kategorie: DebianTags: BuilddNetDebianSoftware 
Catégories: Elsewhere

Lisandro Dami&aacute;n Nicanor P&eacute;rez Meyer: Qt 5.3.2 in Wheezy-backports: just a few hours away

Planet Debian - jeu, 09/10/2014 - 20:50
In more or less 24 hs most of Qt 5.3.2 will be available as a Wheezy backport. That means that if you are using Debian stable you don't need to wait for Jessie: just wait a few hours, add wheezy-backports's repo to your sources.list and get it :)

The rest of Qt 5 will arrive soon.

This is the same version that will be shipped in Jessie, so whatever you develop with it will work with the next Debian stable release :)

Don't forget: you better start porting your Qt4 apps to Qt5!
Catégories: Elsewhere

Blair Wadman: How to backup your Drupal database to Amazon S3

Planet Drupal - jeu, 09/10/2014 - 20:31

We all know the importance of backing up the database for each Drupal site we build and maintain. But it is not uncommon for this to be put on the back burner and never actually implemented. Fortunately, it is really easy to setup with a combination of Amazon S3 and Backup and Migrate. In this tutorial, you will be shown how to set this up so that it runs on auto pilot.

Tags: Drupal Site buildingPlanet Drupal
Catégories: Elsewhere

Tyler Frankenstein: Drupal Commerce Order Owner Autocomplete with E-mail Address

Planet Drupal - jeu, 09/10/2014 - 19:59

When creating an order as an admin in Drupal Commerce, we can specify the user that owns the order if we know their user name. This works well in most cases, but to be able to search by the user's e-mail address would be helpful too. I've had a few requests from clients for this feature. So without further ado, let's ado it!

/** * Implements hook_menu(). */ function my_module_menu() { $items = array(); $items['my_module/commerce/order-owner/autocomplete'] = array( 'page callback' => 'my_module_commerce_order_owner_autocomplete', 'access arguments' => array('configure order settings'), 'type' => MENU_CALLBACK ); return $items; } /** * Implements hook_form_FORM_ID_alter(). */ function my_module_form_commerce_order_ui_order_form_alter(&$form, &$form_state, $form_id) { // Attach our custom autocomplete to the order owner name input so we can // search by e-mail address. $form['user']['name']['#autocomplete_path'] = 'my_module/commerce/order-owner/autocomplete'; } /** * Queries results for the commerce order owner autocomplete. */ function my_module_commerce_order_owner_autocomplete($string) { $matches = array(); $query = db_select('users', 'u'); $query ->fields('u', array('uid', 'name', 'mail')) ->condition(db_or() ->condition("u.mail", '%' . db_like($string) . '%', 'LIKE') ->condition("u.name", '%' . db_like($string) . '%', 'LIKE') ) ->condition('u.uid', 0, '<>') ->range(0, 10); $results = $query->execute(); foreach ($results as $row) { $key = "$row->name"; $matches[$key] = "$row->name - $row->mail ($row->uid)"; } drupal_json_output($matches); }

Catégories: Elsewhere

Chris Lamb: London—Paris—London 2014

Planet Debian - jeu, 09/10/2014 - 19:19

I've wanted to ride to Paris for a few months now but was put off by the hassle of taking a bicycle on the Eurostar, as well having a somewhat philosophical and aesthetic objection to taking a bike on a train in the first place. After all, if one already is possession of a mode of transport...

My itinerary was straightforward:

Friday 12h00
London → Newhaven
Friday 23h00
Newhaven → Dieppe (ferry)
Saturday 04h00
Dieppe → Paris
Saturday 23h00
(Sleep)
Sunday 07h00
Paris → Dieppe
Sunday 18h00
Dieppe → Newhaven (ferry)
Sunday 21h00
Newhaven → Peacehaven
Sunday 23h00
(Sleep)
Monday 07h00
Peacehaven → London
Packing list
  • Ferry ticket (unnecessary in the end)
  • Passport
  • Credit card
  • USB A male → mini A male (charges phone, battery pack & front light)
  • USB A male → mini B male (for charging or connecting to Edge 800)
  • USB mini A male → OTG A female (for Edge 800 uploads via phone)
  • Waterproof pocket
  • Sleeping mask for ferry (probably unnecessary)
  • Battery pack

Not pictured:

  • Castelli Gabba Windstopper short-sleeve jersey
  • Castelli Velocissimo bib shorts
  • Castelli Nanoflex arm warmers
  • Castelli Squadra rain jacket
  • Garmin Edge 800
  • Phone
  • Front light: Lezyne Macro Drive
  • Rear lights: Knog Gekko (on bike), Knog Frog (on helmet)
  • Inner tubes (X2), Lezyne multitool, tire levers, hand pump

Day 1: London → Newhaven

Tower Bridge.

Many attempt to go from Tower Bridge → Eiffel Tower (or Marble Arch → Arc de Triomphe) in less than 24 hours. This would have been quite easy if I had left a couple of hours later.

Fanny's Farm Shop, Merstham, Surrey.

Plumpton, East Sussex.

West Pier, Newhaven.

Leaving Newhaven on the 23h00 ferry.


Day 2: Dieppe → Paris

Beauvoir-en-Lyons, Haute-Normandie.

Sérifontaine, Picardie.

La tour Eiffel, Paris.

Champ de Mars, Paris.

Pont de Grenelle, Paris.


Day 3: Paris → Dieppe

Cormeilles-en-Vexin, Île-de-France.

Gisors, Haute-Normandie.

Paris-Brest, Gisors, Haute-Normandie.

Wikipedia: This pastry was created in 1910 to commemorate the Paris–Brest bicycle race begun in 1891. Its circular shape is representative of a wheel. It became popular with riders on the Paris–Brest cycle race, partly because of its energizing high caloric value, and is now found in pâtisseries all over France.

Gournay-en-Bray, Haute-Normandie.

Début de l'Avenue Verte, Forges-les-Eaux, Haute-Normandie.

Mesnières-en-Bray, Haute-Normandie.

Dieppe, Haute-Normandie.

«La Mancha».


Day 4: Peacehaven → London

Peacehaven, East Sussex.

Highbrook, West Sussex.

London weather.


Summary
Distance
588.17 km
Pedal turns
~105,795

My only non-obvious tips would be to buy a disposable blanket in the Newhaven Co-Op to help you sleep on the ferry. In addition, as the food on the ferry is good enough you only need to get to the terminal one hour before departure, avoiding time on your feet in unpicturesque Newhaven.

In terms of equipment, I would bring another light for the 4AM start on «L'Avenue Verte» if only as a backup and I would have checked I could arrive at my Parisian Airbnb earlier in the day - I had to hang around for five hours in the heat before I could have a shower, properly relax, etc.

I had been warned not to rely on being able to obtain enough water en route on Sunday but whilst most shops were indeed shut I saw a bustling tabac or boulangerie at least once every 20km so one would never be truly stuck.

Route-wise, the surburbs of London and Paris are both equally dismal and unmotivating and there is about 50km of rather uninspiring and exposed riding on the D915.

However, «L'Avenue Verte» is fantastic even in the pitch-black and the entire trip was worth it simply for the silent and beautiful Normandy sunrise. I will be back.

Catégories: Elsewhere

Freelock : Why tech work is so hard to estimate

Planet Drupal - jeu, 09/10/2014 - 17:57

"Hey, since the upgrade, I can't use the power edit feature anymore!" came the request. Ok. There have been several different upgrades over the past few months. The menu editor module has been updated. The server has been upgraded. The site is in heavy use, so there are lots of content changes.

EstimatingProject ManagementDrupal Planet
Catégories: Elsewhere

Vasily Yaremchuk: Turn off maintenance mode on separate paths in Drupal 7

Planet Drupal - jeu, 09/10/2014 - 16:32

We have faced with the problem. We use Ajax Login/Register module but put site in Maintenance mode.

But we need to have Sign up ability. Ajax Register module show Sign up form in popup, content is requested from "ajax_register/register". But in maintenance mode we can see Maintenance page response...

But fortunately we have hook_menu_site_status_alter. Thus we can turn off Maintenance mode in our module on separate path:

<?php
function ajax_register_fix_menu_site_status_alter(&$menu_site_status, $path) {
  if ($menu_site_status == MENU_SITE_OFFLINE && user_is_anonymous() && $path == 'ajax_register/register') {
    $menu_site_status = MENU_SITE_ONLINE;
  }
}
?>

This is content of ajax_register_fix.module custom module.

Blog tags:
Catégories: Elsewhere

Deeson: Drupal's Picture element and Image Field Focus for mobile images

Planet Drupal - jeu, 09/10/2014 - 15:51

We know people get really frustrated when images viewed on desktop look great but are hard to see on a mobile device.

In this blog, I’ll show you how to use the Picture and Image Field Focus modules to crop images for display on desktop, tablet and mobile and make the lives of content creators easier.

It means goodbye to preparing several images for optimum display across all devices and hello to just one image upload and smart image crop control.

The new Drupal Picture element

Picture is a new(ish) HTML5 element which allows different images to be displayed for different devices and also for retina displays. Handy.

This means mobile users no longer have to download images optimised for desktop display when the image is displayed on a much smaller screen. 

How Picture works

Picture considers the way images are served and the needs of content creators, including:

  • Size: Images are often served optimised for desktop and then mobile devices reduce them to size. This means that mobiles are often downloading more data than they need to.
  • Art direction: For some images it would be better if the image was cropped for mobile display. This is called the ‘art direction’ use case, and I recommend reading this article over here
  • Image quality: Using <picture> images can be served at a higher pixel density, which means higher quality images can be served for retina devices.
Picture's HTML and browser support

The picture element at its most basic looks like this:

<picture>  <source media="(max-width: 480px)" srcset="mobile.jpg"> <source media="(max-width: 768px)" srcset="tablet.jpg">  <img src="fallback.jpg" alt=""> </picture>

You can see it's been spec'd out by the responsive images community group http://responsiveimages.org/.  It's supported in Chrome 38, implemented in Firefox 33, and can be tested by tweaking FireFox’s settings.  Microsoft is considering supporting it, and Safari hasn’t confirmed their status yet.

If a browser doesn’t support the Picture element, the HTML degrades gracefully and the fallback <img> is displayed. There is also a well-supported, and tested, polyfill - picture fill - on GitHub.

The Picture module

The good news is that Drupal already has a Picture module which includes the picture fill js library. It has a dependency on the breakpoints module.

To set up Picture, you need to setup your breakpoints first (/admin/config/media/breakpoints).  Each breakpoint needs a name and a media query. I've set up my breakpoints to match the Bootstrap breakpoints. For example, I've got a Mobile breakpoint with a media query '(max-width: 480px)' - see image to the left.

Once that's all sorted, you need to setup images styles for each breakpoint.

To setup Picture, install the module and go to /admin/config/media/picture/list. This page lists all the picture displays you have setup. Click 'Add', select the breakpoints you want this picture display to use, and select an image style for each breakpoint - see left.

Once you have a picture display set up, you'll be able to select picture as a display field formatter for an image field. You can then display different images for mobile, tablet and desktop!

Image Field Focus

Some people worry that the art direction use case places a large administrative burden on content editors, as it means preparing several images instead of just one.

You can avoid this if you use Image Field Focus - content admins select a focus area and a crop area for each image and image field focus does the rest, which is a lot less hassle all round.

In the example I've cropped out the person stood on the right, which is represented in the outer selected area. The inner selected area has become the focus area. 

Essentially, any image created will be from within the crop area and will always contain the focus area. The focus area will be, where possible, in the middle of the picture.

In our example, the paragliders in the air might be to small to see if the full image was scaled down to be displayed on mobile. I’ve added a focus area around one of the paragliders so when a mobile optimised image is created it will be a close up image of this area.

To setup image field focus you'll need to enable it for each field you want to use it on.

Defining images styles

When you define your images styles, you need to add the Focus Scale And Crop style - see left. I've set up three distinct image styles, one for each breakpoint, see image below. If you want to more detail on setting up images styles, read this.

What do you think?

Hopefully you can see that the Picture and Image Field Focus modules work together as a great combination!  

We asked our marketing and content team what they thought and they said, “This is literally the best thing since sliced bread.” 

Catégories: Elsewhere

Jan Wagner: Updated Monitoring Plugins Version is coming soon

Planet Debian - jeu, 09/10/2014 - 11:46

Three months ago version 2.0 of Monitoring Plugins was released. Since then many changes were integrated. You can find a quick overview in the upstream NEWS.

Now it's time to move forward and a new release is expected soon. It would be very welcome if you could give the latest source snapshot a try. You also can give the Debian packages a go and grab them from my 'unstable' and 'wheezy-backports' repositories at http://ftp.cyconet.org/. Right after the stable release, the new packages will be uploaded into Debian unstable. The whole packaging changes can be observed in the changelog.

Feedback is very appreciated via Issue tracker or the Monitoring Plugins Development Mailinglist.

Update: The official call for testing is available.

Catégories: Elsewhere

Clemens Tolboom: The state of ReST in Headless Drupal 8

Planet Drupal - jeu, 09/10/2014 - 10:37

One of the Drupal 8 initiatives was to make "headless" Drupal core work out of the box. Drupal now has a ReST API.

This allows you to use all the Drupal 8 features to edit your content but present the content not only on a Drupal frontend but also on mobile apps or anything else that can work with JSON data.

Catégories: Elsewhere

Cocomore: Field collections exposed

Planet Drupal - jeu, 09/10/2014 - 10:03

Field collections is a nice contributed module that extends the default Drupal entity functionality by creating a new entity field that can be composed by other fields. With this module we solve problems like creating complex entities where we want to store multiple different values into one single field.

read more

Catégories: Elsewhere

Deeson: Drupal Panels setup for clean markup

Planet Drupal - jeu, 09/10/2014 - 10:00

It’s a fact that you get a hideous amount of markup with the Panels module straight out-of-the box, even if you use it to create a single column page without changing any of the options.

This is because each layer of the rendering process brings its own markup to the party. 

Panels and layers

Panels are structured in layers, which is what makes them so flexible for any given requirement. Within a layout sit the regions and inside these are panes.

Each of these panes are configurable by providing CTools plugins. You can render panes and regions with style plugins and the layout with a layout plugin.

Each of these layers have their own wrapping markup and things can get excessive quickly. 

Help is at hand

Luckily for us, there’s quite a lot of help for Panels straight out-of the-box. Firstly, there’s a ‘naked’ style plugin which drops all the wrapping markup and can be applied to your panes and regions. While this is a good start, the layout will still need markup specific to the site’s theme.

You can override each Panels layout as it’s presented by a theme hook. It’s literally as simple as copying a template to your site. 

For most simple panels, it’s just a case of copying the panels-onecol.tpl.php file into the theme and customising it. 

If you’re using a CSS framework or grid system (we use Bootstrap at Deeson) then this file is where you can re-work the markup to be specific to the system you are using.

My Panels page

Keeping all this in mind, I’ve created a simple Panels page which lists recent content to authenticated users. It’s built from a bean, a view (with an access rule) and some custom markup. It uses the one col layout.

Here’s my oh-so-simple panels-onecol.tpl.php file in my theme:

<div class="panel-display panel-1col clearfix" <?php if (!empty($css_id)) { print "id=\"$css_id\""; } ?>> <?php print $content['middle']; ?> </div>

And here’s the markup you’ll get when viewed as an unauthenticated user:

<section id="block-system-main"> <div class="panel-display panel-1col clearfix"> <div class="panel-pane pane-block pane-bean-recent-content-header"> <h2 class="pane-title">Recent content</h2> <div typeof="" about="/block/recent-content-header" class="entity entity-bean bean-editable clearfix">[...]</div> </div> <div class="panel-pane pane-custom pane-1"> <p>Login or create an account to view this content...</p> </div> </div> </section>

Let me know what you think!

Catégories: Elsewhere

LevelTen Interactive: Why Organizations Struggle With Web Analytics

Planet Drupal - mer, 08/10/2014 - 23:42

Web analytics software is being used in most organizations for basic analysis and reporting, but provides little (if any) actionable insight into marketing efforts. Many people login to analytics searching for “the magic answers to their business problems”, but they don’t have specific goals, or challenges they want to analyze/address. Then they become overwhelmed with the amount of information they receive. They throw their hands in the air and concede defeat.... Read more

Catégories: Elsewhere

Pages

Subscribe to jfhovinne agrégateur - Elsewhere