Drupal

Drupal Association blog: Kickstarting the Drupal Community Spotlight

Planet Drupal - 31 August 2017 - 8:23am

Let's face it, it's been a crappy year in many ways. Internally and externally there are pressures that have made all of us think "what's the point?"

Instead of a world where we build and move forward together there is conflict, uncertainty, and so many why moments. From the macro to the micro, communities and ecosystems are struggling. The ideals of open source software often feel exploited, and the feeling of wonderment and discovery as we build together has been cast aside to something that feels very much like... well, work.

Drupal has not been immune. Like I need to tell you that.

For those of us that are optimists, and change makers, and idealists, and believers, nothing hits home the impact of our work than stories about how we use this code called Drupal to create impact. I think the world needs a little of that right now.

So, we have a team, we have energy and we are ready to shine the crap out of the brilliance of the people behind, in front, and to the side of Drupal.

I for one am looking forward to us injecting so much positivity into this community that even the chronic eye rollers won’t be able to help but give a slight smile.

A highlight of DrupalCon: the live code commit! Photo by Michael Cannon

The first thing we are working on is getting a way to start collecting stories. We might use a form. Or we might build an entire website. Just coz we can. So how about y’all give me a *whoop* *whoop* and start thinking about helping the Drupal Spotlight Committee unlock stories of Drupal impact from across the globe. It’s going to be fun.

Categories: Drupal

Commerce Product MinMax

New Drupal Modules - 31 August 2017 - 7:29am

This module provides a field to specify minimum and maximum quantities for products.

Categories: Drupal

Acquia Developer Center Blog: Building an Open Source Photo Gallery with Face and Object Recognition (Part 2)

Planet Drupal - 31 August 2017 - 7:10am

In part one of this two-part series, I explained why my Hackathon team wanted to build an open source photo gallery in Drupal 8, and integrate it with Amazon S3, Rekognition, and Lambda for face and object recognition.

In this post, I'll detail how we built it, then how you can set it up, too!

Tags: acquia drupal planetawsrekognitionmedia entitymedia gallerylambda
Categories: Drupal

FFW Agency: What Is Decoupled Drupal and Why Is It Important?

Planet Drupal - 31 August 2017 - 6:40am
What Is Decoupled Drupal and Why Is It Important? David Hernandez Thu, 08/31/2017 - 13:40

The web has no shortage of digital trends that will pop up on your radar, and one whose momentum has increased over the last couple years is decoupling. In simple terms, the concept of decoupling means separating the frontend of your website from the backend. This means the components of a site that a visitor sees and interacts with (menus, page content, widgets) are built and displayed by software running in the web browser. The backend software, running on the server, accepts requests from the frontend for these different page components and returns them as essentially raw data.

With this full separation of concerns, each half of the website can focus on what it does best; the backend focusing on business logic and retrieval of data, the frontend focusing on display and user experience.

How Do We Achieve This?

This is where JavaScript frontend frameworks come into play. Popular ones include Angular, which we at FFW have used quite successfully on projects, or React, Ember, and many others too numerous to count. These frameworks enable a skilled developer to build a complex and highly interactive frontend without constant page refreshes that require the full attention of the backend.

To do this, it helps to have a powerful and flexible content management system, which doesn’t require lots of custom programming and reinvention of the wheel. This is where Drupal comes in. We’ve done this quite successfully with Drupal due to its robust and flexible API. Drupal 8 pushes this even further with its API first approach, and superior set of APIs.

 
Things like the built-in RESTful web services and superior content modeling tools do most of the work of building that backend system. Eventually the backend will communicate effortlessly with frontend systems and other applications and third-party service. This makes Drupal an effective content hub for distributing your content to any application that needs it.

Pros and Cons

When introducing anything new there are various factors to consider. A decoupled fronted can improve perceived performance and enhance interactivity. It can also do something very difficult with a fully baked content management system, where all rendering is handled by the backend. It enables developers and development teams to design and build a frontend almost completely independently from how the backend is developed. Your templating system, how CSS is built and managed, preferred methods for design components, all this can be treated like a separate project. Your designers and frontend developers don’t even have to have skills specific to the CMS you are using.

Life, of course, is never perfect. The main drawbacks become apparent when really thinking about how all this affects the way your site is built and managed. When using a CMS like Drupal, you start losing a lot of the key features that make it the tool it is. Can you use Drupal’s site building tools to, for example, change the order of fields displayed on a page? Things like that are now being hard-coded into the frontend. We also start losing some of the multilingual features, it plays less nice with metatags and other SEO features, and potentially increases the amount of work and skills needed to build your website. Those aren’t all unsolvable problems, but you’ll need to consider them when deciding where you are willing to devote the development time to building a decoupled site.

Two Approaches

If you understand the concept of separating your frontend and backend, you’ll start seeing two approaches while doing your research. “Headless” Drupal, which just means a fully decoupled frontend. The other is “progressive” decoupling. “What the heck is that?” you might say. Progressive decoupling blurs the line between what the frontend and backend are doing, rather than fully decoupling the two.

Progressive decoupling starts with a traditional website approach, with no decoupling, and the backend doing most of the work to produce the web page. Then, individual components that are deemed more interactive or take longer to produce are handled by the frontend. This approach plays a little more nicely with tools already present in your CMS, and is easier to implement on any existing website.

New Hotness Can Burn

Decoupling a website is a great way to solve some problems of the traditional website module. We certainly advocate it for projects suffering from those problems. But, as with all technology, make sure your use case has the need before forcing technology onto it. The decoupling approach can revolutionize your site visitor’s experience, but if forced to fit it can create new problems, increase development time, and inflate your costs.

A simple site, with few frontend performance problems, largely static content, and little need for things like user- or region-specific content, is not likely to need something like a decoupled frontend. My advice: Let your requirements always inform your solution. Technology is great at solving problems, but don’t let it create them by misapplying it to your project. If you want to talk about whether decoupled Drupal might be right for you, please contact us.

Tagged with Comments
Categories: Drupal

Organic Groups Site Manager

New Drupal Modules - 31 August 2017 - 6:23am

Note: Development and issues are handled on GitHub, and code is synced back to Drupal.org

This module provides support to setup a platform supporting multiple (sub)sites
based on Organic groups (OG) functionality.

  • Define what node types should be used as Site's.
  • Simplified OG API by providing OG function wrappers.

NOTE: Site entities are limited to node entities.

Categories: Drupal

Commerce Payment Transaction Revision

New Drupal Modules - 31 August 2017 - 5:15am
About

Module adds revision support to Drupal Commerce Payment Transaction entity type.

Categories: Drupal

Agiledrop.com Blog: AGILEDROP: Drupal 8 Modules we use at Agiledrop

Planet Drupal - 31 August 2017 - 3:53am
In July, we were quite active in the field of modules. We have looked at the most popular ones and the best for Drupal 8. But as promised that was not our last stop. Namely, this time we will explore Drupal 8 modules we use at Agiledrop.   Our company has completed more than 200 projects. After the release of Drupal 8, many projects were dealt with in the newest version of this open-source platform. Some modules from Drupal 7 were moved to the core in Drupal 8. Moreover, there were also modules that we not converted properly to the Drupal 8. That all resulted in a fact that from around 12… READ MORE
Categories: 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

Pages

Subscribe to As If Productions aggregator - Drupal