Drupal

Account Sync Profile

New Drupal Modules - 30 August 2017 - 10:05pm

The account_sync_profile module allows you to synchronize drupal user pictures across
multiple Drupal sites.

This module uses system_retrieve_file to get the picture from the other site,
so the user picture should be accesible from the other server.

Categories: Drupal

Entertainment Tonight using Drupal

Dries Buytaert - 30 August 2017 - 6:11pm

Entertainment Tonight is the number one entertainment news magazine in the world, and has been on the air for over 30 years. Fans around the world rely on Entertainment Tonight to receive news and updates on their favorite celebrities and stars. I recently discovered that the newest star featured on Entertainment Tonight was Drupal 8!

Entertainment Tonight's new Drupal 8 website, ETOnline.com, receives 19 million monthly unique visitors, making it the second most visited entertainment news website.

Chapter Three helped build the site. This project really helped Drupal 8 move forward because they ported many modules to Drupal 8 in the process. Check it out at http://www.etonline.com!

Categories: Drupal

Entertainment Tonight using Drupal

Dries Buytaert - 30 August 2017 - 6:11pm

Entertainment Tonight is the number one entertainment news magazine in the world, and has been on the air for over 30 years. Fans around the world rely on Entertainment Tonight to receive news and updates on their favorite celebrities and stars. I recently discovered that the newest star featured on Entertainment Tonight was Drupal 8!

Entertainment Tonight's new Drupal 8 website, ETOnline.com, receives 19 million monthly unique visitors, making it the second most visited entertainment news website.

Chapter Three helped build the site. This project really helped Drupal 8 move forward because they ported many modules to Drupal 8 in the process. Check it out at http://www.etonline.com!

Categories: Drupal

Dries Buytaert: Entertainment Tonight using Drupal

Planet Drupal - 30 August 2017 - 6:11pm

Entertainment Tonight is the number one entertainment news magazine in the world, and has been on the air for over 30 years. Fans around the world rely on Entertainment Tonight to receive news and updates on their favorite celebrities and stars. I recently discovered that the newest star featured on Entertainment Tonight was Drupal 8!

Entertainment Tonight's new Drupal 8 website, ETOnline.com, receives 19 million monthly unique visitors, making it the second most visited entertainment news website. Check it out at http://www.etonline.com!

Categories: Drupal

Entertainment Tonight using Drupal

Dries Buytaert - 30 August 2017 - 6:11pm

Entertainment Tonight is the number one entertainment news magazine in the world, and has been on the air for over 30 years. Fans around the world rely on Entertainment Tonight to receive news and updates on their favorite celebrities and stars. I recently discovered that the newest star featured on Entertainment Tonight was Drupal 8!

Entertainment Tonight's new Drupal 8 website, ETOnline.com, receives 19 million monthly unique visitors, making it the second most visited entertainment news website. Check it out at http://www.etonline.com!

Categories: Drupal

Drupal Association blog: DrupalCon Europe: Co-creating a sustainable and valuable event

Planet Drupal - 30 August 2017 - 1:38pm

The Drupal Association is honored to be the stewards of DrupalCon - a program created by the community for the community. It serves many goals ranging from uniting, growing, and strengthening the community to leveling up Drupal skills to accelerating contribution.

This year the Drupal Association has been focusing on DrupalCon Europe, so we can better serve the European community. While we certainly hear good things about the event from attendees, we also hear many comments like “it is too much of a US event” or “content isn’t appealing enough” or ”it is too expensive” or “there isn’t enough business value for sponsors” or “it’s not rock and roll enough”.

We see this play out in the attendance numbers, which decreased 14% on average each year since DrupalCon Amsterdam in 2014. Sponsor revenue decreased as well. And thanks to a more accurate financial reporting approach launched last year, we can see that DrupalCon Europe lost over €200,000 per event for the last several events.

This isn’t a sign of Drupal’s health. It is simply a sign that this event is not meeting the community’s needs. We can tell because European Drupal events grew in number, attendance, and type over the last few years. The community clearly wants a different kind of experience.

Drupal Association staff like Amanda Gonser, Program Manager, and Rachel Friesen, Director of Events, come to work each day simply to serve the community and create a DrupalCon experience that delights and helps people feel empowered to move Drupal forward. It pains us knowing that DrupalCon is not hitting the mark for the European community. And, it also pains us that we aren’t able to host DrupalCon in other regions like Asia or South America because they’re not possible with our current operational model for hosting events.

For staff, producing  a special DrupalCon experience is more than a job, it’s a personal mission. So, we are putingt a lot of care into figuring out how to make DrupalCon Europe better.

To come up with an event concept that is sustainable and loved (or provides unique value in business speak), we met with many European community members over a period of 10 months and even put out a community survey to gather input. Together, we worked through a process to find a better path forward.

It’s time to open this discovery process up to the greater community so you can understand at a deeper level the problems we are trying to solve and the process we’re using to solve them. Then, we want to discuss the options that we have identified so we can find the best path forward for DrupalCon Europe. I know that together, we can create a sustainable event that strikes at the needs of the European community.

To share the information we’ve gathered and to foster discussion, I am launching a blog series. Starting with this post, it will cover the following topics:

  1. The problem we need to solve for financial sustainability

  2. The problem we need to solve to create unique value

  3. Results from a proposal based on community input

  4. A new path forward for DrupalCon Europe

I encourage discussion in the comment section during the blog series and I will host BOFs at DrupalCon Vienna so we can talk through a path forward. We encourage members to read this blog series so you have as much background information as possible to help inform these discussions.

Thank you for caring about this important community event and giving input into what it looks like in the future.

Categories: Drupal

TimOnWeb.com: Set Required and Optional Address Inputs for Address Field in Drupal 8

Planet Drupal - 30 August 2017 - 1:34pm

This one is dedicated to all my fellow Drupalers. There’s no better exercise for a brain than reading ancient chinese poetry taming Drupal 8. When I’m bored, I turn to Drupal!

Recently I got my Drupal 8 Address module updated and it turned out that from now on street address ...

Read now

Categories: Drupal

Aten Design Group: Drupal 8 Menu System: Generate previous & next links

Planet Drupal - 30 August 2017 - 11:20am

A recent project involved a large number of nodes, each with a menu item. The menu was hierarchical with three levels. Each node page needed a link to the previous and next item.

To generate previous and next links for the current page, I had first looked at loading the menu and traversing it. However, these objects are not easy to navigate. Even the render array is not in order. One would have to resort it by weight. Instead most of what we need is in the database. And ultimately, any classes that load menu items get them from the database anyway. In the simplest case, the previous and next items are simply the previous and next sibling menu items. However, previous could be the parent of the current menu item. If the current menu item is a parent, the previous item could be the last child of the previous sibling. Similar situations exist for the next item. Finally, one also has to account for there not being either a previous or next item. The below image better illustrates this relationship.

The links are generated in a block defined in code. To do this we extend Drupal’s BlockBase in a php file of the same name as the class.

class BookNavigation extends BlockBase implements ContainerFactoryPluginInterface {  

This should go in a custom module’s src/Plugin/Block/ directory.

To get this data and be able to traverse it, we start with the MenuActiveTrail class. Remember to include the necessary use statement:

use Drupal\Core\Menu\MenuActiveTrailInterface; $active_trail_ids = $this->menuActiveTrail ->getActiveTrailIds('MENU-MACHINE-NAME');

This gives us an array of menu item UUIDs starting with the current page at the first item on through to the top level menu item.

We need to break this up into current item and any parents.

$current_menu_id = $this->getMenuId($current_menu_uuid);   $parent_menu_uuid = array_shift($active_trail_ids); if ($parent_menu_uuid != '') { $parent_menu_id = $this->getMenuId($parent_menu_uuid); }   $grandparent_menu_uuid = array_shift($active_trail_ids);

While a menu could have more layers, for this purpose we only ever need to consider two levels “up” from the current item.

Using these menu UUIDs we can load all the child items from the database.

$this->menuStorage = $this->entityTypeManager ->getStorage('menu_link_content');   $siblings = $this->menuStorage->getQuery() ->condition('menu_name', 'menu-table-of-contents'); if ($parent_menu_uuid == '') { $siblings->condition('parent', NULL, 'IS'); } else { $siblings->condition('parent', $parent_menu_uuid); } $siblings = $siblings->sort('weight', 'ASC')->sort('title', 'ASC') ->execute();

This query gets all sibling menu items. It returns entity ids, not UUIDs. However, the parent is identified as a UUID. An extra query gets the entity id for a given UUID:

protected function getMenuId($menu_uuid) { $parts = explode(':', $menu_uuid); $entity_id = $this->menuStorage->getQuery() ->condition('uuid', $parts[1]) ->execute(); return array_shift($entity_id); }

The query also has entity_ids as the array indexes. The following will simply things:

$siblings_ordered = array_values($siblings);

We’ll similarly need all parent menu items, where the grandparent is used in the query.

Then to find the previous and next items:

$sibling_index = array_search($current_menu_id, $siblings_ordered); if ($sibling_index !== FALSE) { $prev_index = $sibling_index - 1; $next_index = $sibling_index + 1; }

This is for that simplest case. It gets slightly more complicated when the previous or next item could be a parent or the sibling of the previous or next parent.

if ($has_children && $prev_index > -1) { $prev_sibling_entity = $this->menuStorage ->load($siblings_ordered[$prev_index]);

Once you’ve determined the previous and next URL, populate a renderable array.

if ($prev_url) { $prev_url->setOption('attributes', [ 'class' => [ 'pager__link', 'pager__link--prev', ], ]); $items['prev'] = Link::fromTextAndUrl($prev_title, $prev_url)->toRenderable(); } else { $items['prev']['#markup'] = $prev_title; }   // Generate next content. if ($next_url) { $next_url->setOption('attributes', [ 'class' => [ 'pager__link', 'pager__link--next', ], ]); $items['next'] = Link::fromTextAndUrl($next_title, $next_url)->toRenderable(); } else { $items['next']['#markup'] = $next_title; } $build['nav_links] = $items;

Finally, to make sure the block is cached properly and cleared when needed, a cache context of 'url' is needed. This ensures the block is cached separately for each page, or url. A cache tag that corresponds to the menu name will ensure these items are cleared from cache whenever the menu is updated. That tag would take the format of 'config:system.menu.MENU-MACHINE-NAME'.

$build['#cache'] = ['max-age' => -1]; $build['#cache']['contexts'][] = 'url'; $build['#cache']['tags'][] = 'config:system.menu.menu-table-of-contents';

While this is a small amount of code, it handles menu systems of varying complexity, and the code is only run once per url after the menu is saved or all cache is cleared.

Categories: Drupal

Drupal Association blog: Q1 2017 Financial Statement Summary

Planet Drupal - 30 August 2017 - 10:07am

The Drupal Association Board is responsible for the Drupal Association’s financial health and as part of their duty, they vote to approve monthly financial statements. The board met on June 28, 2017 at the open board meeting held online. Summit CPA, the Drupal Association’s financial advisors, reviewed the Q1 2017 financial statements, which the board voted to approve afterwards.

For those who could not attend this session, this blog will provide more details about the Q1 2017 Financials, and how we performed against the KPIs that Megan Sanicki, Executive Director laid out in her blog post of June 22, 2017.

As mentioned in previous posts, the Drupal Association has two financial KPIs that we measure against each month:

  • Have a cash balance of 15-30% of Revenue

  • End 2017 with a net income profit of 10%

Below is a summary of how we performed against our KPIs each month in the first quarter of 2017. Overall, we are pleased with our financial progress in this quarter. It shows that we are becoming more sustainable since we made hard choices in 2016 to address our cost structure issues. Cash reserves increased due to DrupalCon Baltimore ticket sales and by selling new programs like the Drupal.org industry page sponsorships and the Charter Customer Supporting Partner Program.

KPI

Goal

January

February

March

Cash Reserve

15-30%

14%

22%

30%

Net Income Margin %

10%

29%

-30%

-32%

This chart below shows how our cash reserves were building in Q1, primarily due to DrupalCon ticket sales. You can see the cash reserves were still low at the start of 2017, as we were still in recovery. Additionally, November through January are our low cash months due to being between DrupalCons.

Net Income Margin will move up and down based on the month’s activities. Overall with the strong January, and the less solid February and March, we are still tracking to our cash forecast.

Monthly Updates

January cash reserves ended at 14% of the recommended cash reserve of 30%.  January’s net income margin finished at 10%.  Revenue had a nice percentage bump due to some unanticipated sales in the digital and industry pages sponsorships.  Additionally, we received a 28k travel grant from Travel Ireland. Thanks Travel Ireland!

February’s cash balance reserve closed in at 22%, due to a strong collections effort on accounts receivables (A/R) by our staff.  The net income margin for February was reduced due to some reclassification of deferred income.  These reclassifications made Febuary come in lower against the cash forecast.  However, with the strong performance of January, the YTD income goal is still on track against our cash forecast.

The cash balance for March exceeded the goal of 30%.  Why? Based on the 2017 forecasted revenue a 30% cash reserve goal is around $1.4M. The March balance of $1.8M was higher than this goal. The jump in cash is due to the strong collections in A/R and timing variances for payments in our A/P. You can see from our A/R tracking that we generally perform better than industry counterparts when it comes to payment on our accounts receivable; as at the end of March we were at 20 days to collect payments.  Additionally, ticket sales from DrupalCon added to the cash balance.

The board meets again on 23/24 September, 2017 at DrupalCon Vienna where they will approve Q2 financials. We will share a similar update to the community after that meeting takes place.

We would not be able to do our mission-driven work without the support and contributions of our community. Contributions come in many forms, through purchase of DrupalCon tickets and event sponsorships, through our Supporters and Members, Drupal.org sponsors, recruiters who post jobs on Drupal Jobs and many other fantastic ways our community supports the Drupal eco-system. We are deeply grateful for everyone who contributes their time, talent, and treasure to move Drupal forward.

Thank you!

File attachments:  AR march.jpeg closing cash march.jpeg
Categories: Drupal

Promet Source: Promet Source, South Florida Water Management District Named A Finalist in 2017 Acquia Engage Awards

Planet Drupal - 30 August 2017 - 8:38am
Promet Source today announced it has been selected as a finalist for the 2017 Acquia Engage Awards in the Public Works category. The Acquia Engage Awards recognize the amazing sites and digital experiences that organizations are building with the Acquia Platform. 
Categories: Drupal

SMSC

New Drupal Modules - 30 August 2017 - 8:29am

Module provide itegration with SMSC library, for sending short messages (SMS, MMS, Viber, E-mail, Ping / HLR / Flash / Push, etc) by SMSC provider.

Categories: Drupal

Webform Permissions By Term

New Drupal Modules - 30 August 2017 - 6:24am
Categories: Drupal

Streamy

New Drupal Modules - 30 August 2017 - 4:43am

Streamy is a storage module that allows you to store and serve files from different locations such as AWS, Dropbox, a CDN or a different folder
on your local server.

Streamy works as a low-level Stream Wrapper leveraging on the powerful flysystem library, its settings can be also exported as configuration files. Optionally they can be automatically loaded depending on the environment via the environmental_config module.

Categories: Drupal

Form element states

New Drupal Modules - 30 August 2017 - 4:32am

Form Element States module provides a field widget for all core field types to add state properties into it. Common use cases is some fields need to be visible/hide/required depends on other field value.

* For a full description of the module visit
https://www.drupal.org/project/form_element_states

Categories: Drupal

Commerce: Product taxonomy filter

New Drupal Modules - 30 August 2017 - 2:44am

This lightweight module is trying to solve the problem that Views contextual filter named "Content has taxonomy term ID (with depth)" is available only for nodes and can not be used for products in Drupal Commerce 2.x.

The Module extends Taxonomy module from Drupal core and provides a new contextual filter "Product has taxonomy term ID (with depth)".

Categories: Drupal

Roy Scholten: One way to find out what’s happening in Drupal

Planet Drupal - 30 August 2017 - 2:09am
30 Aug 2017 One way to find out what’s happening in Drupal

Many channels, but the weekly meetings some teams have are a great way to get started.

It’s a big project, Drupal is. Many different areas that people are working in. The project is it’s own stack of technologies and skills, from low level framework considerations to the last bit of people-facing interface. Composer, Documentation, Accessibility. Each layer in the stack comes with shared considerations about goals, priorities, standards, documentation and getting code written, reviewed, committed.

There are whole teams working on specific feature sets. Media, Workflow, Migrate. But how to find out what’s happening inside each of these areas? PHPUnit, Out of the Box, API-first.

These links all go to long, dense outlines of plans and issues where current state of things and what to work on next is not super obvious. But there is a predictable and reliable way to see and hear people discuss their projects and initiatives. Outside-In, Admin Information Architecture, Progressive Web Apps. Many of the larger initiatives have weekly meetings to discuss progress, status and next steps. Mentoring, Multilingual, Diversity.

Here’s a calendar with all the core meetings on it.

Where and how these meetings are held differs per team. IRC, Google Hangouts, Slack. Many interesting channels on Slack lately, check those out.

These meetings are an easy way to start listening in and getting up to speed. The timing is predictable and you can be sure it’s the experts talking about what is happening and important now. Layout, Security, Frontend components. Don’t let that hold you back to ask questions or share your thoughts. They are nice people and always looking for more people to help out. You are welcome.

Tags meetings drupalplanet drupal
Categories: Drupal

ADCI Solutions: #Drupalchanges movement: share your story and make an impact

Planet Drupal - 29 August 2017 - 8:09pm

Drupal has changed many lives for the best and we want to show newcomers how. Share your story with us!

Record a short video with a hashtag #Drupalchanges and tell what positive changes Drupal brought to your life. Did you change your career? Cool! Met new friends, moved a bigger city? It's huge! 

Post the video on Twitter and/or Facebook until the 7th of September and we will compose your stories altogether so everybody can use the video!

Let's inspire together!

Categories: Drupal

DrupalCon News: You’re coming to Vienna, here are some great things to see and do.

Planet Drupal - 29 August 2017 - 11:20am

We know you’re going to be very busy learning and sprinting, but we hope you take some time and enjoy the incredible history and entertainment Vienna has to offer.

DrupalCon is located near the Prater, and is easily walkable to many incredible attractions. There are a lot of things to do in this city of music, art, culture.

Here are our top picks for things to see in Vienna:

Categories: Drupal

Drupal Modules: The One Percent: Drupal Modules: The One Percent — Display Machine Name (video tutorial)

Planet Drupal - 29 August 2017 - 10:10am
Drupal Modules: The One Percent — Display Machine Name (video tutorial) NonProfit Tue, 08/29/2017 - 12:10 Episode 33

Here is where we seek to bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll investigate Display Machine Name, a module which conveniently displays a field's machine name on view/form displays.

Categories: Drupal

Human Presence Form Protection

New Drupal Modules - 29 August 2017 - 9:25am

Human Presence is a form protection service that uses multiple overlapping strategies to fight form spam. In the context of Drupal, this includes protecting user registration and login forms, content creation forms, contact forms, and more.

Categories: Drupal

Pages

Subscribe to As If Productions aggregator - Drupal