Newsfeeds

Konflikt ’47 Boot Camp Coming this August

Tabletop Gaming News - 25 July 2017 - 7:00am
Konflikt ’47 is still a pretty new game. I really only remember seeing figures on tables for the first time at Gen Con last year. So that means it’s coming up to its 1 year anniversary, of sorts. Well, for those that want to get into the game and become better generals, Warlord Games is […]
Categories: Game Theory & Design

Fantasy Flight Games Previews Star Viper Mk.II For X-Wing

Tabletop Gaming News - 25 July 2017 - 6:00am
I remember first encountering the Star Viper while playing Shadows of the Empire on my N64. Heck, I recently re-found my console and game and might just pop that in this evening. I’ve also fought against them in the X-Wing Miniatures Game. In that case, Scum & Villainy players should take notice, as a new […]
Categories: Game Theory & Design

InternetDevels: How Drupal 8 saves time & money, or a few words about backwards compatibility

Planet Drupal - 25 July 2017 - 5:50am

Migration to Drupal 8 will save your time, effort and money in the future. It’s a fact! Discover
the great news about easy upgrades and backwards compatibility.

Read more
Categories: Drupal

CKEditor Tweetable Text

New Drupal Modules - 25 July 2017 - 4:12am

CKEditor Tweetable Text - is an extension to the Drupal 8 CKEditormodule.

Provides an input filter and WYSIWYG plugin for making text in content tweetable, just by clicking on the sentance or phrase itself! .

Categories: Drupal

incapsula

New Drupal Modules - 25 July 2017 - 3:47am

This module provides integration with the Incapsula Imperva: Web Application Firewall. It allows the purging of content and assets when they are saved. A complete purge of the cache is supported through the provided cache hooks in Drupal.

Next to this there is the management of whitelisted IPs, blacklisted IPS, blocked URLs and blocked country/continents through Incapsula from Drupal.

SETUP

To start using this module do the following:

Categories: Drupal

Cahoots

New Drupal Modules - 25 July 2017 - 2:30am
Categories: Drupal

Sketchfab Embed

New Drupal Modules - 25 July 2017 - 2:23am

Embeds Sketchfab into Drupal 8

Categories: Drupal

ARREA-Systems: Usage of ClamAV in Drupal 8

Planet Drupal - 25 July 2017 - 2:17am
Usage of ClamAV in Drupal 8 Tue, 07/25/2017 - 17:17

This is an example of anti-virus implementation with an Ubuntu server.

Our back office management solution allows users to upload files in various sections of the application for storage or file sharing. For this reason, checking of files for virus is an important advantage.

We use the ClamAV module integration from Drupal 8.

 

1) Install ClamAV on Ubuntu

Installation on Ubuntu server is straight forward.  However, it is better to install with clamav-daemon clamav-freshclam options for later settings

Categories: Drupal

Click to tweet

New Drupal Modules - 25 July 2017 - 2:12am


The easiest way to promote, share & track your content on Twitter.

Provides an input filter and CKEditor plugin for making text in content tweetable, just by clicking on the sentence or phrase itself!
It uses the CKEditor plugin through which you can add the link for text ,userhandle and the description in any sentence or paragraph ,which is to be tweeted.

Categories: Drupal

Words on a Screen: Lights, Camera, Action

RPGNet - 25 July 2017 - 12:00am
Action in PBPs
Categories: Game Theory & Design

Webform Help Text

New Drupal Modules - 24 July 2017 - 11:58pm

Module provides interesting option to give the users help information for each Webform field. As administrator or any given user with required permissions you can enter the text you wish the users to see, when the place there cursor over the info icon next to the Webform field. All this can be done from configuration form which can be accessed from a tab on Webform component adding page. The help text will appear in popup next to the info icon.

Categories: Drupal

Agiledrop.com Blog: AGILEDROP: Top Drupal 8 Modules

Planet Drupal - 24 July 2017 - 10:55pm
Last time, we have looked at the most popular Drupal modules. There are around 12 000 modules available for Drupal 7 and 3 000 for Drupal 8, of whom only 1 000 are in a stable version. Not so much as some would perhaps expect. However a lot of them make our lives easier each day, so this time we will look at the top Drupal 8 modules. Firstly, we must point out that modules that were already used in the blog post Most popular Drupal modules will be left out. Namely, we already presented, which are available for Drupal 8 and their popularity makes them useful for the newest version of Drupal… READ MORE
Categories: Drupal

Webform conditional email

New Drupal Modules - 24 July 2017 - 10:36pm

This is the supported module for webform. Admin users can send the emails based on the different component conditions.
User can add multiple conditions to send email to different recipients.
By default following operators are provided to create different combinations -
Is one of
Is not one of
Less than
Less than, or equal to
Greater than
Greater than, or equal to
Contains

Categories: Drupal

Freelock : How do you keep a high bar of quality on dozens of sites every day?

Planet Drupal - 24 July 2017 - 4:33pm

DevOps is the union of development, operations, and quality assurance -- but it's really the other way around. You start with the quality -- developing tests to ensure that things that have broken in the past don't break in the future, making sure the production environment is in a known, fully reproducible state, and setting protections in place so you can roll back to this state if anything goes wrong.

DevOpsBehavior Driven DevelopmentDrupalWordPressContinuous DeploymentContinuous IntegrationDrupal Planet
Categories: Drupal

Steamforged Previews Cinder For Guild Ball

Tabletop Gaming News - 24 July 2017 - 3:00pm
Always two there are, master and apprentice. Where you find one, you will find the other. Recently, we got a preview of Furnace. He was the master. So, now we get a look at the apprentice. Her name’s Cinder. She can, literally, blow up the ball and have another one kicked out onto the pitch. […]
Categories: Game Theory & Design

New Releases Available for Test of Honour

Tabletop Gaming News - 24 July 2017 - 2:00pm
Warlord Games is bringing a new faction, as well as some new cavalry options to Test of Honour, their new far-Eastern miniatures skirmish game. The new faction is Ch?bei’s Renegades. They’re based on a real figure from Feudal Japan. Ch?bei is seen as a Robin Hood type of character, who would protect the peasants from […]
Categories: Game Theory & Design

Fantasy Flight Games Previews New Units from Rise of the Empire

Tabletop Gaming News - 24 July 2017 - 1:00pm
The Rise of the Empire expansion for Star Wars: Rebellion draws heavily from the Rogue One movie. Since that movie introduced us to some new units, of course those are making their way to the tabletop. There’s four new units for each faction you can check out. Along with that, they use new, green dice. […]
Categories: Game Theory & Design

Lullabot: Merging Entities During a Migration to Drupal 8

Planet Drupal - 24 July 2017 - 12:25pm

Migrations provide an excellent opportunity to take stock of your current content model. You’re already neck deep in the underlying structures when planning for data migrations, so while you’re in there, you might as well ensure the new destination content types will serve you going forward and not present the same problems. Smooth the edges. Fill in some gaps. Get as much benefit out of the migration as you can, because you don’t want to find yourself doing another one a year from now.

This article will walk through an example of migrating part of a Drupal 7 site to Drupal 8, with an eye toward cleaning up the content model a bit. You will learn:

  • To write a custom migrate source plugin for Drupal 8 that inherits from another source plugin.
  • To take advantage of OO inheritance to pull field values from other entities with minimal code.
  • To use the Drupal 8 migrate Row object to make more values available in your migration yaml configuration.
Scenario: A music site moving from Drupal 7 to Drupal 8

Let’s say we have a large music-oriented website. It grew organically in fits and starts, so the data model resembles a haphazard field full of weeds instead of a well-trimmed garden. We want to move this Drupal 7 site to Drupal 8, and clean things up in the process, focusing first on how we store artist information.

Currently, artist information is spread out:

  • Artist taxonomy term. Contains the name of the artist and some other relevant data, like references to albums that make up their discography. It started as a taxonomy term because editors wanted to tag artists they mentioned in an article. Relevant fields:

    • field_discography: references an album content type.
       
  • Artist bio node. More detailed information about the artist, with an attached photo gallery. This content type was implemented as the site grew, so there was something more tangible for visitors to see when they clicked on an artist name. Relevant fields:
     
    • field_artist: term reference that references a single artist taxonomy term.
    • field_artist_bio_body: a formatted text field.
    • field_artist_bio_photos: a multi-value file field that references image files.
    • field_is_deceased: a boolean field to mark whether the artist is deceased or not.
Choosing the Migration’s Primary Source

With the new D8 site, we want to merge these two into a single node type. Since we are moving from one version of Drupal to another, we get to draw on some great work already completed.

First, we need to decide which entity type will be our primary source. After some analysis, we determine that we can’t use the artist_bio node because not every Artist taxonomy term is referenced by an artist_bio node. A migration based on the artist_bio node type would leave out many artists, and we can’t live with those gaps.

So the taxonomy term becomes our primary source. We won’t have an individual migration at all for the artist_bio nodes, as that data will be merged in as part of the taxonomy migration.

In addition to the migration modules included in core (migrate and migrate_drupal), we’ll also be using the migrate_plus module and migrate_tools.

Let’s create our initial migration configuration in a custom module, config/install/migrate_plus.migration.artists.yml.

id: artists label: Artists source: plugin: d7_taxonomy_term bundle: artist destination: plugin: entity:node bundle: artist process: title: name type: plugin: default_value default_value: artist field_discography: plugin: iterator source: field_discography process: target_id: plugin: migration migration: albums source: nid

This takes care of the initial taxonomy migration. As a source, we are using the default d7_taxonomy_term plugin that comes with Drupal. Likewise, for the destination, we are using the default fieldable entity plugin.

The fields we have under “process” are the fields found on the Artist term, though we are just going to hard code the node type. The field_discography assumes we have another migration that is migrating the Album content type.

This will pull in all Artist taxonomy terms and create a node for each one. Nifty. But our needs are a bit more complicated than that. We also need to look up all the artist_bio nodes that reference Artist terms and get that data. That means we need to write our own Source plugin.

Extending the Default Taxonomy Source Plugin

Let’s create a custom source plugin, that extends the d7_taxonomy_term plugin.

use Drupal\taxonomy\Plugin\migrate\source\d7\Term; use Drupal\migrate\Row; /** * * @MigrateSource( * id = "artist" * ) */ class Artist extends Term { /** * {@inheritdoc} */ public function prepareRow(Row $row) { if (parent::prepareRow($row)) { $term_id = $row->getSourceProperty('tid'); $query = $this->select('field_data_field_artist', 'fa'); $query->join('node', 'n', 'n.nid = fa.entity_id'); $query->condition('n.type', 'artist_bio') ->condition('n.status', 1) ->condition(fa.field_artist_tid, $term_id); $artist_bio = $query->fields('n', ['nid']) ->execute() ->fetchAll(); if (isset($artist_bio[0])) { foreach (array_keys($this->getFields('node', 'artist_bio')) as $field) { $row->setSourceProperty($field, $this->getFieldValues('node', $field, $artist_bio[0]['nid'])); } } } } }

Let’s break it down. First, we see if there is an artist_bio that references the artist term we are currently migrating.

$query = $this->select('field_data_field_artist', 'fa'); $query->join('node', 'n', 'n.nid = fa.entity_id'); $query->condition('n.type', 'artist_bio') ->condition('n.status', 1) ->condition(fa.field_artist_tid', $term_id);

All major D7 entity sources extend the FieldableEntity class, which gives us access to some great helper functions so we don’t have to write our own queries. We utilize them here to pull the extra data for each row.

if (isset($artist_bio[0])) { foreach (array_keys($this->getFields('node', 'artist_bio')) as $field) { $row->setSourceProperty($field, $this->getFieldValues('node', $field, $artist_bio[0]['nid'])); } }

First, if we found an artist_bio that needs to be merged, we are going to loop over all the field names of that artist_bio. We can get a list of all fields with the FieldableEntity::getFields method.

We then use the FieldableEntity::getFieldValues method to grab the values of a particular field from the artist_bio.

These field names and values are passed into the row object we are given. To do this, we use Row::setSourceProperty. We can use this method to add any arbitrary value (or set of values) to the row that we want. This has many potential uses, but for our purposes, the artist_bio field values are all we need.

Using the New Field Values in the Configuration File

We can now use the field names from the artist_bio node to finish up our migration configuration file. We add the following to our config/install/migrate_plus.migration.artists.yml:

field_photos: plugin: iterator source: field_artist_bio_photos process: target_id: plugin: migration migration: files source: fid 'body/value': field_artist_bio_body 'body/format': plugin: default_value default_value: plain_text field_is_deceased: field_is_deceased

The full config file:

id: artists label: Artists source: plugin: d7_taxonomy_term bundle: artist destination: plugin: entity:node bundle: artist process: title: name type: plugin: default_value default_value: artist field_discography: plugin: iterator source: field_discography process: target_id: plugin: migration migration: albums source: nid field_photos: plugin: iterator source: field_artist_bio_photos process: target_id: plugin: migration migration: files source: fid 'body/value': 'field_artist_bio_body/value' 'body/format': plugin: default_value default_value: plain_text field_is_deceased: field_is_deceased Final Tip

When developing custom migrations with the Migrate Plus module, configuration is stored in the config/install of a module. This means it will only get reloaded if the module is uninstalled and then installed again. The config_devel module can help with this. It gives you a drush command to reload a module’s install configuration.

Categories: Drupal

Roblox set to pay in-game devs over $30M in 2017

Social/Online Games - Gamasutra - 24 July 2017 - 12:15pm

Developers creating content for the game-within-a-game platform Roblox could see payouts totaling $30 million before year end. ...

Categories: Game Theory & Design

New Units Available For Beyond the Gates of Antares

Tabletop Gaming News - 24 July 2017 - 12:00pm
The world of Beyond the Gates of Antares is a dangerous one. You’d thing with an entire galaxy to spread out into that there would be plenty for everyone. Not so, as there’s still plenty of conflict over resources. And it’s not just humans going at it. Several alien races are also joining with the […]
Categories: Game Theory & Design

Pages

Subscribe to As If Productions aggregator