All RPGs and Storygames by Tod Foley are now available at DrivethruRPG. Bring these games to your table!
The CiviCRM core team have looked at this and are now in a position to complete the work to make this an official CiviCRM release. This means they will make changes so
- CiviCRM can easily be installed with Drupal 8
- They will ensure CiviCRM works with Views in Drupal 8
- Going forward future CiviCRM releases will be tested with Drupal 8
Any money raised by the Make It Happen which is not spent on the initial work will be used to support future work on the CiviCRM Drupal 8 integration as needed. What about Drupal 9? Isn't that being released soon? Both Drupal 7 and 8 are officially supported until November 2021. But the move from Drupal 8 to Drupal 9 will not be the same as previous Drupal major updates. It will be much easier to migrate existing sites between Drupal 8 to 9. For more information see https://dri.es/drupal-7-8-and-9. The CiviCRM core team has looked at this and the code changes required to ensure CiviCRM works with Drupal 9 should be minimal. So very importantly this Make It Happen work is also preparation for Drupal 9. If your organisation uses CiviCRM with Drupal then please contribute to this Make It Happen. https://civicrm.org/make-it-happen/civicrm-d8-the-official-release CiviCRMDrupalDrupal 8Make it happen
An easy to use module to manage petitions on Drupal.
Create, Edit, Check results, Publish Results, Send notifications...
Former Fortnite UX lead Celia Hodent talks to Gamasutra about building a more ethical games industry, and what it would take for lead developers to shift the way they monetize their games. ...
Three of Gameloft's existing mobile games will be updated to offer Xbox Live support in the coming year. ...
Using UI pattern libraries in Storybook allow us to build a collection of front end UI components that can be used to build bigger components, even full web pages. However, frontend/backend integrations can be fraught with difficulties. In this piece, I’ll explain our process to make these challenges easy, even when using GraphQL fragments inside Twig templates.Jamie Hollern Mon, 05/06/2019 - 20:54 What Drupal and GraphQL do well
At Amazee Labs, we build decoupled web applications using GraphQL and Drupal. We’ll touch on the reasons that we use this approach in this article, but if you’d like to know more, check out these blogs:
- Introduction to GraphQL
- Don’t Push it: Using GraphQL in Twig
- Graph QL with Twig: Questions and Answers
Drupal is known for its complex and unwieldy theming and rendering system. Data to be rendered comes from across the system in the form of templates, overrides, preprocess functions and contributed modules such as Panels and Display Suite. Sometimes trying to track down where data is being generated or altered is like a murder mystery.
Thankfully, GraphQL Twig simplifies the situation massively. Each template has an associated GraphQL query fragment that requests the necessary data. This “pull” model (as opposed to Drupal’s normal “push” model) means that finding where the data comes from and how it is structured is really easy. We don’t need to worry about preprocessing or alteration of data, and this method lets us keep the concerns separated.Advantages of UI component libraries
The main advantage of using a UI component library (also known as a pattern library) is that it facilitates the reusability of components. This means that when a component is created it can be used by any developer on the project to build their parts of the front end and in turn can be used to make larger and more complex components.
There are multiple extra advantages to this, the most obvious being the speed of development. Since all components are simply made up of smaller components, building new ones is usually much quicker, since we don’t need to reinvent the wheel.
This also makes maintenance a breeze, since we’re only maintaining one version of any component. If we decide that all buttons on the frontend need to have an icon next to the text, we simply change the button component and this change will apply everywhere that the component is used.
Finally, the reusability of components in a pattern library means that the UI is consistent. Often, web projects face difficulties where there are multiple versions of various components, each with their own implementation. This is especially true of larger projects built by multiple people, or even multiple teams, where no single person knows the entirety of the project’s implementation details. Thanks to the reusability of our components, we only have one implementation per component.Challenges of using Drupal, GraphQL, and Storybook together
If done poorly, using pattern libraries like Storybook can be difficult and cause problems during the integration phase(s) of development. The main issue is usually that the frontend and backend developers have different approaches and different goals when developing.
The frontend developer wants to create the best UI they can in the most efficient way possible, using the paradigms and approaches that are standard or preferred. Unfortunately, at times the implementation doesn’t sync well with the data structure that the backend developers receive from Drupal, so the frontend needs to be refactored or the data structure needs to somehow be altered.How to make it work
I won’t go into detail on our implementation of the Storybook library, but we keep Storybook in the same repo as our Drupal application, outside the root. We then define a base storybook theme and using the Components module (built by my talented colleague John Albin), we define our path to the Storybook Twig templates as a component library in our .info.yml file. This way, the Drupal theme has access to all of our templates.
We then create our project-specific theme, which extends the base Storybook theme, and start to work on our integration. A generic page.html.twig file might look like this:
At Amazee, we use a UI component library because it makes sense to build a maintainable, reusable and consistent set of components for our frontend that also encourages faster development. We also try our best to streamline our integration processes so that all of our developers are more closely aligned and developing solutions that make it easier for their colleagues to use, learn and extend easily.
Storybook gives us the power to build a component library using mock data that is structured in the exact manner that our GraphQL queries deliver it. This means no refactoring, building both queries and templates only once and an overall smooth integration process.
Want to know more about using GraphQL and Twig? Check out our webinar!
A report from Niko Partners finds that PC game revenue in China hit $15.21 billion in 2018 and could reach $16 billion by 2023. ...
Drupal released its latest version - Drupal 8.7.0 on 1st May 2019. The latest version of Drupal 8.7.0 accomplishes tasks like making page layouts, media management and decoupled web experiences easier to manage and deliver, conserving production time and effort and it was recently revealed at DrupalCon Seattle 2019.
Core objectives when developing Drupal 8.7 were to:
- Make Drupal easy for content creators and site builders
- Make Drupal easy to evaluate and adapt.
- Keep Drupal impactful and relevant
- Reduce total cost of ownership for developers and site owners
The latest Drupal 8.7 update includes JSON:API as a part of the Drupal core!
This makes Drupal an API first platform for building both decoupled and coupled applications. JSON API module exposes the entities as a standards-compliant web API and data can then be pulled from third-party URLs or API’s.
JSON:API is designed specifically to minimize both the number of requests and the amount of data transmitted between clients and servers. This efficiency is achieved without compromising readability, flexibility, or discoverability.
By enabling the JSON:API module, you can immediately create a full REST API endpoint for every type(content, taxonomy, user, etc.) in your Drupal application. JSON:API inspects your entity types and their bundles to dynamically provide URLs to access every entity using the standard HTTP methods, GET, POST, PATCH, and DELETE.
JSON:API adopts the philosophy that the module should be production-ready. This means the module is highly opinionated about where your resources will reside, what methods are immediately available for them, and allows Drupal Core's permissions system control the access. The configuration pages are no longer present in this upgrade (Drupal 8.7). This means that you can get an API-driven Drupal application up and running with minimal effort.
Watch the JSON:API demohere!Stable Layout Builder
The Stable Layout Builder was released with Drupal 8.6 as an experimental module and now it is stabilized in Drupal 8.7.
Drupal 8's Layout Builder allows content editors and site builders to easily and quickly create visual layouts for displaying content. Users can customize how content is arranged on a single page, across content types, or even create custom landing pages with an easy to use drag-and-drop interface.
Explore the sections below to find out how to get started with Layout Builder and how to apply it to templated content types. Layout Builder is anchored on one of Drupal’s stronger features – the ability to create structured content; but it faces some of the same accessibility challenges encountered by WordPress’ Gutenberg editor. Drupal's Layout Builder offers a single, powerful visual design tool for three use cases:
Layouts for templated content: The creation of "layout templates" that will be used to layout all instances of a specific content type (e.g. blog posts, product pages).
Customizations to templated layouts: The ability to override these layout templates on a case-by-case basis (e.g. the ability to override the layout of a standardized product page).
Custom pages: The creation of custom, one-off landing pages not tied to a content type or structured content (e.g. a single "About us" page).
Watch the Demo of Drupal 8 Layout Builderhere!Media Library
Drupal 8.6 had Media Library in the Drupal core, which was a part of Media Initiative. In Drupal 8.7 Media Library comes with a new stylish and handy user interface. Which makes it nice to look and nice to work with. Media library is now stable.Third-party library updates
- Guzzle has been updated from 6.3.0 to 6.3.3.
- Previously, Drupal packaged a copy of the PEAR Archive_Tar library in a Drupal core namespace. In Drupal 8.7, this has been deprecated and replaced with a proper Composer dependency on this library. The dependency has also been updated to version 1.4.6.
- Stylelint has been updated from 9.1.1 to 9.10.1. Stylelint version: https://github.com/stylelint/stylelint/releases/tag/9.10.1
- Coder to ^8.3.1
- CKEditor has been updated to 4.11.3.
- Twig has been updated to 1.38.4.
- A number of other PHP dependencies have also been updated, including:
- composer/installers to 1.6.0
- composer/semver to 1.5.0
- egulias/email-validator to 2.1.7
- paragonie/random_compat to v2.0.18
- Most symfony/* components to v3.4.26
- symfony/http-foundation to v3.4.27
- symfony/polyfill-* to v1.11.0
- typo3/phar-stream-wrapper to v2.1.0
The 8.7.0 release is a final goodbye to Internet Explorer 9 and 10. It removes a workaround that still existed in D8.5 and D8.6 Issue link: Internet Explorer 9 and 10 support dropped from Drupal 8.4.xGoodbye PHP 5 support
Drupal 8.7 is the last release to support PHP 5. Updates for existing websites that use PHP 5 are still possible, but a warning will be displayed. In release 8.8, Drupal security updates will require PHP 7.Entity updates will not be automatic
In new Drupal 8.7.0 release, the support for automatic entity updates has been removed. The reason is data integrity issues and conflicts. So the drush entity: updates (drush entup) command no longer works. Changes to entities will now be performed using standard update procedures.Symfony 4 and 5 compatibility issues resolved
Additionally, numerous critical Symfony 4 and 5 compatibility issues are resolved in this release.Changes to base themes (Stable, Classy)
These Drupal upgrades are gradually getting us ready for Drupal 9. If you have questions regarding Drupal upgrades we are here to help. Drop us a word at firstname.lastname@example.org Mon, 05/06/2019 - 20:43
This module changes default image field widget and formatter to allow
This short preview - designed to promote a Kickstarter campaign for the complete product - begins with an explanation of how to create a 'Gruesome' monster by adding one of the gruesome templates to an existing monster (or, of course, one of your own devising. Each template comes with an example creature, but although certain templates seem suited to particular types of creature, it's suggested that mixing them up a bit can result in interesting and challenging foes. There are also suggestions for how to use the monsters to which you apply that template to best effect and a set 'shock value'.
The 'shock value' is an indicator of the sheer visceral horror induced by meeting the gruesome monster, a real treat for those who want to add a twist of horror to their game. You may be aiming for a horror-themed game anyway, or perhaps you want the shock factor of introducing one such monster at an appropriate place in a more regular game. Either can be an effective use of these templates.
The samples presented are the Bound Horror - which poor beastie is bound to a given location or object (or even an individual) - and the Forgotten - which exist in more than one reality simultaneously and can cause amnesia in those who encounter them. Hopefully you can forget meeting one, 'cos they look quite repulsive and, yes, gruesome!
If you like the look of this, trundle over to the Kickstarter and sign up!
Allows to make and visually compare screenshots of your Drupal website. These
can be integrated in your continuous integration environment.
This module provides two aspects for a common purpose:
- A web interface to compare screenshots
- A CLI interface to run tests and create screenshots.
Tests are written as CasperJS scripts.
This module allows the Forex traders to keep their trades in a journal. The journal includes various trade related information such as the currency pair, buy price, open date and time, etc.
Gamemasters looking to pull themselves out of their gaming rut might consider running a scenario with a “Groundhog Day” time loop.
I have an affinity for such storylines, and will eagerly watch a TV show or read novels that employs the time loop trope, should they cross my path.
(Strangely, though, I have never actually seen the trope’s namesake, the 1993 film comedy “Groundhog Day” starring Bill Murray — I prefer to meander into these experiences through happenstance rather than intentionally seek them out, I suppose).
I unexpectedly encountered another such example when I recently watched Star Trek: Discovery for the first time. One episode in the new CBS Series features the rascal Harry Mudd using a time loop to exact vengeance upon the Discovery’s captain and crew.
My favorite comes, of course, from Xena: Warrior Princess. In “Been There Done That,” Xena, Gabrielle and Joxer keep reliving the same day until she finds a way to prevent a town’s young lovers from rival families from using the Romeo and Juliet “solution” to consummating their affair. In one iteration, Joxer buys it with a chakram to the chest — perhaps the most therapeutic moment of the entire run of the series.
There are others, of course. The Star Trek: The Next Generation episode “Cause and Effect,” Doctor Who and Romana taking on Meglos and the classic X-Files episode “Monday.” And I’d be remiss if I didn’t mention Roland’s entire quest from The Dark Tower series or the repetitive Seven Ages that serves as the introduction of each novel in the Wheel of Time series. (“The Wheel of Time turns, and ages come and pass, leaving memories that become legend. Legends fade to myth, and even myth is long forgotten when the Age that gave it birth comes again.”)
With that out of the way, how can you structure a scenario so that it presents a Groundhog Day scenario for your players?Part 1: Construct a Decision Line.
This is the first, and most important part. Establish a sequence of decisions that serves as the spine of the scenario. Between five and seven decision points should prove sufficient. These are the “turn left, turn right” moments the PCs must correctly determine to correctly “fix” the timeline. Basically, these are knobs that must be turned to a correct setting so that time resumes correctly. To think of it another way: it’s like setting a combination lock or making sure a sequence of switches is open to complete an electrical current circuit.Part 2: The first time
The PCs will go through the decision tree. There is no right or wrong at this point — yet. But the GM should note the decisions. Once the PCs complete the “day,” begin the reset. Pick about half the decision points, and flick them “off.” That means those points in the narrative are the ones the PCs have the change. Keep these changes to yourself. It’s up to the PCs to discover the correct combination on subsequent loops.Part 3: Every day in the loop starts the same
This is the cue to the PCs that their efforts in each loop were not successful and that time is, indeed, repeating.Part 4: Establish an Objective
At this point, the GM must decide who or what is causing this time ripple and forcing events to repeat? A powerful entity, a god, quantum mechanics, a leaf on the wind — one is as good as another. The more important question is to answer “Why?” Before the sequence can be established, “something significant” must be corrected. Usually, this means that one of the PCs must fall in love / discover something about themselves / treat someone special with an appropriate amount of “love and/or respect. It is a McGuffin of sorts — and instead of digging into one of the characters’ psyche, obtaining an object is also a good substitute. Nothing can happen until someone has that proverbial Golden Apple.Part 5. Interloper
The person or persons that are key to obtaining/understanding the object needs to be introduced on the second loop. This NPC must have characteristics that encourage one of the players to have a change in their personality or outlook — or if you are playing D&D fifth edition, causes them to reevaluate their bonds, flaws or ideals.Part 6: Hand wave the rinse and repeat
Once the PCs establish points of the sequence that are correct, the PCs should be able to handwave over any sequences they know are correct. Essentially, they are fast forwarding past known decision points — just like they do on TV. This keeps the game moving along and prevents any miscues and keeps the session manageable.Part 7: A magical thing
The final solution should an extraordinary demonstration of one PC’s ability — or, even better, group collaboration. The PCs must somehow manage to do one magical thing correctly to carry the day. It must be a stretch of their abilities — and carry an element of risk. (For example, Xena making that most difficult chakram toss of her career).Part 8: That day is done — at last!
How does one know the solution was effective? The next day starts differently for the first time. The sun rises, the birds sing and all is right with the world …
… until the next adventure comes around the corner.