Dries Buytaert: Entertainment Tonight using Drupal

Planet Drupal - 31. August 2017 - 3:11

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!

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

Planet Drupal - 30. August 2017 - 22:38

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.

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

Planet Drupal - 30. August 2017 - 22:34

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

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

Planet Drupal - 30. August 2017 - 20:20

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.

Zahlen, bitte! 4150 einsatzbereite Atomwaffen auf der Welt

heise online Newsticker - 30. August 2017 - 19:30
Der heutige "Internationale Tag gegen Nuklearversuche" könnte gar nicht mit mehr aktueller Brisanz aufgeladen sein. Das SIPRI gibt daher eine Übersicht über den weltweiten Bestand an atomaren Waffensprengköpfen.

Drupal Association blog: Q1 2017 Financial Statement Summary

Planet Drupal - 30. August 2017 - 19:07

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

Fritzbox 6890 LTE: AVM stellt neuen Router offiziell vor

heise online Newsticker - 30. August 2017 - 19:00
Der Berliner Hersteller AVM präsentiert wie erwartet sein neues Fritzboxmodell. Nun liegen alle wesentlichen technischen Details auf dem Tisch, darunter auch nicht erwartete. Daneben kündigt die Firma das nächste FritzOS und weitere Produkte an.

Firmware-Update macht Samsung-Fernsehern Probleme

heise online Newsticker - 30. August 2017 - 18:30
Ein Firmware-Update für einige Samsung-TVs hat offenbar dazu geführt, dass die Fernseher nicht mehr ordnungsgemäß funktionieren.

Weltwirtschaftsforum: Millennials sehen Roboter nicht als Jobzerstörer

heise online Newsticker - 30. August 2017 - 18:00
Laut einer Umfrage des Davoser "World Economic Forum" glauben knapp 80 Prozent der 18- bis 35-Jährigen weltweit, dass neue Technologien eher Arbeitsplätze schaffen als zerstören. Der Klimawandel ist die größte Sorge.

Prozessorpreise: Vor Coffee-Lake-Start fällt Preis für Core i7-7700K unter 300 Euro

heise online Newsticker - 30. August 2017 - 18:00
Die Preise der Kaby-Lake-Spitzenmodelle fallen, Händler wollen ihre 200er-Boards abverkaufen und die Lager verkleinern. Denn Sechskern-Prozessoren der Coffee-Lake-Generation stehen vor der Tür.

Ransomware Nuclear BTCWare soll sich über Remote Desktop Services einschleichen

heise online Newsticker - 30. August 2017 - 18:00
Sicherheitsforscher sind auf einen Erpressungstrojaner gestoßen, der Windows-Computer nicht wie bisher gewohnt via Mailanhang infiziert.

Intel Management Engine (ME) weitgehend abschaltbar

heise online Newsticker - 30. August 2017 - 18:00
Russische Sicherheitsexperten haben große Teile des Codes von Intels Management Engine ME 11 entschlüsselt und eine Möglichkeit gefunden, wesentliche Teile abzuschalten.

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

Planet Drupal - 30. August 2017 - 17:38
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. 

Facebook: Keine Werbung für Fake-News-Seiten

heise online Newsticker - 30. August 2017 - 17:30
Facebook geht verschärft gegen Falschmeldungen vor: Seitenbetreiber, die wiederholt "angezweifelte Inhalte" verbreiten, dürfen keine Werbeanzeigen mehr im sozialen Netzwerk schalten. Die Maßnahme soll die Verbreitung von Fake News reduzieren.

Musik, Wahl-Tinder, Navi: Das sind die Apps zur Bundestagswahl

heise online Newsticker - 30. August 2017 - 17:30
Von manchen der Parteien, die bei der Bundestagswahl im September antreten, dürften die meisten Wähler noch nie etwas gehört haben. Orientierung im Dschungel der Wahlmöglichkeiten bieten Wahl-Apps. heise online stellt ab Mittwoch die Wahlprogramme vor.

Dieselskandal: Ex-Innenminister Baum will VW mit Klagewelle überziehen

heise online Newsticker - 30. August 2017 - 17:00
Knapp zwei Jahre nach dem Auffliegen der Abgasmanipulationen bei Volkswagen hat der Liberale Gerhart Baum angekündigt, für rund 5000 Kunden des Konzerns gesammelt Schadenersatz erstreiten zu wollen.

Apple-Chef verkauft Aktien für über 40 Millionen US-Dollar

heise online Newsticker - 30. August 2017 - 16:00
Tim Cook hat fast 270.000 Anteilsscheine seines Konzerns, die ihm im Rahmen seiner Kompensation zugeteilt wurden, abgestoßen. Er erwischte dabei einen guten Zeitraum.

Europaparlamentarier fordern europäisches Gesetz gegen Hass im Netz

heise online Newsticker - 30. August 2017 - 15:30
Zwei EU-Abgeordnete von CDU und Grünen fordern eine europaweite gesetzliche Regelung gegen Hasskommentare im Internet. Ob das deutsche Netzwerkdurchsetzungsgesetz als Vorbild dienen soll, ist aber umstritten.

Preissturz bei Whole Foods: Amazons Kampfansage an die Supermärkte

heise online Newsticker - 30. August 2017 - 15:00
Als neuer Eigentümer der Biokette Whole Foods bläst Amazon zur Attacke auf die US-Lebensmittelbranche. Preissenkungen um bis zu 50 Prozent sind nur der Anfang. Dabei ächzen die Rivalen schon unter dem Wettbewerb – nicht zuletzt durch Aldi und Lidl.

Canon stellt spiegellose 24-MP-Systemkamera EOS M100 und neue Profi-Objektive der L-Serie vor

heise online Newsticker - 30. August 2017 - 15:00
Canons spiegellose Systemkamera EOS M100 übernimmt Sensor und Bildprozessor von der aktuellen APS-C-DSLR-Klasse. Außerdem zeigt der Hersteller eine lichtstarke Festbrennweite sowie drei neue Tilt-Shift-Objektive und einen neuen Makro-Blitz.