IDW Games To Release Teenage Mutant Ninja Turtles Munchkin

Tabletop Gaming News - 14 February 2018 - 8:00am
Lotsa people grouping together for this one. IDW has teamed up with Steve Jackson Games and Nickelodeon to bring you a new Munchkin set. In this case, it’s all about pizza, ninjas, and heroes in half-shells. Yes, it’s Teenage Mutant Ninja Turtles (every time I write that, the editor in me wants to put commas […]
Categories: Game Theory & Design

Zoocha Blog: Extending Twig Templates with Blocks in Drupal 8

Planet Drupal - 14 February 2018 - 7:49am
Web Development Extending Twig Templates with Blocks...

One of the many good things about Drupal 8 is the introduction of Twig. It's a lovely templating engine that, in my opinion, is far superior to PHPTemplate. For us frontenders, it has a much nicer user syntax that's more akin to handlebars or other JS templating engines. Imagine this…

14 Feb 2018 Extending Twig Templates with Blocks...
Categories: Drupal

Mine Seeker Steam Achievements and Testing - by Jason Crosby Blogs - 14 February 2018 - 7:27am
I have added Steam achievements and now getting ready to test.
Categories: Game Theory & Design

Arts vs. Entertainment: Is "Art" in Gaming Dying? - by Andrew Heikkila Blogs - 14 February 2018 - 7:12am
I think people play video games and invest in their experiences for two primary reasons: their artistic narrative and their ability to provide competitive entertainment. Unfortunately, I believe that the former is going by the wayside.
Categories: Game Theory & Design

WizKids announces Letter Go Word Game

Tabletop Gaming News - 14 February 2018 - 7:00am
How good’s your vocabulary? What about words with four letters or more? How fast can you come up with said words? If you’re good at that kind of thing, you’ll want to check out Letter Go, a new word game coming from WizKids. From the announcement: Wizkids is pleased to announce its upcoming Word game, […]
Categories: Game Theory & Design

Making a videogame cover that doesn't suck - by James Cavin Blogs - 14 February 2018 - 6:47am
Say no to face bouquet! When small developers make video game box they tend to mimic the designs of bigger games from their genre. That's a mistake, and here's why.
Categories: Game Theory & Design

How we messed up and how we succeeded: Malta Global Game Jam - by Jasper Schellekens Blogs - 14 February 2018 - 6:47am
Lessons learned from organising the Malta Global Game Jam. An organiser's post-mortem describing the things we thought went well and things that went badly, so others can learn from our mistakes and take inspiration from our successes.
Categories: Game Theory & Design

2017 Wasn’t VR’s Year, but Spielberg Film Reignites Gaming Movement for 2018 - by Mark Poole Blogs - 14 February 2018 - 6:47am
We had lofty dreams for virtual reality gaming, and unfortunately, in 2017 we did not see any of those dreams come true. The Oculus release prompted a long period of buzz and left consumers with a burning curiosity for what could follow.
Categories: Game Theory & Design

Wave XIV Announced For X-Wing From Fantasy Flight Games

Tabletop Gaming News - 14 February 2018 - 6:00am
Hey there, flyboys and girls. Fantasy Flight has a new set of X-Wing ships coming out soon. One’s like previous “Aces” sorts of sets, this time with an X-Wing and a U-Wing. The other is a new TIE variant. Both come from Rogue One (so they say). From the post: The Death Star is nearly […]
Categories: Game Theory & Design

Reclaiming my blog as my thought space

Dries Buytaert - 14 February 2018 - 5:33am

Last week, I shared my frustration with using social media websites like Facebook or Twitter as my primary platform for sharing photos and status updates. As an advocate of the open web, this has bothered me for some time so I made a commitment to prioritize publishing photos, updates and more to my own site.

I'm excited to share my plan for how I'd like to accomplish this, but before I do, I'd like to share two additional challenges I face on my blog. These struggles factor into some of the changes I'm considering implementing, so I feel compelled to share them with you.

First, I've struggled to cover a wide variety of topics lately. I've been primarily writing about Drupal, Acquia and the Open Web. However, I'm also interested in sharing insights on startups, investing, travel, photography and life outside of work. I often feel inspired to write about these topics, but over the years I've grown reluctant to expand outside of professional interests. My blog is primarily read by technology professionals — from Drupal users and developers, to industry analysts and technology leaders — and in my mind, they do not read my blog to learn about a wider range of topics. I'm conflicted because I would like my l blog to reflect both my personal and professional interests.

Secondly, I've been hesitant to share short updates, such as a two sentence announcement about a new Drupal feature or an Acquia milestone. I used to publish these kinds of short updates quite frequently. It's not that I don't want to share them anymore, it's that I struggle to post them. Every time I publish a new post, it goes out to more than 5,000 people that subscribe to my blog by email. I've been reluctant to share short status updates because I don't want to flood people's inbox.

Throughout the years, I worked around these two struggles by relying on social media; while I used my blog for in-depth blog posts specific to my professional life, I used social media for short updates, sharing photos and starting conversation about wider variety of topics.

But I never loved this division.

I've always written for myself, first. Writing pushes me to think, and it is the process I rely on to flesh out ideas. This blog is my space to think out loud, and to start conversations with people considering the same problems, opportunities or ideas. In the early days of my blog, I never considered restricting my blog to certain topics or making it fit specific editorial standards.

Om Malik published a blog last week that echoes my frustration. For Malik, blogs are thought spaces: a place for writers to share original opinions that reflect "how they view the world and how they are thinking". As my blog has grown, it has evolved, and along the way it has become less of a public thought space.

My commitment to implementing a POSSE approach on my site has brought these struggles to the forefront. I'm glad it did because it requires me to rethink my approach and to return to my blogging roots. After some consideration, here is what I want to do:

  1. Take back control of more of my data; I want to share more of my photos and social media data on my own site.
  2. Find a way to combine longer in-depth blog posts and shorter status updates.
  3. Enable readers and subscribers to filter content based on their own interests so that I can cover a larger variety of topics.

In my next blog post, I plan to outline more details of how I'd like to approach this. Stay tuned!

Categories: Drupal

Happy Valentine’s Day From Gnome Stew! Remember when we wrote a romance novel?

Gnome Stew - 14 February 2018 - 5:24am

It’s Valentines day, and whatever that means for you, it means warm and tingly feelings for us! Mmmm Warm and tingly stew! Hey, remember when we teased and then actually wrote a romance novel? Like, legitimately wrote it with some saucy bits in it. Well, it’s still out there, and you can get it, for free or whatever you want to pay. You should really go check it out, even though we warn you against doing so on the cover. You’ll only be mildly embarrassed after reading it…



From The Gnome Hunters

…and yet how could she lie to this man?
“Raphael.” His name tasted foreign and exhilarating on her lips.
“Please….I know what they’re after. And I know why.”
He turned to face her and she saw some slight concern cross his
features. “Laila, darling, please tell me what you know. Anything that could
help me protect you is precious. Here.” He gestured to a sumptuous living
room with large cozy couches, and then, once she had sat, settled in next to
her angled in to face her. “Please.”

Categories: Game Theory & Design

Knight Models Announces Harry Potter Miniatures Adventure Game Kickstarter Launch Date

Tabletop Gaming News - 14 February 2018 - 4:31am
Here’s one that I know a lot of people have been wanting to know more about. Knight Models has announced the launch date for their Harry Potter Miniatures Adventure Game Kickstarter (March 14th). So you’ve got a month to get your wands, owls, and brooms together. From the announcement: Knight Models is proud to present […]
Categories: Game Theory & Design

Business of Gaming Retail: Facebook Advertising

RPGNet - 14 February 2018 - 12:00am
You Were Asking About How to Advertise...?
Categories: Game Theory & Design

Valuebound: How to generate PDF of HTML code in Drupal 8

Planet Drupal - 13 February 2018 - 11:52pm

Have you ever been in a situation where you were required to generate PDF of HTML code? Recently, I came across a similar situation. In Drupal 8, there are several PHP libraries that allow you to generate PDF. However, out of curiosity, I thought of finding better alternatives. After some research, I found an interesting library, called mPDF, that converts HTML code to PDF without changing the structure.

mPDF is a smart library that considers the CSS attached to the HTML. Not only CSS, it takes care of almost all the HTML tags like form tags, tables, images, lists etc.

Generating PDF of HTML in custom module


mPDF 7.0 requires PHP ^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0.…
Categories: Drupal Blog: AGILEDROP: Our blog posts from January

Planet Drupal - 13 February 2018 - 10:55pm
You have already seen what Drupal blogs we trending in the previous month, and now it is time to look at all our blog post we wrote. Here are the blog topics we covered in January.   The first blog post in January was 2017 in review. In this blog post, our Commercial director Iztok looked back in the year 2017 and summarized what differences we made as a company, which Drupal events we have visited, how much fun we had and how do we contributed back to the community in 2017.    The second was Who will get the control of personal data after GDPR? by Ales Kohek. He talked about new set of… READ MORE
Categories: Drupal

Commerce Guys: We're sponsoring and speaking at Florida DrupalCamp!

Planet Drupal - 13 February 2018 - 7:38pm

Florida DrupalCamp 2018 finally arrives this weekend, February 16-18! Commerce Guys is a Gold sponsor this year, and I will be heading down to the conference to talk about Reporting in Drupal Commerce.

With Drupal Commerce 2.4 out the door (see yesterday's release notes), our focus is shifting back to the contributed module ecosystem. As Bojan highlighted in our year in review blog post, we have now ported many essential modules and pushed for them to achieve stable releases. With 55 payment gateways, shipping support, and work on recurring payments in progress, we've identified reporting as our next major initiative.

Reporting is obviously essential to eCommerce. Merchants need to know which products are selling, if a marketing campaign is producing new sales, how much sales tax to remit, and more. Each new type of report brings unique challenges related to understanding, querying, and visualizing the underlying data.

At Florida DrupalCamp, I will discuss the requirements and challenges we've identified in reporting within Drupal Commerce and the solutions available to our users in the Commerce Reports and Commerce Google Analytics modules. Finally, I will also unveil Commerce Guys’ newest product, Lean Commerce Reports.

Lean Commerce Reports, which we first showed off at DrupalCon Baltimore, is finally production ready. Over 80 stores use Lean Commerce Reports to add a plug and play sales dashboard to the back end of Drupal Commerce. The dashboard gives store owners immediate visibility into their sales trends, traffic by channel, conversion rate, and top selling products over time. Furthermore, each summary report on the dashboard links to a full report you can further explore, refine, export, etc.

Jonathan and I have worked really hard these last few months to get Lean Commerce Reports to where it is now, and I can't wait to show it off in Orlando. If you miss me there, come find us at DrupalCon Nashville or get in touch if you'd like to try it out while it's still in private beta.

Categories: Drupal

Brian Osborne: Importing Images Within an RSS Feed Using the Drupal 7 Feeds Module

Planet Drupal - 13 February 2018 - 6:58pm

Yes, a blog post about Drupal 7!

I recently worked on an enhancement for a large multi-site Drupal 7 platform to allow its users to import news articles from RSS feeds. Pretty simple request, and given the maturity of the Drupal 7 contrib module ecosystem, it wasn't too difficult to implement.

Categories: Drupal

Brian Osborne: Importing Images Within an RSS Feed Using the Drupal 7 Feeds Module

Planet Drupal - 13 February 2018 - 6:58pm

Yes, a blog post about Drupal 7!

I recently worked on an enhancement for a large multi-site Drupal 7 platform to allow its users to import news articles from RSS feeds. Pretty simple request, and given the maturity of the Drupal 7 contrib module ecosystem, it wasn't too difficult to implement.

Categories: Drupal

PreviousNext: Creating a custom LinkIt matcher plugin

Planet Drupal - 13 February 2018 - 5:27pm

In one of our recent projects, our client made a request to use LinkIt module to insert file links to content from the group module.  However, with the added distinction of making sure that only content that is in the same group as the content they are editing is suggested in the matches.

Here’s how we did it.

by Pasan Gamage / 14 February 2018 The LinkIt module

First, let me give you a quick overview of the LinkIt module.

LinkIt is a tool that is commonly used to link internal or external artifacts. One of the main advantages of using it is because LinkIt maintains links by uuid which means no occurrence for broken links. And it can link any type of entity varying from core entities like nodes, users, taxonomy terms, files, comments and to custom entities created by developers.

Once you install the module, you need to set a Linkit profile which consists of information about which plugins to use. To set the profiles use /admin/config/content/linkit path. And the final step will be to enable the Linkit plugin on the text format you want to use. Formats are found at admin/config/content/formats. And you should see the link icon when editing content item.

Once you click on the LinkIt icon it will prompt a modal as shown below.

By default LinkIt ships with a UI to maintain profiles that enables you to manage matchers.


Matchers are responsible for managing the autoload suggestion criteria for a particular LinkIt field. It provides bundle restrictions and bundle grouping settings

Proposed resolution

To solve the issue; we started off by creating a matcher for our particular entity type. Linkit has an EntityMatcher plugin that uses Drupal's Plugin Derivatives API to expose one plugin for each entity type. We started by adding the matcher that linkit module exposed for our custom group content entity type.

We left the bundle restrictions and bundle grouping sections un-ticked so that all existing bundles are allowed so the content of those bundles will be displayed.

Now that the content is ready we have to let the matcher know that we only need to load content that belongs to the particular group for which the user is editing or creating the page.

Using the deriver

In order to do that we have to create a new class in /modules/custom/your_plugin_name/src/Plugin/Linkit/Matcher/YourClassNameMatcher.php by extending existing EntityMatcher class which derives at /modules/contrib/linkit/src/Plugin/Linkit/Matcher/EntityMatcher.php.

Because Linkit module's plugin deriver exposes each entity-type plugin with and ID for the form entity:{entity_type_id} we simply need to create a new plugin with an ID that matches our entity type ID. This then takes precedence over the default derivative based plugin provided by Linkit module. We can then modify the logic in either the ::execute() or ::buildEntityQuery method.

Using LinkIt autocomplete request

But here comes the challenge, in that content edit page the LinkIt modal doesn’t know about the group of the content being edited, therefore we cannot easily filter the suggestions based on the content being edited. We need to take some fairly extreme measures to make that group ID available for our new class to filter the content once the modal is loaded and user starts typing in the field.

In this case the group id is available from the page uri.

So in order to pass this along, we can make use of the fact that the linkit autocomplete widget has a data attribute 'data-autocomplete-path' which is used by its JavaScript to perform the autocomplete request. We can add a process callback to the LinkIt element to extract the current page uri and pass it as a query parameter in the autocomplete path.

The code

To do so we need to implement hook_element_info_alter in our custom module. Here we will add a new process callback and in that callback we can add the current browser url as a query parameter to the data-autocomplete-path attribute of the modal.

\Drupal\linkit\Element\Linkit is as follows;

public function getInfo() { $class = get_class($this); return [ '#input' => TRUE, '#size' => 60, '#process' => [ [$class, 'processLinkitAutocomplete'], [$class, 'processGroup'], ], '#pre_render' => [ [$class, 'preRenderLinkitElement'], [$class, 'preRenderGroup'], ], '#theme' => 'input__textfield', '#theme_wrappers' => ['form_element'], ]; }

Below is the code to add the process callback and alter the data-autocomplete-path element. We rely on the HTTP Referer header which Drupal sends in its AJAX request that is used to display the LinkIt modal, which in turn builds the LinkIt element

/** * Implements hook_element_info_alter(). */ function your_module_name_element_info_alter(array &$info) { $info['linkit']['#process'][] = 'your_module_name_linkit_process'; } /** * Process callback. */ function your_module_name_linkit_process($element) { // Get the HTTP referrer (current page URL) $url = \Drupal::request()->server->get('HTTP_REFERER'); // Parse out just the path. $path = parse_url($url, PHP_URL_PATH); // Append it as a query parameter to the autocomplete path. $element['#attributes']['data-autocomplete-path'] .= '?uri=' . urlencode($path); return $element; }

Once this is done we can now proceed to create the new plugin class extending EntityMatcher class. Notice the highlighted areas.

namespace Drupal\your_module\Plugin\Linkit\Matcher; use Drupal\linkit\Plugin\Linkit\Matcher\EntityMatcher; use Drupal\linkit\Suggestion\EntitySuggestion; use Drupal\linkit\Suggestion\SuggestionCollection; /** * Provides specific LinkIt matchers for our custom entity type. * * @Matcher( * id = "entity:your_content_entity_type", * label = @Translation("Your custom content entity"), * target_entity = "your_content_entity_type", * provider = "your_module" * ) */ class YourContentEntityMatcher extends EntityMatcher { /** * {@inheritdoc} */ public function execute($string) { $suggestions = new SuggestionCollection(); $query = $this->buildEntityQuery($string); $query_result = $query->execute(); $url_results = $this->findEntityIdByUrl($string); $result = array_merge($query_result, $url_results); if (empty($result)) { return $suggestions; } $entities = $this->entityTypeManager->getStorage($this->targetType)->loadMultiple($result); $group_id = FALSE; // Extract the Group ID from the uri query parameter. if (\Drupal::request()->query->has('uri')) { $uri = \Drupal::Request()->query->get('uri'); list(, , $group_id) = explode('/', $uri); } foreach ($entities as $entity) { // Check the access against the defined entity access handler. /** @var \Drupal\Core\Access\AccessResultInterface $access */ $access = $entity->access('view', $this->currentUser, TRUE); if (!$access->isAllowed()) { continue; } // Exclude content that is from a different group if ($group_id && $group_id != $entity->getGroup()->id()) { continue; } $entity = $this->entityRepository->getTranslationFromContext($entity); $suggestion = new EntitySuggestion(); $suggestion->setLabel($this->buildLabel($entity)) ->setGroup($this->buildGroup($entity)) ->setDescription($this->buildDescription($entity)) ->setEntityUuid($entity->uuid()) ->setEntityTypeId($entity->getEntityTypeId()) ->setSubstitutionId($this->configuration['substitution_type']) ->setPath($this->buildPath($entity)); $suggestions->addSuggestion($suggestion); } return $suggestions; } } Conclusion

And we are done.

By re-implementing the execute() method of EntityMatcher class we are now able to make the LinkIt field to display only content from the same group as the content the user is editing/creating.

So next challenge here is to create some test coverage for this, as we're relying on a few random pieces of code - a plugin, some JavaScript in the LinkIt module, an element info alter hook and a process callback - any of which could change and render all of this non-functional. But that's a story for another post.

Tagged Drupal 8, Drupal Modules, Custom modules
Categories: Drupal


Subscribe to As If Productions aggregator