Drupal

KnackForge: How to update Drupal 8 core?

Planet Drupal - 23 March 2018 - 10:01pm
How to update Drupal 8 core?

Let's see how to update your Drupal site between 8.x.x minor and patch versions. For example, from 8.1.2 to 8.1.3, or from 8.3.5 to 8.4.0. I hope this will help you.

  • If you are upgrading to Drupal version x.y.z

           x -> is known as the major version number

           y -> is known as the minor version number

           z -> is known as the patch version number.

Sat, 03/24/2018 - 10:31
Categories: Drupal

Toggle Editable fields

New Drupal Modules - 2 hours 49 min ago
Categories: Drupal

Random Quotes

New Drupal Modules - 7 hours 2 min ago

Random Quotes fetches random quotes from TV shows. It's really an entertainment module.

Categories: Drupal

TMGMT Translator TextMaster

New Drupal Modules - 8 hours 23 min ago
Categories: Drupal

common asked questions

New Drupal Modules - 10 December 2017 - 10:28pm
Categories: Drupal

Spinning Code: A Process to create a Drupal 8 module’s Config

Planet Drupal - 10 December 2017 - 10:43am

One of the best practices for Drupal 8 that is still emerging is how to create modules with complex deployable configuration. In the past we often abused the features module to do this, and while that continues to be an option, with Drupal 8’s vastly improved configuration management options and the ability to install configuration easily I have been looking for something better. I particularly want to build modules that don’t have unnecessary dependencies but I can still reliably include all the needed configuration in my project. And after a few tries I think I’ve struck on an effective process.

Let’s start with a quick refresher on installing configuration for a Drupal 8 module. During module installation Drupal will load any yaml files that match configuration patterns it already knows about that are included in your module’s config/install directory. In theory this is great but if you want to include configuration that comes with other modules you have to figure out what files are needed; if you want to include configuration from core modules you probably will need to find a fairly large collection files to get all the required elements. Finding all those files, and copying them quickly and easily is the challenge I set out to solve.

My process starts with a local development sandbox site that is just there to support this development work, and I create a local git repository for the site’s configuration (I don’t need to connect it to a remote, like Bitbucket or GitHub, or handle all of the site’s code since it’s just to support finding changes to config files). Once installation and any base configuration is complete I export the site’s config to the directory covered by the repo (here I used d8_builder/config/sync, the site itself was at d8_builder/pub), and make sure all changes in the repository are committed:

Now I create my module and a second repository just for it. The module’s repository is linked to a remote since this is the actual product I’m creating.

With that plumbing in place I can to make whatever configuration change I need included in the module. Lately I’ve been creating a custom moderation workflow with several user roles and edge cases that will need to be deployed on a dozen or so sites, so you’ll see that reflected below, but this process should work for just about any project with lots of interrelated configuration.

Once I have completed a set of changes, I export the site’s configuration again:  drupal config:export

Now git can easily show which configuration files were changed, added, or removed:

Next I use git, xargs, and cp to copy those files into your module (hat tip on this detail to Andy Gregorowicz):
git ls-files -om --exclude-standard --exclude=core.extensions.yml |  xargs -I{} cp "{}" pub/modules/custom/fancy_workflow/config/install/

Notice that I skip the core.extensions.yml file. If your module had dependencies you’ll still need to update your module’s info.yml file to list them.

These files are great except for one detail: they all start with the UUID for the sandbox site, which will cause break imports. So I hop into the module’s config/install directory and use sed to remove those lines:
sed -i '/^uuid/d' *

Now a quick commit and push of the changes to the module’s repo, and I’m ready to pull the module into other projects. I also commit the builder repo to ensure it’s easy to track any future changes.

This isn’t a replacement for tools like Configuration Installer, which are designed to handle an entire site, this is intended just for module development.

If you think you have a better solution, or that I’m missing something important please let me know.

Categories: Drupal

Pocket API

New Drupal Modules - 10 December 2017 - 7:19am

The Pocket service allows users to manage a list of web pages that can be synchronized to a variety of devices and apps.

This module provides a client that can push URLs to Pocket, potentially allowing users of a Drupal site to connect their Pocket account and automatically receive newly published content. [Very much a work In progress.]

This module is not affiliated with Pocket or the Mozilla Corporation.

Categories: Drupal

Canvas Fingerprint

New Drupal Modules - 10 December 2017 - 5:00am
Categories: Drupal

Сontact Mail

New Drupal Modules - 10 December 2017 - 1:01am
Categories: Drupal

PhpMail alter

New Drupal Modules - 10 December 2017 - 12:59am
Categories: Drupal

Commerce PayTabs

New Drupal Modules - 9 December 2017 - 9:07pm

This module integrates PayTabs with Drupal Commerce.
This is an offsite payment gateway. It provides credit card payments only, so far.

Installtion instructions:
* You can install this module via Composer (recommended), or
* clone it from drupal.org Git repo, or
* Download the module from drupal.org

Make sure to enable the 'Telephone' core module after installtion since this gateway requiers a phone number. A telephone field is added to the customer profile created by commerce.
This module may use external libraries in its future versions.

Categories: Drupal

Freelock : A custom quantity price discount for Drupal Commerce

Planet Drupal - 9 December 2017 - 1:01pm

We're in the midst of a Commerce 2 build-out for a client, and a key requirement was to preserve their quantity pricing rules. With thousands of products, and different pricing rules for each one, they need the price for each item in the cart adjusted to the appropriate price for the quantity purchased. When validating our plan for Drupal Commerce 2, we stumbled upon some examples of a custom price resolver, and knew this would work perfectly for the need.

Drupal 8Drupal CommerceDrupal PlanetField API
Categories: Drupal

Buster

New Drupal Modules - 9 December 2017 - 6:49am

Appends a cache buster to URLs generated by the public stream wrapper so that they will be cache busted by CDNs etc. when the contents of the file changes.

Categories: Drupal

Drupal useful tools

New Drupal Modules - 9 December 2017 - 5:38am

Drupal useful tools is a collection of tools which help with and simplify site building and development.

Components Views:

Provides "Theme" option inside "Advanced" column in Views UI. This option was in Drupal 7 and not ported (#2362413: Where to find "Theme information" - template suggestions in Views UI).
Fixes twigs problem with displaying view's theme suggestions.

Categories: Drupal

Contact Onlinepbx

New Drupal Modules - 9 December 2017 - 1:06am
Categories: Drupal

Wim Leers: API-First Drupal — really!

Planet Drupal - 8 December 2017 - 1:54pm

This blog has been quiet for the last year and a half, because I don’t like to announce things until I feel comfortable recommending them. Until today!

Since July 2016, API-First Drupal became my primary focus, because Dries felt this was one of the most important areas for Drupal’s future. Together with the community, I triaged the issue queue, and helped determine the most important bugs to fix and improvements to add. That’s how we ended up with REST: top priorities for Drupal … plan issues for each Drupal 8 minor:

If you want to see what’s going on, start following that last issue. Whenever there’s news, I post a new comment there.

But enough background. This blog post is not an update on the entire API-First Initiative, it’s about a particular milestone.

100% integration test coverage!

The biggest problem we encountered while working on rest.module, serialization.module and hal.module was unknown BC breaks 1. Because in case of a REST API, the HTTP response is the API. What is a bug fix for person X is a BC break for person Y. The existing test coverage was rather thin, and was often only testing “the happy path”: the simplest possible case. That’s why we would often accidentally introduce BC breaks.

Hence the clear need for really thorough functional (integration) test coverage2, which was completed almost exactly a year ago. We added EntityResourceTestBase, which tests dozens of scenarios3 in a generic way4, and used that to test the 9 entity types, that already had some REST test coverage, more thoroughly than before.

But we had to bring this to all entity types in Drupal core … and covering all 41 entity types in Drupal core was completed exactly a week ago!

The test coverage revealed bugs for almost every entity type. (Most of them are fixed by now.)

Tip: Subclass that base test class for your custom entity types, and easily get full REST test coverage — 41 examples available!

Guaranteed to remain at 100%

We added EntityResourceRestTestCoverageTest, which verifies that we have test coverage for all permutations of:

  • entity type
  • format: json + xml + hal_json
  • authentication: cookie + basic_auth + anon

It is now impossible to add new entity types without also adding solid REST test coverage!

If you forget that test coverage, you’ll find an ASCII-art llama talking to you:

Good people of #Drupal, I present unto you the greatest method of all time. https://github.com/drupal/drupal/blob/8.5.x/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceRestTestCoverageTest.php#L141 pic.twitter.com/TiWLPt7duH

— webcsillag (@webchick) December 8, 2017

That is why we can finally say that Drupal is really API-First!

This of course doesn’t help only core’s REST module, it also helps the contributed JSON API and GraphQL modules: they’ll encounter far fewer bugs!

Thanks

So many people have helped! In random order: rogierbom, alexpott, harings_rob, himanshu-dixit, webflo, tedbow, xjm, yoroy, timmillwood, gaurav.kapoor, Gábor Hojtsy, brentschuddinck, Sam152, seanB, Berdir, larowlan, Yogesh Pawar, jibran, catch, sumanthkumarc, amateescu, andypost, dawehner, naveenvalecha, tstoeckler — thank you all!5

Special thanks to three people I omitted above, because they’re not well known in the Drupal community, and totally deserve the spotlight here, for their impressive contribution to making this happen:

That’s thirty contributors without whom this would not have happened!

And of course thanks to my employer, Acquia, for allowing me to work on this full-time!

Next

What is going to be the next big milestone we hit? That’s impossible to say, because it depends on the chains of blocking issues that we encounter. It could be support for modifying and creating config entities, it could be support for translations, it could be that all major serialization gaps are fixed, it could be file uploads, or it could be ensuring all normalizers work in both rest.module & jsonapi.module

The future will tell, follow along!

  1. Backwards Compatibility. ↩︎

  2. Nowhere near 100% test coverage, definitely not every possible edge case is tested, and that is fine↩︎

  3. Including helpful error responses when unauthenticated, unauthorized or just a bad request. This vastly improves DX: no need to be a Drupal expert to talk to a REST API powered by Drupal! ↩︎

  4. It is designed to be subclassed for an entity type, and then there are subclasses of that for every format + authentication combination. ↩︎

  5. And this is just from all the per-entity type test issues, I didn’t look at the blockers and blockers of blockers. ↩︎

  • Acquia
  • Drupal
Categories: Drupal

cowsay

New Drupal Modules - 8 December 2017 - 9:56am
Categories: Drupal

Composerize

New Drupal Modules - 8 December 2017 - 9:10am

Provides a Drupal Console command which can generate a composer.json from your installed Drupal code base, which can be used to regenerate that code base by running composer install. Embrace the future!

To use, install Drupal Console. Then install this module, and run this command from inside your Drupal root:

$ drupal make:composer

This will output the contents of the generated composer.json. To save it to a file, pipe it:

Categories: Drupal

Paragraphs View Modes

New Drupal Modules - 8 December 2017 - 9:05am

This module contains a behavior plugin for the Paragraphs module. This plugin allows you to select a different view mode for the paragraph in the content add/edit form.

Categories: Drupal

Pages

Subscribe to As If Productions aggregator - Drupal