Planet Drupal

Subscribe to Planet Drupal feed - aggregated feeds in category Planet Drupal
Updated: 15 hours 22 min ago

Third & Grove: Drupal GovCon: Day 1 Recap

20 July 2016 - 11:03am
Drupal GovCon: Day 1 Recap abby Wed, 07/20/2016 - 14:03
Categories: Drupal

Into my Galaxy: GSoC’ 16: Port Search Configuration module; coding week #8

20 July 2016 - 10:50am

I have been porting Search Configuration module from Drupal 7 to 8 as part of this year’ s Google Summer of Code (GSoC). This summer program is an opportunity for university students to work on projects connected with open source organisation. I have been really lucky to be a part of this initiative. I could explore deep of more technologies, version control systems as part of my project in Drupal. This gives young students a platform where they are assigned mentors who are experts and experienced in various software.

Last week, I could learn some of the Drupal concepts as part of this module port. So, let me begin with the Drupal 7 property. The t function translates a string to the current language or to a given language. This makes the strings used in Drupal translatable. This generally takes up the format:

t($string, array $args = array(), array $options = array());

Here, $string is the string containing the English text to get translated.

$args: An associative array of replacements to make after translation.

$options: An optional associative array of additional options, with the following elements: lang code and context.

This t function has got some alteration in the Drupal 8. It has been replaced by the $this->t() by making use of \Drupal\Core\StringTranslation\StringTranslationTrait. 

 The translatable markup returns a string as a result of this process.

Another important aspect which I dealt was the roles. This is an important feature  for any module as it  deals with the security constraints of the module. Roles are often manipulated to grant certain permissions. What we have to do is that, initially, load the particular role to be manipulated and then provide the permission which is to be granted.

$role = Role::load('access page.'); $role->grantPermission('access comments'); $role->save();

These role functions help us to load the roles and manipulate the permissions assigned to it quite easily. Thus, turns out to be really helpful in dealing with permissions.

I have been also dealing with writing the simple test for my module. In one of my previous blog posts, I have introduced the PHP unit testing.  The simple test tests the web oriented functionality of the module. It needs a good understanding of the behaviour of the module to write an effective test. Tests are often really important to identify the flaws of a functionality and to correct it accordingly. I will be writing the simple tests for my module in the coming days. I will be sharing you the concept of this mode of testing in my next blog post.

Stay tuned for further developments on this blog post.




Categories: Drupal

Drupal core announcements: Drupal 8.2.0 will be released October 5; beta begins week of August 3

20 July 2016 - 9:23am

Drupal 8.2.0, the next planned minor release of Drupal 8, is scheduled for Wednesday, October 5, 2016. Minor releases include new features, usability improvements, and backwards-compatible API improvements. Here's what this means for core patches.

Drupal 8.2.0-beta1 will be released the week of August 3
  • In preparation for the minor release, Drupal 8.2.x will enter a beta phase the week of August 3.
  • Developers and site owners can begin testing the beta.
  • The 8.3.x branch of core will be created, and future feature and API additions will be targeted against that branch instead of 8.2.x.
  • All outstanding issues filed against 8.2.x will be automatically migrated to 8.3.x once it is opened.
  • During the beta phase, core issues will be committed according to the following policy:
    1. Most issues that are allowed for patch releases will be committed to all supported minor branches (8.1.x, 8.2.x, and 8.3.x) for the duration of the beta. Drupal 8.0.x is not supported anymore and changes are not made to that branch.
    2. Issues specific to added 8.2.x functionality, or disruptive changes that have a positive impact outweighing their disruption, will be committed to both 8.2.x and 8.3.x. (Such issues can be moved back to the 8.2.x branch after the automatic migration.)
    3. Most issues that are only allowed in minor releases will be committed to 8.3.x only.
Drupal 8.2.0-rc1 will be released September 7
  • The release candidate phase for the minor release begins on September 7, and starting on that date, the 8.2.x branch will be subject to release candidate restrictions, with only critical fixes and certain other limited changes allowed.
  • September 7 is also the final scheduled patch release window for 8.1.x, and it will not receive further development or support after that date aside from its final security release window on September 21.
  • All outstanding issues filed against 8.1.x will be automatically migrated to 8.2.x after the final 8.1.x patch release. Bug reports after September 7 should be targeted against the 8.2.x branch.
  • Minor versions may include changes to user interfaces, translatable strings, themes, internal APIs like render arrays and controllers, etc. (See the Drupal 8 backwards compatibility and internal API policy for details.) Developers and site owners should test the release candidate to prepare for these changes.
  • 8.3.x will remain open for new development during the 8.2.x release candidate phase.

See the Drupal core release cycle overview, Allowed changes during the Drupal 8 release cycle, and Drupal 8 backwards compatibility and internal API policy for more information.

As a reminder, we have until the start of the beta to add great new features to Drupal 8.2.x. Stabilizing experimental modules (such as Migrate and BigPipe), new features for workflows, and usability and bugfixes are all priorities for 8.2.0. Help with these feature requests and initiatives now for a great Drupal 8.2.0!

Categories: Drupal

ThinkShout: Drupal 8 Routing Tricks for Better Admin URLs

20 July 2016 - 7:30am

We recently launched a new case tracker for foster ed youth designed to improve their educational outcomes in partnership with The National Center for Youth Law (NCYL). The web application replaces their existing platform, Goal Book, which lacked the flexibility they needed to meet their requirements. A web application differs from a website in that a website primarily provides content where a web application primarily provides tools.

The project presented us with an opportunity to do extensive custom development with our favorite new platform, Drupal 8. D8’s many developer experience improvements, including standardized object-oriented development methods, allowed us to meet NCYL’s requirements efficiently and with a level of quality that would have been more difficult on Drupal 7. In addition, we were able to accelerate the release of RedHen CRM on Drupal 8, which lives at the heart of the application managing all of the contacts, organizations, and relationships.

To enhance the utility of the application, we made an early decision to customize every URL a user would interact with. As most of the functionality would revolve around nodes, we wanted to make sure we avoided URLs like /node/256/edit that don’t give the user any indication of which part of the application they’re using.


If you wanted to customize URLs in Drupal 7, you could use the Pathauto module. You can still do that in Drupal 8, but D8’s routing system can be coaxed into doing something similar. It works on admin pages, too, which was perfect for NCYL’s needs.

Overriding Existing Node Paths

As an example, let’s say you have a node type specifically for storing information about schools: a School Node. The standard admin path for adding a School Node would be something like this:


But, add a custom module with route configuration and you can have this:


For simplicity, we’ll call our module school.module. The directory structure looks like this:

modules/ school/ school.module school.routing.yml

The route configuration sits inside school.routing.yml and looks like this:

school.add: path: '/school/add' defaults: _controller: '\Drupal\node\Controller\NodeController::add' _title: 'Add School' node_type: 'school' requirements: _node_add_access: 'node:school'

Line by line:


This is the name of the route. Route names should be unique and usually start with the name of your module.

path: '/school/add'

The path the route points to. This is the part that comes after your site’s base URL.

_controller: '\Drupal\node\Controller\NodeController::add'

This tells the route to use the NodeController, provided by the Node module. No need for a custom controller here.

_title: 'Add School'

This sets the page title of the node add form.

_node_add_access: 'node:school'

This is an access handler that ensures the user has permission to add a node of type “school.”

Providing a custom path to edit School Nodes is even easier:

school.edit: path: '/school/{node}/edit' defaults: _entity_form: 'node.edit' requirements: node: \d+ _entity_access: 'node.update'

We no longer need to tell the route which controller to use or what type of node we’re using. Drupal 8’s Entity API figures it out using the node ID passed in the URL.

Line by line again:

path: '/school/{node}/edit'

The path now contains a placeholder, {node}, which represents the node ID in the URL.

_entity_form: 'node.edit'

The form we want to use to edit the node.

node: \d+

Some validation to ensure the URL contains the right data type for a node ID. By specifying the regular expression pattern \d+, we are telling Drupal to only use this route when {node} is one or more digits. The route will match a URL like /school/32/edit, but will not match /school/lincoln-high/edit.

_entity_access: 'node.update'

An access handler, ensuring the user has permission to update this node. No need to specify the node type, as we did when adding a node.

Finally, a route for viewing the node:

school.view: path: '/school/{node}' defaults: _controller: '\Drupal\node\Controller\NodeViewController::view' requirements: node: \d+ _entity_access: 'node.view'

Very similar to the node edit route, just with a different path and controller.

For a more thorough explanation of routes and route options not covered here, check out the official docs.

Custom Controllers

What if you want to provide a custom controller for adding a node and still take advantage of Drupal’s permissions system? Routes can do that, too.

Let’s introduce a Teacher Node and an accompanying module.

modules/ school/ teacher/ src/ Controller/ TeacherController.php teacher.module teacher.routing.yml

teacher.routing.yml looks like this:

teacher.add: path: '/teacher/add' defaults: _controller: '\Drupal\teacher\Controller\TeacherController::addTeacher' _title: 'Add Teacher' node_type: 'teacher' requirements: _node_add_access: 'node:teacher'

Very similar to the route we used to add School Nodes, but with a custom controller.

TeacherController.php looks like this:

<?php namespace Drupal\teacher\Controller; use Drupal\node\NodeTypeInterface; class TeacherController extends ControllerBase { public function addTeacher(NodeTypeInterface $node_type) { } }

The addTeacher function is where you would add your custom code for adding Teacher Nodes.

That’s how you can use core Drupal 8 functionality to make your Drupal admin pages a little more user friendly.

Categories: Drupal Looking for translation teams to test the User Guide translation process

20 July 2016 - 2:02am

There has been some amazing work on a User Guide for Drupal 8 for about a year now, and the English version is in pretty good shape -- it's in the stage now of copy editing and image refinement, and it will find its home under To start the translation process off, we need to figure out a translation workflow that will make sense for translation teams. It doesn't make sense to use the same workflow as is used on for the short strings that are part of Drupal and contributed modules, themes, and distributions (see for details) -- the guide is about 100 pages of formatted text prose, not a bunch of short strings.

We are looking for one or two teams initially to start using a proposed process for translation and provide honest feedback to improve the flow. This will help get the guide translated to as many languages as possible eventually.

More information and contact details at

News tags: D8MI newsDrupal planetSite news
Categories: Drupal

Don't Panic: A blog about Drupal: Adding language id to the body class in Drupal 8

20 July 2016 - 12:06am

When I started making sites with Drupal 8 I missed a special body class that I sometime need for theming as well as other times, and that's the language body class. When making multilingual sites this comes in handy sometimes. For Drupal 7 this was made possible by the Internationalization (i18n) module, but since that module has been moved into core in Drupal (source) that special body-class-adding-thingamajig seems to have vanished.

After facing the need of language id when making this site I started to search for a solution, but came up with very few answers. When I solved it I thought I could make a short entry to spread the knowledge.

My needs

Basically, I had two needs for the language class to be added to my theme. 

  1. I wanted to hide some of the meny items depending on which language the content was presented in. (I later solved this in another way in my theme, but that was the initial need for a body class representing the current language.)
  2. I have two different RSS-feeds, one for posts in English and one for posts in Swedish. To make it work 100%, the path to the feed needed the language id as well. This was the latter need for me, and also the need that made it to the final site.
The theme

The themes I've used for Drupal 8 haven't had the language flag/path, but some themes may have implemented it, so if you have the path in the body class then you probably don't need to read this.

The example I'm going to show you is from the the Bootstrap Clean Blog, which I use for this site, and I will show you the code for adding the language id to it.

The files

In the theme folder of Bootstrap Clean Blog you need to locate two files:

  • bootstrap_clean_blog.theme, which is in the root of the theme folder called bootstrap_clean_blog and
  • html.html.twig which is located in the templates folder.

In bootstrap_clean_blog.theme (or any other .theme-file you might have in the theme you're using/developing) add the following code snippet to it:

function bootstrap_clean_blog_preprocess_html(&$variables) { $language = \Drupal::languageManager()->getCurrentLanguage()->getId(); $variables['language'] = $language; }

If you're using a different theme than Bootstrap Clean Blog, the name of the theme-file is something like XYZ.theme, where XYZ is the name (lowercase with underscores) of the theme. For example, if you're using the Pixture Reloaded theme, the theme-file is called pixture_reloaded.theme.

The code above calls for the language by getCurrentLanguage() and assigns the value to the variable $language. After that the value of $language is assigned to the global variable array $variables['language'].
You could shorten this down to

function bootstrap_clean_blog_preprocess_html(&$variables) { $variables['language'] = \Drupal::languageManager()->getCurrentLanguage()->getId(); }

but I wrote it on two separate rows to make it more clear. The shorter code snippet is quite allright, though, and you can use that in your .theme-file.

Next up: The TWIG-file

Allright, so far we've collected the language and stored it in a global variable. Now it's time to make it visible on the webpage, to print it. This is done via TWIG, a fast and secure template engine that Drupal 8 started using. To print the $variables['language'] you write the following "twig code" in your template where you want it to be printed.

{{ language }}

So, in my example, if we want to print it in the body class, I open up the template html.html.twig in the templates folder of the theme and search for the line where the body is set. It looks like this:

<body{{ attributes.addClass(body_classes) }}>

It prints the following HTML when rendered in a browser:

<body class="user-logged-in path-frontpage">

Though, we can't just add {{ language }} to the body tag since it won't be a part of the {{ attributes.addClass(body_classes) }}. Those are set a couple of lines up, but it's easy to fix it. They look like this:

{% set body_classes = [ logged_in ? 'user-logged-in', not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class, node_type ? 'node--type-' ~ node_type|clean_class, ] %}

In i similar way we add:

language ? 'lang-' ~ language|clean_class,

so the final result looks like this:

{% set body_classes = [ logged_in ? 'user-logged-in', not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class, node_type ? 'node--type-' ~ node_type|clean_class, language ? 'lang-' ~ language|clean_class, ] %}

Now comes the thing that's very important. After saving your theme-files, you must clear cache for the changes to appear. Click Configuration > Performance > Clear all cache. Then reload the page and check the source code of it et voilà - it works and the source code looks like this:

<body class="user-logged-in path-frontpage lang-en">

That's that. You can now use the class lang-en to distinguish your English pages and on your pages in another language it might look something like this:

<body class="user-logged-in path-node node--type-article lang-sv">

You can also use {{ language }} anywhere else, for example is you have the same need as I, to make a link language-dependant: 

<a href="/{{ language }}/feed">RSS</a>

which gives you the following complete HTML

<a href="/sv/feed">RSS</a>


<a href="/en/feed">RSS</a>

if the visitor is on the English part of the site.

Hope this helped you in some way. Happy drupaling!

Categories: Drupal

Miloš Bovan: GSoC ‘16 - Week #9: Mailhandler report

19 July 2016 - 11:13pm
GSoC ‘16 - Week #9: Mailhandler report

During the 8th week of Google Summer of Code 2016, we have started with adding support for posting comments via email. After getting the feedback from my mentors, there was some space to improve proposed solution. The suggestions were accepted and briefly explained below.

Comments in a submodule

As comments are supported through new handler plugin (MailhandlerComment), we decided to move it into a submodule - mailhandler_d8_comment. Following this approach, we can avoid too many dependencies on the main module. The submodule features: Inmail config entity that represents the handler, the plugin class and the related test coverage.

Configurable referenced entity type

With configurable referenced entity type of processed comments, we can support not only node entities but all the other “commentable” entities. In my opinion, this is a nice feature for site administrators in case they want to allow posting comments (for their articles or custom entities) as easy enough as sending an email.

Strict validation

Validation is the important topic in software development in general. In Drupal 8, there is an API made specifically for entity validation - Entity Validation API. It is recommended to use it before saving an entity. However, entity validation does not work as expected in a case of creating comments via API. The referenced entity ID and its bundle were not validated which required us to find a different approach. To accomplish this, we had to implement custom validation checks. They consist of:

  • Entity type validation - entity type is “commentable”

  • Referenced entity ID validation - referenced entity with provided ID actually exists

  • Bundle validation - identified entity bundle supports comments

Last week, besides the improvements made on the comment feature, I was working on the demo module improvements. The pull request has been submitted on Github and available for review. This module serves as an example module to show features of Mailhandler. It creates a sample “Mailhandler” content type (with a body field) and a new user with permissions to add content for “Mailhandler” content type and post comments. The GPG key field of this user was populated  with a sample key (both public and private GPG keys were added to the module) as well. Since last week, the example messages - sample comment and PGP clear-signed, MIME and MIME HTML emails are part of the demo module too. By enabling mailhandler_d8_demo, exploring Mailhandler features becomes very straightforward.

Drupal 8 module demo: Mailhandler from Milos Bovan on Vimeo.

Also, the demo module adds a sample article attached to the front page. The idea is to have a descriptive article about Mailhandler features. Its content will be extended during the “documentation week”. Next week, I will be working on improving overall user experience and user interface of Mailhandler.



Milos Wed, 07/20/2016 - 08:13 Tags Open source Google Summer of Code Drupal Drupal Planet Add new comment
Categories: Drupal

DrupalCon News: Six Trainings Announced to Level Up your Drupal Skills

19 July 2016 - 2:58pm

This is the first European DrupalCon since Drupal 8 was launched and we are excited to offer six solid trainings that will really help level up your skills. There is a little something for everyone with trainings that span job functions and skill levels.  Check out the training courses that we will be offer ong 26 September from 9:00-17:00 at DrupalCon Dublin.  

Categories: Drupal

GVSO Blog: [Social API] Creating a Social Auth implementer #2 - Routes and Network Plugin

19 July 2016 - 1:31pm
[Social API] Creating a Social Auth implementer #2 - Routes and Network Plugin

In the last post of this series, we started declaring our module information ( and its dependencies through a composer.json file. In this post, we will move on and start working on the routing, settings form, and Settings Manager.


Now that we have let Drupal about our module and its dependencies, it is time to define our routes. In the case of our Social Auth Google module, we'll need the following social_auth_google.routing.yml file

gvso Tue, 07/19/2016 - 16:31 Tags Drupal Drupal Planet Social API
Categories: Drupal

GVSO Blog: [Social API] Creating a Social Auth implementer #1 - kicking off

19 July 2016 - 1:00pm
[Social API] Creating a Social Auth implementer #1 - kicking off

In the last few months we have been working on the Social API project which tries to harmonize Social Networking functionality in Drupal. This project is divided in four main components which are:

gvso Tue, 07/19/2016 - 16:00 Tags Drupal Drupal Planet Social API
Categories: Drupal

LevelTen Interactive: Get a Free Website Valuation at the ROW Roadshow!

19 July 2016 - 11:55am

By now, you may have heard that we’re putting on a show: the ROW Roadshow, to be exact!

ROW stands for Results Oriented Websites, and it means just what it says. We think that all of our clients – and everyone in the United States! – should have a meaningful web presence, with a website that produces real results and helps them grow their company.

The ROW Roadshow is our way of taking that

...Read more
Categories: Drupal

Cheeky Monkey Media: Behat with Drupal - Tutorial

19 July 2016 - 9:08am
Behat with Drupal - Tutorial Anonymous (not verified) Tue, 07/19/2016 - 16:08

On our first day as interns at Cheeky Monkey, we (Jared and Jordan) were given the task of exploring the somewhat uncharted waters of using Behat, an open source BDD (Behavior-driven development) testing framework, with Drupal 7.


Why BDD Testing?

We all know that testing is important, but why do we bother with “BDD” testing?

Behavior-driven development testing is exactly what it sounds like, testing the behavior of the site. This makes the tests very different than say a unit test.

Categories: Drupal

Acquia Developer Center Blog: Drupal 8 Tutorials for Beginners

19 July 2016 - 8:22am

Maybe you are already grokking Drupal 8's new configuration management system; maybe you've already absorbed D8's embrace of object-oriented code.

But that doesn't mean you should scoff at easy on-ramp introductions to Drupal 8. Solid overviews of Drupal 8 can be tremendously valuable when you're working on a team that includes non-technical members. They also come in handy when you are advocating in-house for D8 adoption.

Tags: acquia drupal planet
Categories: Drupal

Zivtech: How to Use SQL-Dump and SCP

19 July 2016 - 6:15am

It’s been almost six months since I started at Zivtech as a Junior Developer, and I could never fit everything I’ve learned into one blog post. That said, one of the best things I’ve learned is how to compress my database and copy it across servers. These two commands are drush sql-dump and scp. If you’re unfamiliar with Drush, you can find some background information here.

I learned how to use drush sql-dump while using Probo.CI, which is our internally-developed continuous integration tool. Since we use Probo.CI on every project, I had to figure out how to set it up. Essentially, you have to upload your database to the Probo.CI app to ensure that your new feature will work on the site when you’re testing your pull request. Here is some helpful documentation. The fourth step in this documentation is:

Step 4: Use Drush to get and compress your database in a sql file.

If you wish to compress your database you’ll need to use gzip. Other zip files won’t work.

$ drush sql-dump | gzip > dev.sql.gz

To a new developer, this might look a little intimidating, but it’s just like it sounds; you’re dumping your database into a gzip file, dev.sql.gz, which will then be uploaded. In this example of using Probo, you’re uploading the gzip file with probo-uploader (a command line client for uploading files). Using Probo was a great entry point into learning drush sql-dump which, as you’ll see below, can be used in other capacities.

I’ve also had to use drush sql-dump alongside scp, which means secure copy. So I’ve dumped my database into a .gz file; great, but now what? Somehow I have to get the database to another environment or server. In the previous example, I didn’t need to copy the database to a server; everything could be done either locally or from my virtual machine. There are times when you need to import a database to a particular environment. If you need to copy the database from a remote host to the local host:

$ scp /some/local/directory

If you need to copy it from the local host to a remote host:

$ scp foobar.txt

Credit for the above examples goes to For more scenarios, go here.

Once you’ve copied the gzip file to the environment it needs to be in, you need to DROP your current database so you can import the new one you just copied. That’s where these commands come in:

$ drush sql-drop $ drush sql-cli < ~/my-sql-dump-file-name.sql

For more information, here’s another great resource.

That’s all there is to it. You dumped the database you wanted into a gzip file, secure copied it to the environment, dropped the old database, and then imported the new one. That’s how it works!

Categories: Drupal

Jim Birch: Holistic SEO and Drupal

19 July 2016 - 2:30am

The Introduction - What is Holistic SEO?

Holistic SEO is a term used to describe development in which content, marketing, technical best practices, performance, security, user experience and user intent come together to create an ideal URL on the internet, about a certain topic.

Why should we advocate taking a Holistic approach to SEO?  As search engine algorithms get more complex and intelligent, we won't be able to control or predict changes, and more importantly, it defines a set of best practices that we can develop upon which helps the content creators ultimately benefit the user.

Today's Google algorithm is putting more value on Topic and User Intent than Keywords.  Content pieces that once ranked well for ultra specific keyword terms, are quickly being, or have been replaced by much longer form content that:

  1. Answers questions the searcher has asked.
  2. Is deeply informational about a topic.
  3. Helps the user complete a transaction.
A Holistic SEO Example

Here is an example,'s Guide to Hardwood Floor Finishes is listed for the following search terms:

Read more

Categories: Drupal

Blair Wadman: How to wrap a Drupal Views field in any HTML element

19 July 2016 - 1:13am

In Drupal Views, you can wrap a field in a basic element (such as div, span, H1, H2, p, strong). But sometimes you are going to need to wrap a field in an HTML element that is not available in the list. For example, if you have an image field that and need to wrap in a <figure> element (this is the example we will use for this tutorial). This can be pretty confusing at first, but fortunately there are a few methods available to get the job done.

Categories: Drupal

Janez Urevc: We had great and productive time at NYC sprint!

19 July 2016 - 12:30am
We had great and productive time at NYC sprint! slashrsm Tue, 19.07.2016 - 09:30

As you may already heard a big free software conference, Open camps happened at the United nations headquarters in New York last week. As part of the NYC Drupal camp, which was just one of the many camps that happened during it, a week-long Drupal 8 media sprint was held.

Media team had great time there and I would like to share our impressions with you.

Samuel Mortenson, Adam Hoenich and Janez Urevc in deep discussions about media. Photo by Photographic Intrinsic.

Open camps and NYC Drupal camp

Open camps conference happened for the first time this year. It is a mission-driven free software event that grew out of the NYC Drupal camp. Open camps is a week-long, community organized, non-profit conference as part of which more than 20 camps were taking place. Python, Node.js, Elixir, React, Go, Drupal, Wordpress and many others. All in one place. Pure love!

More photos available in the official Flickr group.

NYC Drupal camp has been one of the strongest supporters of the Drupal 8 Media Initiative for years. They helped us to kick the initiative off and have been supporting us in many ways since then. This year was no exception to that. Along with many media-related sessions as part of the general conference days and a dedicated media summit they also helped us organise a week-long media sprint.

Did we spend the week drinking most of the time?

Of course! Socialisation is one of the most important parts of any community. OK, that's it. Stay tuned!

I am just joking... hope you were not taking me to seriously. We spent most of the week working hard to get closer to beta releases of our most important contributed modules. A lot of extremely cool features were introduced to our browsing component, which is now much more aware of the world around it, it is able to validate your actions much more confidently and it is much easier to use it as part of your custom code.

One of our favourite modules, File entity browser, seen a lot of improvements too. It was chasing changes in the Entity browser and trying to make the most out of new features that are provided. A lot has been done in the area of UX too.

We also focused on getting to the beta release of our embedding component. Last beta blocker was finally RTBC'ed few days ago.

What is in it for me?

Besides all new features that people were asking for we made a big step forward when it comes to stabilisation of the ecosystem. We feel quite confident that we reached the state when we are really confident to release the ecosystem to the wider public.

Our plan is to release last new release of all affected modules this week. We will make sure that changes that we did are chased in all of them, which means you will be able to get latest versions and be confident that they work together. This will include last alpha versions of Entity embed and Entity browser modules. If no critical bugs are found in the two weeks time after that we will release first beta versions. This will be a huge step forward for the Drupal 8 media ecosystem, as it will result in the stabilisation of the most important and biggest modules we provide.

This will result in life of our users being much simpler. You will be able to rely on the ecosystem to just work. There will be no more changes or updates that could potentially break the sites using them.

What are the next steps?

As the ecosystem is entering more stable state we're switching our focus a bit. While developing new features and refactoring were our main focus until now we'll spend most of our energy with fixing bugs, providing support and writing documentation in the next weeks and months. We will also spend more time working on solution modules that will be much more convenient for ordinary users to start with (check File entity browser, Content browser, Media and Lightning distribution).

I'd like to thank to everyone that contributed to the Drupal 8 media ecosystem. What we achieve would not be possible without those numerous contributions. I'd also like to thank to the NYC camp. A lot of things that happened in the last two years wouldn't be possible without their support.

Want to get involved?

Hop on to IRC and poke us on #drupal-media. We also re-started our weekly meetings, which are happening every Wednesday at 16:00 on our IRC channel. Join us!

Categories: Drupal

PreviousNext: Injecting Dependencies into Drupal 8 plugins

18 July 2016 - 4:50pm
As part of our code review process for a current project, it was suggested that rather than calling the static Drupal formBuilder function to insert a form into a custom block, we actually inject the *Form Builder service* directly into the module, and for bonus points also inject the renderer service.   I'd previously had exposure to dependency injection earlier on the same project but hadn’t exactly grokked the concept fully and so with a few pointers in the right direction, I set about refactoring the code I’d written using dependency injection and Drupal services.  
Categories: Drupal

DrupalCon News: Ten Grant Recipients and Scholars to Join Us at DrupalCon Dublin

18 July 2016 - 3:31pm

DrupalCon is an incredible meeting place for community members from all over the globe. But it's not a free event. To make going to DrupalCon more affordable, the Drupal Association coordinates grants and scholarships. We dedicated $10,000 to helping people get to DrupalCon.

The grant and scholarship program helps community members with travel and ticket reimbursement awards. It's funded by ticket sales, membership funds, and the support of generous partners. This year, 108 people applied. Below are some interesting facts about them:

Categories: Drupal

DrupalCon News: Community Keynote: Enzo shares global community insight

18 July 2016 - 1:20pm

The Drupal community is an international one, full of incredible people with amazing stories. What better platform to share those stories than DrupalCon? That's why we're so excited to have the DrupalCon Community Keynote on 29 September. A member of our community will share something that can benefit each of us.

Categories: Drupal