All RPGs and Storygames by Tod Foley are now available at DrivethruRPG and RPGnow. Bring these games to your table!
This module provides a solution to the fact that by default, interface translations are overwritten by config imports if the imported config contains a translation (or misses a translation) of a given string in translate interface.
The following changes to this behaviour are supplied by this module:
Dreditor is a beloved and indispensable tool, in the form of a browser extension, that enhances project issue pages on Drupal.org. When it comes to reviewing patches, it turns what would just be a plain text file into a feature rich interface for reviewing patches, allowing users to easily select and comment on lines of code, which then get pasted into the comment form, as properly formatted HTML.
I've been lucky to have some extra community time here at Chapter Three over the past couple of weeks. While perusing the core issue queue, I decided to resurrect an old User Style I created for Dreditor back in 2009, and give Dreditor a little refresh. You can install the Dreditor Refresh style with Stylish here. Make sure you also have Dreditor installed, and have logged into Drupal.org.
An Endzeitgeist.com review
This installment of the „How do I...“-series clocks in at 9 pages, 1 page front cover, 1 page editorial/ToC, 1 page SRD, leaving us with 6 pages of content. As always with Straight Path games-supplements, we do get a second version optimized for use with tablets. This version clocks in at a total of 14 pages laid out in landscape format, but content-wise remains identical to the other version. All righty, let’s take a look!
We begin with a reiteration of categories of magic items – this list is great, particularly for newer players. There are a couple of notes I’d like to add here: While the pdf is correct in stating that unarmed attacks are usually enhanced by amulets, this is by now not the only way to affect them. It should also be noted that two spell-references in the explanation of potions have not been italicized – though the pdf correctly points out an NPC Codex issue. It should also be noted that references to precise magic items throughout the pdf have not been italicized. As another minor addition, while the pdf correctly states that staves can usually act as quarterstaffs, there are a few exotic exceptions, so a “usually” qualifier would be nice here. The pdf also lists the various forms of wondrous items and then mentions cursed items, intelligent items and artifacts, though sans elaborating on the mechanics of ego etc.
After we have established the categories , we take a look at activation types, starting with use activated items, noting potions as special and then lists the peculiarities of command word items and spell trigger and spell completion items. It should be noted that use activated magic items that require an extra action to activate, as correctly stated, do not per default provoke an attack of opportunity, unless the action undertaken to activate the item would provoke an attack of opportunity. On the plus-side: The pdf takes the notes of spell completion items and scrolls and blends them into a concise whole that is easier to grasp for new players.
Finally, the pdf mentions the Use Magic Device skill’s basics.
Editing is tight and well-done; formatting is problematic, failing to italicize pretty much all spell and magic item references. Layout adheres to a 2-column standard with a touch of color, but remains pretty printer-friendly. The pdf comes fully bookmarked for your convenience.
Michael McCarthy’s summary of how magic items work represents a really handy little pdf; while I could list all the odd exceptions to the rules presented, as a whole, this represents a concise and precise summary that can easily be handed to a new player, helping them grasp the basics of the game. As a PWYW game-aid of sorts, this is worth checking out if you’re not need a quick explanation of the basics here. All exceptions and deviations I noticed are the more obscure components that go beyond the basics – and as such, they are not necessarily required for such a pdf. While the formatting oversights are annoying, the PWYW-status of the pdf makes it a fair offering. My final verdict will hence clock in at 4.5 stars, rounded up for the purpose of this platform.
This module provides a way to define dynamic lists of entities using a simple interface. The list definition is stored in a custom field, which can be attached to any fieldable content entity.
The field widget allows editors to enrich their list definitions with filters based upon taxonomy terms and provides a live preview within the edit form on the list result. This result is not static, so every time content matching the list criteria gets entered in the system the output of the list adapts subsequently.
Tim Lehnen, (hestenet), Director of Engineering for the Drupal Association and Neil Drumm (Drumm, Senior Technologist at the Drupal Association join Mike Anello to take a bit of a deep dive into the continuing evolution of Drupal.org tooling - specifically the modernization of the issue queue, patch process, code reviews, and more. Along the way, we try to figure out where (when?) the phrase "feather in your cap" comes from, exactly what Neil does in his free time, and why Mike isn't nearly as cool as he thinks.Interview
- Tim's monthly What new on Drupal.org? blog posts.
- Contribute module
- Developer Tools Initiative - Part 1: An update, and where we stand
- Developer Tools Initiative - Part 2: Comparing our options
- Developer Tools Initiative - Part 3: Illustrating modular integration for Developer Tooling on Drupal.org
- Developer Tools Initiative - Part 4: What's next?
- Mastering Drupal Development Workflows with Pantheon - begins February 27, 2018.
- Drupal Career Online - begins March 26, 2017.
- Drupal Aid - Drupal support and maintenance services. Get unlimited support, monthly maintenance, and unlimited small jobs starting at $99/mo.
- WebEnabled.com - devPanel.
If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.
This module is an extension for Isotope Views module (part of Isotope module) and provides new Isotope Bootstrap Grid' format that allows to have bootstrap-native grid instead of 'item list' grid (ul li) that is provided by default 'Isotope Grid' format.Dependencies
Isotope (Isotope and Isotope Views)
One of the most exciting things the internet has given us (in my opinion) is the ability to play role playing games with geographically distant folks. Playing online solves a number of problems—having trouble meeting like minded gamers in your area? Don’t have child care? Really want to play with your friends in New York, Illinois, and Canada? Ice storm? No problem! The internet is here—with streaming video, handy mapping systems, and dice rolling plugins—to save us! But GMing online comes with some extra challenges that are amplified from playing at an in person table. How can you mitigate these to make playing online the best experience you can?Some quick definitions
Firstly, so that we’re clear, by playing online I mean you are playing via Google hangouts, Skype, Roll20, etc., and not at a physical table. Specifically, you’re all remote from each other—playing with one or two people remote and other people local presents its own set of challenges, which I have not personally found an effective solution for. (If you have one let me know in the comments!)
Secondly, table control is the ability of the GM to socially keep the table on track or bring it back to order after breaks etc. Table control in person looks like this:
- Reading verbal and nonverbal cues to push the game faster or slow it down
- Managing the amount of out-of-game talk to keep it appropriate for your game and play style
- Managing social dynamics at the table
- Making sure the spotlight is spread around
- Making sure no one is bored
- Making sure everyone is safe
And of course, there are always audio and video glitches, blurs, freezing, and the most fun part where you all turn into Autobots or Decepticons.
Online, you are responsible for the same things, but you are going to face some different challenges. Online, especially depending on the video quality, it can be much harder to read nonverbal cues. It’s a lot easier to talk over each other, both due to the slight delay in audio, and because it’s easy to say things that would fall to the background at a table but that get picked up by a mic at full volume. It’s also tricky with a max volume of whatever output your players are using because you don’t have a way to raise your voice over everyone else’s to be heard if you need to get things back on track. And of course, there are always audio and video glitches, blurs, freezing, and the most fun part where you all turn into Autobots or Decepticons.
There’s no way to completely eliminate these issues, but there are some practices you can use to mitigate them as much as possible.
- Use video as much as possible—it helps. Even if it’s blurry or when the quality is less than you might wish, you’ll still pick up more from posture and movement than you’ll get from audio only.
- Ask for full attention. You’re not at a table. People are more likely to do things like have the Google Hangouts window open and also Twitter and Facebook. There are many more distractions readily available when your players are already looking at their computer screens.
- Don’t mute other folks when it’s not their turn to talk—joining in on the laughter and small talk is how you create the energy feedback loop like you would have at a real table. If you’re having trouble with interrupting or talking over each other, address it as an online specific table issue, gently. Usually it’s because your players are so excited they just can’t help it! Don’t tell them their enthusiasm is bad, but do let them know we have to be more careful because of the technical limitations than we would at an actual table.
- Do mute folks talking to their cats, husbands, children, roommates, etc. until they are back at full attention. Just because we’re all sitting at home doesn’t mean we should let those things put the game on hold for everyone. Let the player who needs to deal with another issue mute and carry on until they can rejoin you.
- Be even more aware of your spotlight time—it’s easier to forget someone and harder to notice them losing interest. If someone hasn’t said anything in a while, it means their image hasn’t jumped up to take over the screen in front of you for just as long, and that makes it easier to miss folks who are starting to lose interest because they haven’t gotten to act.
- Have cool digital versions of props people can get excited about and engage with—maps, pages of a book, etc. Things that are still exciting to interact with in digital (codes, puzzles, etc.) are best, over just images. Be aware that while there are many more tools that give you access to things like background sounds, many players can find this really hard to concentrate through, so it’s worth asking what is distracting vs. immersive.
- It takes more energy output because the wire translation eats some of your effort. Know that if you are tired or stressed etc., or your players are tired/stressed etc., it will have an exponentially higher effect on your game. Be willing to refer to the final point below:
- When all else fails, relax and do your best. Be willing to say when it’s not working and try again next time.
Having the internet gives us so many new options for playing RPGs in situations where we’ve previously been limited, but it definitely has its own challenges. Do you play games online? What are your best recommendations for keeping things going smoothly despite the lack of physical proximity?
GraphQL is becoming more and more popular every day. Now that we have a beta release of the GraphQL module (mainly sponsored and developed by Amazee Labs) it's easy to turn Drupal into a first-class GraphQL server. In this series, we'll try to provide an overview of its features and see how they translate to Drupal.Blazej Owczarczyk Mon, 01/29/2018 - 10:47
In the last post we talked about the basic building blocks of every GraphQL query - the fields. We've discussed their types and traits as well as described the rules according to which Drupal fields turn into GraphQL fields. This week we were going to expand the topic further and cover field creation, but Daniel Noyola asked an interesting question in the comment below one of the recent articles:
How can I filter the results in a nodeQuery? Like I would in a normal View or with the "where" clause in a SQL Statement. I noticed that it receives a NodeQueryFilterInput but I don't see how to use it.
Fetching entities based on a filter or a set of filters is a common use case, so let's focus on that first.TL;DR
There are two ways to query the entity repository. First one would be through the entityQuery fields which are shipped with the core module but are limited in functionality. They only allow us to filter by base fields and there's no way to use an operator other than equals to. The other approach is much more powerful, as it's based on Views. It requires an additional module - graphql_views - to be installed though. Let's start with the built-in way.The nodeQuery
Each entity type in the system gets its own query field. Let's see in the explorer how it looks like for nodes:
So it's a field (blue) with 3 arguments: offset, limit and filter (purple) which returns a value of type EntityQueryResult (all types are in yellow).
The first two arguments, offset and limit, are for paging and they work the same way as in SQL. Both are integers and both have default values of 0 and 10 respectively (green). Arguments that have default values can be omitted. We'll use this feature in a while.
The last argument - filter - is of a complex type NodeQueryFilterInput. Let's click it:
So it comprises all the base fields of the entity type that is being queried. It's not enough to issue arbitrary queries but it will suffice for a simple use case. This is how we could fetch a list of articles created by a given user:
We haven't specified the offset nor the limit, so they'll get their default values. It means that the output will contain at most 10 results, starting from the result number 0.
That's cool, but what if we wanted to order the articles by node id (nid) to only show the latest articles? Or filter by tags? Or fetch the title text of an image that is attached to a media entity that is connected with the first event that starts after the article's release date?Use The Views
The answer is: we can do it like we'd normally do it in Drupal - with a view. Views integration has been moved to a separate project, so it has to be downloaded with composer (composer require drupal/graphql_views), from drupal.org or from github.
With graphql_views enabled we can add a GraphQL display to any view in the system.
Now we can sort the results, filter based on content fields and add relationships. We also have the option to return either the full entities, just a selection of fields, or even search results taken straight from a search server.
Contextual filters set in the view will automatically turn into the arguments of the GraphQL field. Let's see an example:
This field represents a simple view showing nodes. It has one contextual filter - Content: Authored by - so the corresponding input type consists of just one field:
and its row type is set to Entity (as pictured on the screenshot above), so the result will be of type NodeArticle:
We can use the filed like this:
Views integration is a pretty broad topic, so in the next post we might try to cover it in more detail. There are quite a few more interesting aspects like sorting, exposed filters, and attaching views to entities, so we'll focus on that in an attempt to fully answer Daniel's question. For those interested in the back-end side of things I'd recommend the great Extending GraphQL series by Philipp Melab. The first post that explains how to create fields is here: Extending GraphQL: Part 1 - Fields.
P.S. GraphQL Views is not stable yet. In fact, two issues were spotted and fixed in the process of writing this article. If you spot a bug please report it on github or let us know in the #graphql channel at Drupal slack.Other posts in the series
Integrating UberCart with Klaviyo. Here's the data we sync from UberCart after checkout completion.
- Customer information: First name, Last name, Email
- Viewed products
- Add to Cart
- Started Checkout
- Purchased Products
Amitai and Adam discuss a 1.6 million dollar stamp sale, skill set mastery and technological decision making, and the value of slowing down. Along the way Amitai explains his indifference to Drupal 8 and why Gizra’s Drupal-Elm Starter Kit uses Drupal 7 and Restful 1.x.
This week's Video Game Deep Cuts includes a deep dive into Gorogoa, what went wrong in the making of Lair, and the concept of 'coziness' in games. ...
A boxout is a design element used mainly in magazines to enclose related information to the main article while retaining some type of connection. You can use it to add extra links related to your content or a small bio.
The "Boxout" contrib module helps you add this design element to your content directly in CKEditor. In this tutorial, you will learn how to do just that. Let’s start!
This module integrates with the anti-virus scanner Cloudmersive Antivirus API.
Uploaded files are forwarded to the Cloudmersive Antivirus service and checked.
are blocked in the validation routine, so they cannot be saved.
This module provides a view style plugin, which is capable to insert custom row into a views row results after every nth row or once per page.
The inserted row can contain a standard Drupal block or custom content. The row can use the custom class name along with the default row classes like views-row-1 and standard striping (odd/even), first/last row classes or it can go without them.
This module can be used for placing Google Ads or any other code snippets/content into your views blocks/pages.