Agiledrop.com Blog: AGILEDROP: Why should agencies focus on building ambitious websites

Planet Drupal - 3. November 2017 - 13:35
Dries Buytaert, the founder of Drupal, gave great session this year at Drupalcon Vienna. Watch the part where he talks about who is Drupal for. Instead of focusing on big and small websites, or SME and enterprise clients, Dries describes the type of a website Drupal is made for as ambitious.  What is not an ambitious website A business that used to have a simple brochure website is now better off being served by SaaS (software as a service) solutions like Wix and Squarespace. Facebook, Google, and Amazon are providing services that not only cover what a good-old-website did in the past, but… READ MORE

Ikeas Lichtsystem Trådfri unterstützt Apples HomeKit und Alexa

heise online Newsticker - 3. November 2017 - 13:00
Die vernetzten Lampen des Möbelhauses lassen sich nun auf Zuruf steuern – über die Assistenzsysteme Siri und Alexa. Die HomeKit-Unterstützung macht eine Bedienung mit Apples in iOS integrierter Home-App möglich, auch unterwegs.

Microsoft-Präsentation: Edge stürzt ab? Dann eben Chrome installieren.

heise online Newsticker - 3. November 2017 - 13:00
Eigentlich wollte ein Microsoft-Mitarbeiter bei der Ignite die Vorzüge von Microsofts Azure-Plattform demonstrieren. Weil aber der Edge-Browser mitten in der Präsentation streikte, lud er kurzerhand Chrome runter.

Virgin Hyperloop One will 2019 mit Bau der ersten Strecke beginnen

heise online Newsticker - 3. November 2017 - 12:30
Schon in zwei Jahren könnte die Konstruktion der erste kommerziell genutze Strecke für den Hyperloop beginnen, ist man bei Virgin Hyperloop One überzeugt. Noch ist aber nicht einmal klar, auf welchem Kontinent das passieren soll.

Apple vs. Qualcomm: iPhone bald ohne Qualcomm-Chips?

heise online Newsticker - 3. November 2017 - 12:00
Aufgrund eines erbitterten Patentstreites zieht Apple einem Bericht zufolge in Betracht, in der nächsten iPhone- und iPad-Generation zum ersten Mal komplett auf Mobilfunkchips von Qualcomm zu verzichten.

Assassin’s Creed Origins angespielt: Tod am Nil

heise online Newsticker - 3. November 2017 - 11:30
Irgendwann ist Zeit für einen Neuanfang. Ubisoft Montreal hat Assassin’s Creed: Origins ein neues Kampfsystem verpasst und bietet die wohl größte und glaubwürdigste Spielwelt der Reihe. Trotzdem nerven die zahlreichen Mikrotransaktionen.

Bug: Google Docs verweigerte Zugriff auf Texte

heise online Newsticker - 3. November 2017 - 11:00
Ein Bug hat dazu geführt, dass Google Docs zahlreichen Nutzern den Zugriff auf ihre Dokumente verweigert hat. Der Fehler ist inzwischen behoben und Google hat sich entschuldigt. Der Vorfall verdeutlicht die Schattenseiten von Cloud-Diensten.

VR in der Krise: Eve-Online-Entwickler CCP schließt Studios

heise online Newsticker - 3. November 2017 - 10:00
Nachdem die erste Hype-Welle um Virtual Reality vorbei ist, schließt einer der bislang größten Anbieter von VR-Spielen aus Island seine VR-Entwicklungsabteilungen.

Spiele-Streaming: GeForce Now Beta für Macs in Europa gestartet

heise online Newsticker - 3. November 2017 - 9:30
Über einen Umweg will Grafikkartenhersteller Nvidia aktuelle PC-Titel auf Macs bringen: Bei GeForce Now rendern Server das Spielegeschehen und streamen es übers Internet auf private Apple-Rechner – eine schnelle Leitung vorausgesetzt.

Appnovation Technologies: Appnovator Spotlight: Meet Victoria Marcos

Planet Drupal - 3. November 2017 - 9:00
Appnovator Spotlight: Meet Victoria Marcos Who are you? What's your story? My name is Victoria Marcos, I’m from Venezuela and moved to England 8 years ago. I’m married and have a beautiful dog called Bonnie. I’ve been working in Appnovation for 3.5 years as Project Manager. I have a degree in Computer Engineering and a Master in Computer Science. I used to work as Business Analy...

Gehackte Kassensysteme: Hilton-Kette bezahlt 700.000 US-Dollar

heise online Newsticker - 3. November 2017 - 8:30
Immer wieder werden Hotelketten Opfer von Hackern, die es auf Kreditkartendaten der Kunden abgesehen haben. 2015 war Hilton Hotels betroffen, hielt die Erkenntnis aber lange zurück. Nun hat sich die Hotelgruppe deswegen auf einen Vergleich geeinigt.

Pwn2own Tokyo - Hacker demonstrieren Millionen-Hacks für iPhone 7 und Samsung S8

heise online Newsticker - 3. November 2017 - 8:30
In Tokio nehmen sich Hacker derzeit Smartphones wie das Huawei Mate 9 Pro, iPhone 7 und Samsung S8 vor – und das oft mit Erfolg. Schon nach dem ersten Tag haben sie iOS 11.1 erfolgreich attackiert.

Krypto-Messenger Signal veröffentlicht neuen Desktop-Client

heise online Newsticker - 3. November 2017 - 8:30
Bislang gab es vom Krypto-Messenger Signal nur eine Chrome-App, die die Nutzung am Computer ermöglichte. Nun ist ein neuer Client für Windows, macOS und Linux erschienen, der keinen Browser mehr benötigt.

Smartphone-Siegeszug: Nikon schließt Kamera-Werk

heise online Newsticker - 3. November 2017 - 8:30
Mit sofortiger Wirkung schließt Nikon eine Fabrik in der chinesischen Provinz Jiangsu. Als Grund nennt der Konzern den schrumpfenden Markt für Kompaktkameras.

OSTraining: What Does Delta Mean in Drupal?

Planet Drupal - 3. November 2017 - 6:44

When you are adding Views, you may have seen an extra option called "Delta".

Several students have asked us about the purpose of this field, because it wasn't clear.

The Delta option is available throughout the site, but ordinary users are most likely to encounter it inside Views. Here's how the "Delta" options appear in Views:

PreviousNext: Safely extending Drupal 8 plugin classes without fear of constructor changes

Planet Drupal - 3. November 2017 - 0:34
Share:

From time to time you may find you need to extend another module's plugins to add new functionality.

You may also find you need to alter the signature of the constructor in order to inject additional dependencies.

However plugin constructors are considered internal in Drupal's BC policy.

So how do you safely do this without introducing the risk of breakage if things change.

In this article we'll show you a quick trick learned from Search API module to avoid this issue.

by Lee Rowlands / 3 November 2017

So let's consider a plugin constructor that has some arguments.

Here's the constructor and factory method for Migrate's SQL map plugin

/**
   * Constructs an SQL object.
   *
   * Sets up the tables and builds the maps,
   *
   * @param array $configuration
   *   The configuration.
   * @param string $plugin_id
   *   The plugin ID for the migration process to do.
   * @param mixed $plugin_definition
   *   The configuration for the plugin.
   * @param \Drupal\migrate\Plugin\MigrationInterface $migration
   *   The migration to do.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EventDispatcherInterface $event_dispatcher) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->migration = $migration;
    $this->eventDispatcher = $event_dispatcher;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition,
      $migration,
      $container->get('event_dispatcher')
    );
  }

As you can see, there are two additional dependencies injected beyond the standard plugin constructor arguments - the event dispatcher and the migration.

Now if you subclass this and extend the constructor and factory to inject additional arguments, should the base plugin change its constructor, you're going to be in trouble.

Instead, you can use this approach that Search API takes - leave the constructor as is (don't override it) and use setter injection for the new dependencies.

/**    * {@inheritdoc}    */   public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {     $instance = parent::create(       $container,       $configuration, $plugin_id,       $plugin_definition,       $migration     ); $instance->setFooMeddler($container->get('foo.meddler'); return $instance;   } /** * Sets foo meddler. */ public function setFooMeddler(FooMeddlerInterface $fooMeddler) { $this->fooMeddler = $fooMeddler; }

Because the signature of the parent create method is enforced by the public API of \Drupal\Core\Plugin\ContainerFactoryPluginInterface you're guaranteed that it won't change.

Thanks to Thomas Seidl for this pattern

Tagged Drupal 8, Plugins, OOP

Posted by Lee Rowlands
Senior Drupal Developer

Dated 3 November 2017

Comments

Comment by dawehner

Dated 3 November 2017

Nice!! Thank you for sharing it!

Pagination Add new comment

Sony bringt Roboterhund Aibo zurück

heise online Newsticker - 2. November 2017 - 19:30
Mit dem elektronischen Hund Aibo war Sony ein Pionier bei Robotern fürs Zuhause. Inmitten hoher Verluste zog der Konzern dann zum Leidwesen vieler Besitzer den Stecker. Doch jetzt gibt es eine neue Generation.

Apple TV 4K: Bildwiederholrate und HDR-Ausgabe künftig je nach Inhalt

heise online Newsticker - 2. November 2017 - 19:00
Das aktuell in der Beta-Phase befindliche tvOS 11.2 versetzt das Apple TV 4K in die Lage, die Videoausgabe an den gerade abgespielten Inhalt anzupassen.

"Wikitribune": Nachrichtenplattform von Jimmy Wales eröffnet

heise online Newsticker - 2. November 2017 - 19:00
Der Wikipedia-Gründer hat mit "Wikitribune" ein Nachrichtenportal eröffnet, das neutral, objektiv und mehrsprachig berichten soll. Bislang sind die Unterschiede zur Konkurrenz aber nicht sehr groß. Offen bleibt, ob Spenden die Seite finanzieren können.

macOS 10.12 und 10.11: KRACK-Lücke gestopft, Loch im Schlüsselbund bleibt

heise online Newsticker - 2. November 2017 - 18:00
Apple hat ein Sicherheitsupdate für Sierra und El Capitan veröffentlicht, in dem ein vieldiskutiertes WLAN-Problem behoben wurde. Ein anderer schwerwiegender Fehler wurde hingegen offenbar nicht angegangen.