Development News

MidCamp - Midwest Drupal Camp: Stay Connected

Main Drupal Feed - Wed, 11/14/2018 - 15:50
Stay Connected

MidCamp never stops (although we do take frequent coffee breaks), so make sure you stay connected.

We’re on the MidCamp Slack year-round to discuss the event, Drupal, jobs or other goings-on in the Chicagoland area.

You can also meet up with us IRL by attending Drupal Chicago Meetup.

Watch all of the MidCamp sessions from our previous years on our YouTube channel.

As always, be sure to follow us on Twitter, LinkedIn, and Instagram. For the most up-to-date information about all things, MidCamp subscribe to our newsletter

OPTASY: How to Create and Manage a Content Workflow in Drupal 8: Either a Standard or a Custom One

Main Drupal Feed - Wed, 11/14/2018 - 14:01
How to Create and Manage a Content Workflow in Drupal 8: Either a Standard or a Custom One adriana.cacoveanu Wed, 11/14/2018 - 14:01

"A Drupal 8 initiative to improve Drupal's content workflow", this is how Dries Buytaert first defined the Workflow Initiative, back in 2016. Now, coming back to 2018, you must be asking yourself a legitimate question: “How do I set up a content workflow in Drupal 8?”

“How do I manage, extend and customize an editorial workflow to fit my Drupal 8 website's publishing needs? One including multiple users, with different permissions, that manages the workflow status of... different content types.”

Vardot: Top 5 Drupal Modules For Marketers

Main Drupal Feed - Wed, 11/14/2018 - 12:06
Firas Ghunaim November 14, 2018

The role of marketers has evolved beyond simply managing and coordinating online advertising campaigns to drive traffic to their respective websites; successful marketers must transform themselves to become storytellers.

Storytelling is an essential skill to master the art of crafting a digital experience for your digital business would-be customers and users. 

Therefore, as a digital business, you must be strategic when it comes to choosing the appropriate platform for your digital experience. 

The fact that you can easily publish and manage multimedia content across multiple websites under one brand has made Drupal a popular and strategic platform for enterprises, the media, healthcare and even powering digital governments.

In short; Drupal is a dream come true for marketers working in the aforementioned industries and sectors.

 

Here are 5 Drupal modules that were created by the Drupal community for marketers:

 

 

1. HubSpot

HubSpot is a widely used and popular inbound marketing software platform that helps companies attract visitors, convert leads, and close customers.

 

Lead generation is a carefully planned ongoing process; deliberate in targeting users based on personalized content marketing.

HubSpot CRM is relied upon by marketers to enable them to qualify the leads generated from the landing pages they developed on their websites.

Marketers that use Drupal-based websites have saved a lot of time and effort by connecting their HubSpot CRM with their web forms that capture the desired user data.

For example, a Webform-based contact form on your site can send its data to HubSpot, where you may already track potential clients and contacts; or a Webform-based e-newsletter signup could send the lead to HubSpot's targeted marketing system, letting you use your pre-existing email campaigns.

Moreover, marketers that create content on HubSpot, can easily display it in Drupal 8’s front-end.

Contact us to integrate HubSpot CRM into your Drupal website seamlessly

 

 

2. Webform

With almost 5,000,000 downloads and nearly 500,000 websites using this module; this makes Webform one of the most popular Drupal modules out there.

 

Forms are an essential feature of a digital experience that relies upon gathering user data relevant to content marketing and personalizing user experiences across all relevant digital platforms.

Webform enables integration with various 3rd party marketing solutions such as MailChimp, HubSpot, and Salesforce to name but a few. You can find a comprehensive list of Webform add-ons here.

A great and simple guide to how you can get started on form building using Webform is available here courtesy of OSTraining.

 

 

3. Google Analytics

This Drupal module adds the Google Analytics web statistics tracking system to your website.

 

According to Builtwith.com, Google Analytics is the most popular analytics tool in the world with at least 37 million live websites currently using the giant tracking and performance monitoring platform.

Marketers that use Drupal website benefit from the Google Analytics module to identify their traffic size, traffic sources and track the performance of their website with regards to ongoing personalization of their user experience.

Being able to seamlessly integrate Google Analytics also provides marketers with real-time data for current site usage and user behavior. In addition to the aforementioned; marketers can track almost every statistic imaginable such as User ID, domain, as well as how many and which files were downloaded and by whom.

For full details regarding the statistics that marketers can track, visit the official Drupal module webpage for Google Analytics here.

 

4. MailChimp

This module provides integration with MailChimp, a popular email delivery service.

 

Regularly maintained and reliable, MailChimp is a favorite tool amongst email marketers. That is mainly due to the attention to both sides of the email exchanges taking place.

This Drupal module allows email marketers to create and send email marketing campaigns from your website and analyze the performance of the campaign while monitoring the behavior of users interacting with your emails.

On the other hand, your website visitors can choose to subscribe (or unsubscribe) easily to the email list of their preference.

MailChimp is not limited to email delivery only; you can also integrate MailChimp E-Commerce which allows marketers to optimize their online store sales via personalized email marketing campaigns and automation workflows.

7 Drupal Modules That Every E-Commerce Must Have

 

 

5. Crazy Egg

This module provides integration with the Crazy Egg heat map service.

 

 

Much of digital business and marketing success comes down to the ongoing enhancement of your digital experience.

This requires a consistent effort of monitoring feedback from your users who in the end must be able to enjoy an engaging user experience that doesn't feature frustrating issues such as slow page load speed and irrelevant content.

The aforementioned frustrations can heavily impact your search engine optimization (SEO) efforts to rank higher on search engines like Google; which makes monitoring online user behavior on-site all the more imperative for marketers.

10 SEO Modules That Every Website Must Have

Crazy Egg is a simple Drupal module that is easy to install to your Drupal 8 (or D7) website to gain access to various reporting formats that showcase online behavior on your web pages.

By recording the user behavior, marketers are able to gain a visual insight into how users interact with different elements, features, and components of their website. Marketers are able to understand where users face challenges browsing the site, which aspects of the website they spend most of their time on and which they avoid completely.

Ultimately, the feedback gained allows marketers to develop the best UI, UX, and content in a more informed manner.

 

 

Bonus: Varbase SEO

This is a core Varbase feature. We strongly recommend Varbase as the ultimate starter kit and distribution to build your Drupal digital experiences.

 

 

Enterprise level organizations and governments that rely upon an ongoing content marketing process require a content publishing and management solution that can handle heavy traffic without compromising performance standards.

This is where Varbase saves the day.

Not only is Varbase inherently optimized for all search engines it also enables you as a content marketer to optimize your multilingual content regardless of the media format to a diverse and global target audience.

  • Optimized markup that is compliant and accessible to WCAG 2.0 Level AA standards
  • XML Sitemap that is also language aware
  • Content SEO grader and recommendations
  • Full-suite of meta tags and descriptive tags that makes your site more optimized, integrated and favorable to search engines such as Google, Yandex, and Bing, and social media networks such as Facebook, Twitter, and many other
  • Total control over how your site will look when appearing on search results
  • Handle redirects with ease and prevent dead links
  • Readable and SEO-friendly URLs that automatically reads your site's structure and hierarchy

 

You can view our work on digital experiences that were built using Varbase here.

 

 

Honorable Mentions:

 

Honeypot

One of the popular Drupal modules available out there. Used by marketers and Drupal platforms that wish to avoid spam.

Honeypot keeps your database clean by blocking spambots from using your web forms using both the honeypot and timestamp methods and is not as intrusive as CAPTCHAs.

 

5 Security Modules Every Drupal Website Must Have

 

Accelerated Mobile Pages (AMP)

The AMP module is designed to convert Drupal pages into pages that comply with the AMP standard

AMP is important because it helps web pages load faster which potentially improves usability and convinces visitors to stay longer on your site engaging with your content.

The logic is straightforward: faster load time leads to better engagement, which reduces bounce rate and improves mobile ranking.

 

If we were to feature every Drupal module out there the list would be way too long, so which Drupal modules do you prefer? How does it help you achieve your marketing goals?

Share with us your own preferences and we will surely feature them as soon as possible.

 

OpenSense Labs: Disseminating Knowledge: Drupal for Education and E-learning

Main Drupal Feed - Wed, 11/14/2018 - 06:56
Disseminating Knowledge: Drupal for Education and E-learning Shankar Wed, 11/14/2018 - 12:26

Have you always secretly wanted to spend your evenings writing symphonies, learning about filmography or assessing climate change? Studying niche subjects have traditionally been for niche students. But e-learning platforms have changed all that with the provision for learning almost any subject online.


Corporate e-learning has witnessed a stupendous 900% growth in the last decade or so. With more and more e-learning platforms flourishing, organisations are striving to be the best to stand apart from the rest. Drupal has been a great asset in powering education and e-learning with its powerful capabilities that can help enterprises offer a wonderful digital experience. Let’s trace the roots of e-learning before diving deep into the ocean of possibilities with Drupal for building an amazing e-learning platform.

Before the internet era Source: eFront

A brief history of e-learning can be traced through the compilation made by eFront. Even before the internet existed, distance education was being offered. In 1840, Isaac Pitman taught shorthand via correspondence where completed assignments were sent to him via mail and he would, then, send his students more work.

Fast forward to the 20th century, the first testing machine was invented in 1924 that enabled students to test themselves. The teaching machine was invented in 1954 by a Harvard professor for allowing schools to administer programmed instruction to students. In 1960, the first computer-based training program (CBT program) called Programmed Logic for Automated Teaching Operation (PLATO).

At a CBT systems seminar in 1999, the term ‘e-learning’ was first utilised. Eventually, with internet and computers becoming the core of businesses, the 2000s saw the adoption of e-learning by organisations to train employees. Today, a plenitude of e-learning solutions are available in the form of MOOCs (Massive Open Online Courses), Social platforms and Learning Management System among others.

E-learning: Learn anywhere, anytime

In essence, e-learning refers to the computer-based educational tool or system that allows you to learn anywhere and at any time. It is the online method of building skills and knowledge across the complete workforce and with customers and partners. It comes with numerous formats like the self-paced courses, virtual live classrooms or informal learning.

E-learning refers to the computer-based educational tool or system that allows you to learn anywhere and at any time

Technological advancements have diminished the geographical gap with the use of tools that can make you feel as if you are inside the classroom. E-learning provides the ability to share material in all sorts of formats such as videos, slideshows, and PDFs. It is possible to conduct webinars (live online classes) and communicate with professors via chat and message forums.

There is a superabundance of different e-learning systems (otherwise known as Learning Management Systems or LMS) and methods which enable the courses to be delivered. With the right kind of tools, several processes can be automated like the marking of tests or the creation of engrossing content. E-learning offers the learners with the ability to fit learning around their lifestyles thereby enabling even the busiest of persons to further a career and gain new qualifications.

Merits and Demerits

Some of the major benefits are outlined below:

  • No restrictions: E-learning facilitates learning without having to organise when and where everyone, who is interested in learning a course, can be present.
  • Interactive and fun: Designing a course to make it interactive and fun with the use of multimedia or gamification enhances engagement and the relative lifetime of the course.
  • Affordable: E-learning is cost-effective. For instance, while textbooks can become obsolete, the need to perpetually acquire new editions by paying exorbitant amounts of money is not present in e-learning.

Some of the concerns that need to be taken care of:

  • Practical skills: It is considered tougher to pick up skills like building a wooden table, pottery, and car engineering from online resources as these require hands-on experience.
  • Secludedness: Although e-learning enables a person to remotely access a classroom in his or her own time, learners may feel a sense of isolation. Tools such as video conferencing, social media and discussion forums can allow them to actively engage with professors or other students.
  • Health concerns: With the mandatory need of a computer or mobile devices, health-related issues like eyestrain, bad posture, and other physical problems may be troublesome. However, sending out proper guidelines beforehand to the learner like correct sitting posture, desk height, and recommendations for regular breaks can be done.
Building Yardstick LMS with Drupal

OpenSense Labs built Yardstick LMS, a learning management system, for Yardstick Educational Initiatives which caters to the students of various schools of Dubai.

Yardstick LMS Homepage

The architecture of the project involved a lot of custom development:

1. Yardstick Core

This is the core module of the Yardstick LMS where the process of creating, updating and deleting the nodes take place.

2. Yardstick Quiz

We built this custom module for the whole functionality of the quiz component. It generates a quiz, quiz palette and quiz report after quiz completion based upon the validation of the visibility of the report.


We could generate three kinds of reports: 

  • An individual-level quiz where one’s performance is evaluated
  • A sectional-level report where performance for each section is evaluated
  • Grade-level report where performance for all the sections is compared and evaluated.

For the quiz, we had different sub-components like questions, options, marks, the average time to answer, learning objective, skill level score, and concept. The same question could be used for different quiz thereby minimising the redundancy of the data. Also, image, video or text could be added for questions.


3. Yardstick Bulk User Import

This module was built to assist the administrators in creating users all at once by importing a CSV file. Also, there is an option to send invitation mail to all the users with login credentials.


4. Yardstick Custom Login

We provided a custom login feature where same login credentials could be used to log into the Yardstick system. That is, we provided an endpoint for verifying the login credentials and upon success, users were logged in.

5. Yardstick Validation

This module offers all the validation across the site whether it is related to access permission or some time validation.

6. Yardstick Challenge

It offers the user an option to submit a task which is assigned to them where they are provided with text area and file upload widget.

Yardstick LMS has an intricate structure

On the end user side, there is a seamless flow but as we go deeper, it becomes challenging. Yardstick LMS has an intricate structure.

We had two kinds of login:

  • Normal login using Yardstick credentials
  • And the other for school-specific login like the Delhi Public School (DPS) users.
Yardstick LMS custom login for DPS users

For DPS users, we used the same login form but a different functionality for validating credentials. DPS school gave us an endpoint where we sent a POST request with username and password. If the username and password were correct, then that endpoint returned the user information.

If the username was received, we checked on our Yardstick system if the username exists. If it does not exist, then we programmatically created a new user with the information that we received from the endpoint and created a user session. And if does exist, then we updated the password on our system.

Yardstick LMS is designed to govern multiple schools at the same time

We designed Yardstick LMS in such a way that multiple schools can be governed at the same time. All the students of various schools will be learning the same content thereby building uniformity.

The core part of our system dwells in the modules. The module is a content type that can store numerous information like components, concept, description, objective, syllabus among others. 

Several different components can be added like Task, Quiz, Video task, Extension, Feedback, Inspiration, pdf lesson plan, Real life application, and Scientific principles.

Yardstick LMS Real life application component page

Schools could opt for different modules for different grades. When a module was subscribed by a school, a clone module of the master module was created and the school copy was visible only to the school. School version could be modified by the school admin as per their needs and preferences. Master module remained the same. While creating a subscription, administrator had to provide the date so that the components were accessible to the students. School admin could set different dates to different components and only the components with past date were accessible.

Flow Diagram of module subscription to school

Also, we provided an option to create a dynamic feedback form for the modules for analysis. Yardstick Admin had the option to design and create a feedback form as per their requirement and could assign it to a particular module. Different types of elements could be utilised for designing the form like rating, captcha, email, range slider, text field, checkboxes, radio buttons and so on.


Students and teachers need to submit their feedback for each of the modules. On the basis of this, Yardstick team try to improve the content of the system.


Also, various roles were defined for users such as Yardstick Administrator, School Administrator, Teacher, and Student.

1. Yardstick Admin

Yardstick Admin can perform all the operations. He or she can create new users, grant permissions and revoke them as well.

2. School Admin

It has the provision for handling all the operation which are only related to their school. School Admin handles the modules and their components and can import user for their school. All school reports and task submissions are visible to School Admins.

3. Teachers

Teachers can view modules and components assigned to their classes and provide remarks to the students for multiple components and they can view all kinds of reports.

4. Students

They can attempt quiz, submit tasks, view components and view their own reports.

What’s the future of e-learning?

According to a report on Research and Markets, the e-learning market is anticipated to generate revenue of $65.41 billion by 2023 with a growth rate of 7.07% during the forecast period.

The report goes on to state that with the advent of cloud infrastructure, peer-to-peer problem solving and open content creation, more business opportunities would pop up for service providers in the global e-learning market. The introduction of cloud-based learning and AR/VR mobile-based learning will be a major factor in driving the growth of e-learning.

The growth of the e-learning market is due to the learning process enhancements in the academic sector

According to Technavio, the growth of the market is due to the learning process enhancements in the academic sector.

Global self-paced e-learning market 2019-2023 | Source: Technavio

Following are major trends to look forward to:

  • Microlearning, which emphasises on the design of microlearning activities through micro-steps in digital media environments, will be on the rise.
  • Gamification, which is the use of game thinking and game mechanics in a non-game context to keep the users engrossed and help them solve more problems, will see increased adoption rates.
  • Personalised learning, which is the tailoring of pedagogy, curriculum and learning environments to meet the demands of learners, can be a driving force.
  • Automatic learning, like the one shown in the movie The Matrix where a person is strapped onto a high-tech chair and a series of martial arts training programs are downloaded into his brain, can be a possibility.
Conclusion

It’s a world which is replete with possibilities. As one of the most intelligent species to walk on this earth, we perpetually innovate with the way we want to lead a better lifestyle. We learn new things to gain more knowledge. And in the process, we find ways of improving our learning experience. E-learning is one such tech marvel that promises to be a force to reckon with. It is not a disrupting technology but something that is going to get bigger and bigger in the years to come.

As a content management framework, Drupal offers a magnificent platform to build a robust e-learning system. With years of experience in Drupal Development, OpenSense Labs can help in providing an amazing digital experience. 

Contact us at hello@opensenselabs.com to build an e-learning system using Drupal and transform the educational experience.

blog banner blog image E-learning Drupal e-learning Drupal and education Yardstick LMS Drupal Learning Management System Drupal LMS LMS Learning Management System E-learning platform E-learning system E-learning application Blog Type Articles Is it a good read ? On

Morpht: Drupal and Composer: Part 1 — Understanding Composer

Main Drupal Feed - Wed, 11/14/2018 - 02:45
Drupal and Composer - an In-Depth Look  

As any developer working with Drupal 8 knows, working with Composer has become an integral part of working with Drupal. This can be daunting for those without previous experience working with command line, and can still be a confusing experience for those who do. This is the first post in an explorative series of blog posts I will be writing on Composer, hopefully clearing up some of the confusion around it. The four blog posts on this topic will be as follows:

  • Part 1: Understanding Composer
  • Part 2: Managing a Drupal 8 site with Composer (Coming Soon)
  • Part 3: Converting Management of an Existing Drupal 8 Site to Composer (Coming Soon)
  • Part 4: Composer for Drupal Developers (Coming Soon)

So without further ado, let’s get started.

Composer: What is it?

The Wikipedia page (https://en.wikipedia.org/wiki/Composer_(software)) describes Composer as follows:

Composer is an application-level package manager for the PHP programming language that provides a standard format for managing dependencies of PHP software and required libraries.

That’s an accurate description, though a little wordy. So let’s break it down a little further to understand what it means.

Programmers like to use the term DRY - Don’t Repeat Yourself. This means that whenever possible, code should be re-used, rather than re-written. Traditionally, this referred to code within the codebase of a single application, but with Composer, code can now be shared between applications as well. DRY is another way of saying don’t re-invent the wheel; if someone else has already written code that does what you want to do, rather than writing code that does the same thing, it’s better to re-use the code that that has already been written. For example, the current standard for authentication (aka logging in) to remote systems is the OAuth 2 protocol. This is a secure protocol that allows sites or applications to authenticate with other sites, such as Facebook, Google, Twitter, Instagram, and countless others. Writing OAuth 2 integrations is tricky, as the authentication process is somewhat complex. However, other developers have written code that handles OAuth 2 integration, and they have released this code on the internet in the form of a library. A library is basically a set of code that can be re-used by other sites. Using Composer, developers can include this library in a project, and use it to authenticate to the remote API, saving the developer from having to write that code.

Composer allows developers to do the following:

  • Download and include a library into a project, with a single command
  • Download and include any libraries that library is dependent upon
  • Check that system requirements are met before installing the library
  • Ensure there are no version conflicts between libraries
  • Update the library and its dependencies with a single command 
So how does Composer work?

Composer itself is a software/program. After a user has installed Composer, they can then say ‘Composer: download Library A to my system’. Composer searches remote repositories for libraries. A repository is a server that provides a collection of libraries for download. When Composer finds Library A in a repository, it downloads the library, as well as any libraries that Library A is dependent upon.

A note on terminology

In this article, the term Library is used. Libraries are also known as Packages, and referred to as such on https://getcomposer.org/

A project is the codebase, generally for a website or application, that is being managed by Composer. 

By default, the main repository Composer looks at is https://packagist.org/. This is a site that has been set up specifically for Composer, and contains thousands of public libraries that developers have provided for use. When a user says ‘Composer download Library A’, the Composer program looks for Library A on https://packagist.org/, the main public Composer repository, and if it finds the Library, it downloads it to your system. If Library A depends upon (aka requires) Library B, then it will also download Library B to your system, and so on. It also checks to make sure that your system has the minimum requirements to handle both Library A and Library B and any other dependencies, and also checks if either of these packages have any conflicts with any other libraries you've installed. If any conflicts are found, Composer shows an error and will not install the libraries until the conflicts have been resolved.

While packagist.org is the default repository Composer searches, projects can also define custom repositories that Composer will search for libraries. For example, many developers use Github or Bitbucket, popular services that provide code storage, to store their code in the cloud. A project owner can set up Composer to look for projects in their private Github, Bitbucket, or other repositories, and download libraries from these repositories. This allows for both the public and private code of a project to be managed using Composer.

What happens when I install a library?

Composer manages projects on a technical level using two files: compser.json and composer.lock.  First we’ll look at the composer.json file. This file describes the project. If a developer is using private repositories, the repositories will be declared in this file. Any libraries that the project depends on are written in this file. This file can also be used to set specific folder locations into which libraries should be installed, or set up scripts that are executed as part of the Composer install process. It’s the outline of the entire project.

Each library has a name. The name is combined of two parts, first a namespace, which is an arbitrary string that can be anything but is often a company name, or a Github user name etc. The second part is the library name. The two parts are separated by a forward slash, and contain only lower case letters. Drupal modules are all part of the drupal namespace. Libraries are installed using Composer’s require command. Drupal modules can be installed with commands like:

// Drupal core. composer require drupal/core // Drupal module. composer require drupal/rules // Drupal theme. composer require drupal/bootstrap

When the above commands are run, Composer downloads the library and its dependencies, and adds the library to the composer.json file to indicate that your project uses the library. This means that composer.json is essentially a metadata file describing the codebase of your project, where to get that code, and how to assemble it.

Composer and GIT, Multiple Environments and Multiple Developers

Composer and GIT work really well with each other. To understand how, let’s first look at traditional site management using GIT. Developer A is creating a new Drupal project, purely managed with GIT:

  1. Developer A downloads Drupal core
  2. Developer A creates a new GIT repository for the code they have downloaded, and commits the code to the repository
  3. Developer A pushes the code to a central repository (often Github or Bitbucket)
  4. Developer A checks out (aka pulls) the code to this server.

This all sounds good, and it actually works very well. Now let’s imagine that Developer B comes onto the project. Developer B uses GIT to download the code from the central repository. At this point, the codebase in GIT exists in four locations:

  • Developer A’s computer
  • Developer B’s computer
  • The central repository
  • The production server 

At the moment, the codebase only consists of Drupal core. The Drupal core code is being managed through GIT, which would allow for changes to be tracked in the code, yet it’s very unlikely that either Developer A or Developer B, or indeed any other developers that come on the project, will actually ever edit any of these Drupal core files, as it is a bad practice to edit Drupal core. Drupal core only needs to be tracked by developers who are developing Drupal core, not by projects that are simply using it. So the above setup results in sharing and tracking a bunch of code that is already shared and tracked somewhere else (on Drupal.org).

Let’s look at how to start and use Composer to manage a project. Note that this is NOT the best way to use Composer to manage a Drupal site, and is simply an example to show how to use Composer (see part 2 of this series for specifics on how to use Composer to manage a Drupal site).

  1. Developer A creates a new project folder and navigates into it.
  2. Developer A initializes the project with composer init, which creates a composer.json file in the project folder
  3. Developer A adds the Drupal repository at https://packages.drupal.org/8 to composer.json, so that Drupal core, modules and themes can be installed using Composer
  4. Developer A runs composer require drupal/core, which installs Drupal core to the system, as well as any dependencies. It also creates composer.lock (which we'll look at further down the article)
  5. Developer A creates a new GIT repository, and adds composer.json and composer.lock to the GIT repository
  6. Developer A pushes composer.json and composer.lock to the central repository
  7. Developer A sets up the production server, and checks out the code to this server. At this point, the code consists only of the composer.json and composer.lock files. Additional servers can be set up by checking out the code to any server.
  8. Developer A runs composer install on the production server. This pulls all the requirements and dependencies for the project as they are defined in composer.json

Now when Developer B comes on the project, Developer B uses GIT to download the codebase to their local computer. This codebase contains only composer.json and composer.lock. However, when they run composer install they will end up with the exact same codebase as the production server and on Developer A’s machine.

Now the codebase exists in the same four locations, however the only code being tracked in the GIT repository is the two files used to define the Composer managed project. When an updated is made to the project, it is handled by running composer update drupal/core, which will update both composer.json and composer.lock. These files are then updated in the GIT repository, as they are the files specific to our project.

The difference between the traditional GIT method, and the above method using Composer, is that now Drupal core is considered to be an external library, and is not taking up space unnecessarily in our project's GIT repository.

Project Versions

Projects can, and pretty much always do, have versions. Drupal 8 uses semantic versioning, meaning that it goes through versions 8.1, 8.2, 8.3… and so on. At the time of writing the current version is 8.6.3. If a new security fix is released, it will be 8.6.4. In time, 8.7.0 will be released.  Composer allows us to work with different versions of libraries. This is a good thing, however it opens up the risk of developers on a project working with different versions of a library, which in turn opens up possibility of bugs. Composer fortunately is built to deal with versions, as we will look at next.

Tracking Project Versions

So how does Composer handle versions, allowing developers to ensure they are always using the same library versions? Welcome the composer.lock file. The composer.lock file essentially acts as a snapshot of the all the versions of all the libraries managed by composer.json. Again, I’ll refer back to the Composer managed site described above. When we first run composer require drupal/core in our project, a few things happen:

  1. The current (most recent) version of Drupal is downloaded to the system
  2. All libraries that Drupal depends on are also downloaded to the system
  3. composer.json is updated to show that Drupal is now a dependency of your project
  4. composer.lock is created/updated to reflect the current versions of all Composer managed libraries

So composer.json tracks which libraries are used, and composer.lock is a snapshot tracking which versions of those libraries are currently being used on the project. 

Synchronizing Project Versions

The problem with developers using different versions of libraries is that developers may write code that only works on the version of the library that they have, and other developers either don’t yet have, or maybe they are using an outdated version of the library and other developers have updated. Composer projects manage library versions using the commands composer install and composer update. These commands do different things, so next we'll look at the differences between them.

Composer Install and Composer Update

Imagine that Composer didn’t track versions. The following situation would happen (again, this is NOT how it actually works):

  1. Drupal 8.5.6 is released.
  2. Developer A creates a new project, and sets Drupal core as dependency in composer.json. Developer A has Drupal 8.5.6
  3. Drupal 8.6.0 is released
  4. Developer B clones the GIT project, and installs the codebase using composer install. Composer downloads Drupal core. Developer B has Drupal 8.6.0

The two developers are now working on different versions of Drupal. This is dangerous, as any code they write/add may not be compatible with each other's code. Fortunately Composer can track libraries. When a user runs composer install, the versions defined in composer.lock are installed. So when Developer B runs composer install, Drupal 8.5.6 is installed, even though Drupal 8.6.0 has been released, because 8.5.6 is listed as the version being used by the project in composer.json. As such, developers working on Composer managed projects should run composer install each time they pull updates from remote GIT repositories containing Composer managed projects.

Updating versions

As has been discussed, the composer.lock file tracks the versions of libraries currently used on the project. This is where the composer update command comes in. Let’s review how to manage version changes for a given library (this is how it actually works):

  1. Drupal 8.5.6 is released.
  2. Developer A creates a new project, and sets Drupal core as dependency. The composer.lock file records the version of Drupal core used by the project as 8.5.6.
  3. Drupal 8.6.0 is released
  4. Developer B clones the GIT project, and installs the codebase using composer install. The composer.lock file lists the version of Drupal core being used on the project as 8.5.6, so it downloads that version.
  5. Developer A sees that a new version of Drupal has been released. Developer A runs composer update drupal/core. Composer installs Drupal 8.6.0 to their system, and updates composer.lock to show the version of Drupal core in use as 8.6.0.
  6. Developer A commits this updated composer.lock to GIT, and pushes it to the remote repository. 
  7. Developer B pulls the GIT repository, and gets the updated composer.lock file. Developer B then runs composer install, and since the version of Drupal core in registered as being used is now 8.6.0, Composer updates the code to Drupal 8.6.0.

Now Developer A and Developer B both have the exact same versions of Drupal on their system. And still the only files managed by GIT at this point are composer.json and composer.lock.

Tying it all together

Developers should always run composer.install any time they see that a commit has made changes in the composer.lock file, to ensure that they are on the same codebase as all other developers. Developers should also always run composer.install anytime they switch GIT branches, such as between a production and a staging branch. The dependencies of these branches may be very different, and running composer install will update all dependencies to match the current composer.lock snapshot. The composer update command should only be used to update to new versions of libraries, and the composer.lock file should always be committed after running composer update. Finally, any time a developer adds a new dependency to the project, they need to commit both the composer.json file and the composer.lock file to GIT.

Summary

Before moving on to the next blog post in this series, you should understand the following:

  • What the composer.json file does
  • What the composer.lock file does
  • When to use composer install
  • When to use composer update
  • How GIT and Composer interact with each other

In the next post, coming soon, we'll look specifically at building and managing a Drupal project using composer.

WPTavern: Google Developers Demo AMP Stories Integration with Gutenberg at Chrome Dev Summit

Wordpress Planet - Wed, 11/14/2018 - 00:27

Alberto Medina and Weston Ruter gave a presentation on Progressive Content Management Systems yesterday at Chrome Dev Summit 2018 in San Francisco. Medina is a developer advocate at Google and Ruter recently transitioned into a new role as a Developer Programs Engineer after eight years at XWP.

Medina began the session with a quick overview of the increasingly complex CMS space, which is growing, according to figures he cited from w3techs: 54% of sites are built with some kind of CMS (11% YoY growth). Many CMS’s face common challenges when it comes to integrating modern web technologies into their platforms, such as large code bases, legacy code, and technical debt.

In addressing the challenges that WordPress faces, Google is looking to make an impact on a large swath of the web. Medina outlined the two-part approach Google is using with the WordPress ecosystem. This includes AMP integration via the AMP plugin for WordPress. It’s currently at version 1.0 RC2 and the stable version is scheduled for release at the end of this month.

The second part of the approach is integration of modern web capabilities and APIs in core, so that things like service workers and background sync are supported natively in a way that the entire ecosystem can take advantage of them. Google has invested resources to get these features added to core.

Ruter demonstrated a single page application built in WordPress using a standard theme as the basis and the AMP plugin as a foundation. Medina said the team plans to continue expanding this work integrating AMP content into WordPress, specifically in the context of Gutenberg. He gave a quick demo of how they are working to help content creators easily take advantage of features like AMP stories via a Gutenberg integration.

Medina said AMP stories are formed by components and work well with Gutenberg, since everything in the new editor corresponds to a block.

“We want powerful components like these to become available across all CMS’s,” Medina said. “The CMS space is moving steadily along the progressive web road.”

Check out the video below to learn more about Google’s experience integrating modern web capabilities and progressive technologies into the WordPress platform and ecosystem.

DrupalCon News: Community Connection - Everett Zufelt

Main Drupal Feed - Tue, 11/13/2018 - 23:23

We’re featuring some of the people in the Drupalverse!  This Q&A series highlights some of the individuals you could meet at DrupalCon.

First up, Everett Zufelt. 

WeKnow: weKnow’s remote working guide to success - Part 2

Main Drupal Feed - Tue, 11/13/2018 - 23:09
weKnow’s remote working guide to success - Part 2

As a fully distributed company, weKnow supports remote working; a form of management and daily routine that may not be for everyone but, we prove all bumps on the road can be successfully sorted out and made our organization even surpass productivity metrics compared to the in-office style.

Having a career outside of a traditional office setting comes with unique challenges, getting to know them beforehand will allow you to be more productive and happier. Read further to learn some tips to help you and your team excel.
 

admin Tue, 11/13/2018 - 23:09

Dries Buytaert: Thirteen recommendations for how to evolve Drupal's governance

Main Drupal Feed - Tue, 11/13/2018 - 19:44

Drupal exists because of its community. What started from humble beginnings has grown into one of the largest Open Source communities in the world. This is due to the collective effort of thousands of community members.

What distinguishes Drupal from other open source projects is both the size and diversity of our community, and the many ways in which thousands of contributors and organizations give back. It's a community I'm very proud to be a part of.

Without the Drupal community, the Drupal project wouldn't be where it is today and perhaps would even cease to exist. That is why we are always investing in our community and why we constantly evolve how we work with one another.

The last time we made significant changes to Drupal's governance was over five years ago when we launched a variety of working groups. Five years is a long time. The time had come to take a step back and to look at Drupal's governance with fresh eyes.

Throughout 2017, we did a lot of listening. We organized both in-person and virtual roundtables to gather feedback on how we can improve our community governance. This led me to invest a lot of time and effort in documenting Drupal's Values and Principles.

In 2018, we transitioned from listening to planning. Earlier this year, I chartered the Drupal Governance Task Force. The goal of the task force was to draft a set of recommendations for how to evolve and strengthen Drupal's governance based on all of the feedback we received. Last week, after months of work and community collaboration, the task force shared thirteen recommendations (PDF).

Me reviewing the Drupal Governance proposal on a recent trip.

Before any of us jump to action, the Drupal Governance Task Force recommended a thirty-day, open commentary period to give community members time to read the proposal and to provide more feedback. After the thirty-day commentary period, I will work with the community, various stakeholders, and the Drupal Association to see how we can move these recommendations forward. During the thirty-day open commentary period, you can then get involved by collaborating and responding to each of the individual recommendations below:

I'm impressed by the thought and care that went into writing the recommendations, and I'm excited to help move them forward.

Some of the recommendations are not new and are ideas that either the Drupal Association, myself or others have been working on, but that none of us have been able to move forward without a significant amount of funding or collaboration.

I hope that 2019 will be a year of organizing and finding resources that allow us to take action and implement a number of the recommendations. I'm convinced we can make valuable progress.

I want to thank everyone who has participated in this process. This includes community members who shared information and insight, facilitated conversations around governance, were interviewed by the task force, and supported the task force's efforts. Special thanks to all the members of the task force who worked on this with great care and determination for six straight months: Adam Bergstein, Lyndsey Jackson, Ela Meier, Stella Power, Rachel Lawson, David Hernandez and Hussain Abbas.

Code Karate: Drupal 8 Editor Advanced Link Module

Main Drupal Feed - Tue, 11/13/2018 - 15:41
Episode Number: 218

The Drupal 8 Editor Advanced Link Module allows you to specify additional attributes when creating links in your content. This makes it easy to add a CSS class, an ID, open the link in a new window, or even specify a rel="nofollow" tag. The module is very easy to use, but there is a small trick to getting it set up. Watch the video to see how it's done and start customizing your links in no time!

Tags: DrupalContribDrupal 8Site BuildingDrupal Planet

Drupal Modules: The One Percent: Drupal Modules: The One Percent — Delete all (video tutorial)

Main Drupal Feed - Tue, 11/13/2018 - 15:20
Drupal Modules: The One Percent — Delete all (video tutorial) NonProfit Tue, 11/13/2018 - 09:20 Episode 52

Here is where we bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll investigate Delete all, a module which facilitates deleting users and/or content en masse.

Specbee: The CMS Designed Exclusively for Professional Publishing

Main Drupal Feed - Tue, 11/13/2018 - 06:55

Digital evolution has taken the world of professional publishing by storm. However, this evolution brought along a whole new set of challenges that publishers are still trying to cope up with.

Dev Blog: WordPress 5.0 Beta 4

Wordpress Planet - Tue, 11/13/2018 - 01:27

WordPress 5.0 Beta 4 is now available!

This software is still in development, so we don’t recommend you run it on a production site. Consider setting up a test site to play with the new version.

There are two ways to test the WordPress 5.0 Beta: try the WordPress Beta Tester plugin (you’ll want “bleeding edge nightlies”), or you can download the beta here (zip).

The WordPress 5.0 release date has changed, it is now scheduled for release on November 27, and we need your help to get there. Here are some of the big issues that we’ve fixed since Beta 3:

Block Editor

The block editor has been updated to match the Gutenberg 4.3 release, the major changes include:

  • An Annotations API, allowing plugins to add contextual data as you write.
  • More consistent keyboard navigation between blocks, as well as back-and-forth between different areas of the interface.
  • Improved accessibility, with additional labelling and speech announcements.

Additionally, there have been some bugs fixed that popped up in beta 3:

  • Better support for plugins that have more advanced meta box usage.
  • Script concatenation is now supported.
  • Ajax calls could occasionally cause PHP errors.
Internationalisation

We’ve added an API for translating your plugin and theme strings in JavaScript files! The block editor is now using this, and you can start using it, too. Check out the developer note to get started.

Twenty Nineteen

Twenty Nineteen is being polished over on its GitHub repository. This update includes a host of tweaks and bug fixes, including:

  • Menus now properly support keyboard and touch interactions.
  • A footer menu has been added for secondary page links.
  • Improved backwards compatibility with older versions of WordPress.
Default Themes

All of the older default themes—from Twenty Ten through to Twenty Seventeen—have polished styling in the block editor.

How to Help

Do you speak a language other than English? Help us translate WordPress into more than 100 languages! 

If you think you’ve found a bug, you can post to the Alpha/Beta area in the support forums. We’d love to hear from you! If you’re comfortable writing a reproducible bug report, file one on WordPress Trac, where you can also find a list of known bugs.

International-
isation is a word with
many syllables.

Meta boxes are
the original style block.
Old is new again.

WPTavern: WordCamp Nordic Tickets Now on Sale, Sponsorship Packages Sold Out in Minutes

Wordpress Planet - Tue, 11/13/2018 - 00:30

Tickets for the first ever WordCamp Nordic went on sale today and 100 seats sold within 20 minutes. The event is scheduled to be held in Helsinki, Finland, March 7-8, 2019. There are currently 97 regular tickets and 59 micro-sponsor tickets remaining in the first batch, but more will be released in another round.

If there was any question about whether this new regional WordCamp would gain support, the record-setting buy up of all the sponsor packages has put them to rest. All of the Gold packages (3000 €) were purchased within one minute. Silver packages (1500 €) and Bronze packages (750 €) were all purchased within four minutes and 35 minutes, respectively.

“Sponsor packages tend to go in a few hours whenever there’s a WordCamp in Finland, largely thanks to our communications team and the fact that most companies involved with WordPress follow the conversations on our local Slack/Twitter where these things get announced,” co-organizer Niko Pettersen said. “But this must have been a record even for us. WordCamp Nordic seems to be drawing a lot of interest.”

The call for speakers opened on November 7 and submissions close January 7, 2019. All of the sessions will be held in English and the camp is planning to have two tracks. Those interested to speak may apply for a long talk (40 minutes) or a lightning talk (15 minutes). Selections will be made by mid-January and speakers will be announced in February. Follow @WordCampNordic for all the latest news from the event.

WPTavern: WP GDPR Compliance Plugin Patches Privilege Escalation Vulnerability

Wordpress Planet - Mon, 11/12/2018 - 20:20

At the end of last week, a plugin called WP GDPR Compliance sent out a security update for a privilege escalation vulnerability that was reported to the WordPress Plugin Directory team on November 6. The plugin was temporarily removed and then reinstated after the issues were patched within 24 hours by its creators, Van Ons, a WordPress development shop based in Amsterdam.

The changelog for the most recent release states that previous versions are vulnerable to SQL injection due to “wrong handling of possible user input in combination with unsafe unserialization.” The fixes are in version 1.4.3, which includes the following:

  • Security fix: Removed base64_decode() function
  • Security fix: Correctly escape input in $wpdb->prepare() function
  • Security fix: Only allow modifying WordPress options used by the plugin and by the user capabilities

Van Ons said they requested the Plugin Directory team do a forced update but they said it was not an option in this case.

WP GDPR Compliance has more than 100,000 active installs. According to Wordfence, the vulnerability is being actively exploited in the wild and many users are reporting new administrator accounts being created on their affected sites. The Wordfence blog has a breakdown of how attackers are taking advantage of these sites:

We’ve already begun seeing cases of live sites infected through this attack vector. In these cases, the ability to update arbitrary options values is being used to install new administrator accounts onto the impacted sites.

By leveraging this flaw to set the users_can_register option to 1, and changing the default_role of new users to “administrator”, attackers can simply fill out the form at /wp-login.php?action=register and immediately access a privileged account. From this point, they can change these options back to normal and install a malicious plugin or theme containing a web shell or other malware to further infect the victim site.

Wordfence has seen multiple malicious administrator accounts present on sites that have been compromised, with variations of the username t2trollherten. Several WP GDPR Compliance plugin users have commented on the Wordfence post saying they were victims of the exploit, having found new admin users with a backdoor and file injections added.

The plugin has its own website where the vulnerability was announced. Its creators recommend that anyone who didn’t update right away on November 7, 2018, should look for changes in their databases. The most obvious symptom of attack is likely to be new users with administrator privileges. Any unrecognized users should be deleted. They also recommend restoring a complete backup of the site before November 6 and then updating to version 1.4.3 right away.

The WP GDPR Compliance plugin lets users add a GDPR checkbox to Contact Form 7, Gravity Forms, WooCommerce, and WordPress comments. It allows visitors and customers to opt into allowing the site to handle their personal data for a defined purpose. It also allows visitors to request data stored in the website’s database through a Data Request page that allows them to request data to be deleted.

While the name of the plugin includes the word “compliance,” users should note that the plugin details includes a disclaimer:

“ACTIVATING THIS PLUGIN DOES NOT GUARANTEE YOU FULLY COMPLY WITH GDPR. PLEASE CONTACT A GDPR CONSULTANT OR LAW FIRM TO ASSESS NECESSARY MEASURES.”

A relatively new amendment to section 9 of the plugin development guidelines restricts plugin authors from implying that a plugin can create, provide, automate, or guarantee legal compliance. Heather Burns, a member of WordPress Privacy team, worked together with Mika Epstein last April to put this change into effect. This guideline is especially important for users to remember when a plugin author uses GDPR Compliance in the name of the plugin. It isn’t a guarantee of compliance, just a useful tool as part of larger plan to protect users’ privacy.

Akismet: Version 4.1 of the Akismet WordPress Plugin Is Now Available

Wordpress Planet - Mon, 11/12/2018 - 19:51

Version 4.1 of the Akismet plugin for WordPress is now available and contains the following changes:

  • We added a WP-CLI method for retrieving Akismet stats: wp akismet stats
  • Akismet now hooks into the new “Personal Data Eraser” functionality from WordPress 4.9.6 to ensure that any personal data stored by Akismet is erased when requested.
  • We’ve updated the plugin to more quickly clear outdated alert messages.

To upgrade, visit the Updates page of your WordPress dashboard and follow the instructions. If you need to download the plugin zip file directly, links to all versions are available in the WordPress plugins directory.

Kanopi Studios: Easier Editing with the Drupal 8 Paragraphs Edit module

Main Drupal Feed - Mon, 11/12/2018 - 19:24

The Paragraphs module in Drupal 8 allows us to break content creation into components.  This is helpful for applying styles, markup, and structured data, but can put a strain on content creators who are used to WYSIWYG editors that allow them to click buttons to add, edit, and style content.

The Drupal Paragraphs Edit module adds contextual links to paragraphs that give you the ability to  edit, delete and duplicate paragraphs from the front end, giving editors a quick, easy and visual way to manage their content components.

Installing

Install and enable the module as you normally would, it is a zero configuration module.  It works with Drupal core’s Contextual Links and/or Quick Links module. I did have to apply this patch to get the cloning/duplication functionality working though.

Editing

To use, visit a page and hover over your content area.  You will see an icon in the upper right corner of the Paragraphs component area.   

When you click the Edit option, you are taken to an admin screen where you can edit only that component.

Make your changes and click save to be taken back to the page.

In components that are nested, like the Bootstrap Paragraphs columns component, you will see one contextual link above the nested components.  If you click this, you will be taken to the edit screen where you can modify the parent, and the children.  That is the Columns component, and the 3 text components inside.

Duplicating/Cloning

The term that is used most often for making a copy of something in Drupal is to “Clone” it.  This is a little more complicated because it is technically complicated, but once you get the hang of it, it will become second nature.

Hover over a contextual link and click Clone.

On the edit screen, you are presented with a new Clone To section.  In this section you can choose where to send this clone to, whether that be a Page or a Paragraph.  In this example, I want to duplicate this component to the same page.

  • Type: Content
  • Bundle: Page
  • Parent: (The page you are on)
  • Field: (The same field on that page.)

You can also make any edits you want before saving.  For example, you could change the background color. Click save, and your new component will appear at the bottom of the page, with the new background color.

There are a bunch of possibilities with this way to duplicate components.  To clone to another page, change the Parent. To clone to a nested paragraph component, change the Type to Paragraphs and configure the settings you need.

Deleting

Deleting a component is as you’d expect.  Once you click delete, you are taken to a confirmation screen that asks you if you want to delete.

Conclusion

The Paragraphs Edit module is a simple and powerful tool that gets us a bit closer to inline editing and making our content creator’s lives easier and allows them to be more productive.  Give it a try on your next project and spread the word about this great little helper module!

The post Easier Editing with the Drupal 8 Paragraphs Edit module appeared first on Kanopi Studios.

Drupal blog: Why Drupal's Layout Builder is so powerful and unique

Main Drupal Feed - Mon, 11/12/2018 - 18:53

This blog has been re-posted and edited with permission from Dries Buytaert's blog. Please leave your comments on the original post.

Layout Builder, which will be in the next release of Drupal 8, is unique in that it can work with structured and unstructured content, and with templated and free-form pages.

Content authors want an easy-to-use page building experience; they want to create and design pages using drag-and-drop and WYSIWYG tools. For over a year the Drupal community has been working on a new Layout Builder, which is designed to bring this page building capability into Drupal core.

Drupal's upcoming Layout Builder is unique in offering a single, powerful visual design tool for the following three use cases:

  1. 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).
  2. 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)
  3. 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).

Let's look at all three use cases in more detail to explain why we think this is extremely useful!

Use case 1: Layouts for templated content

For large sites with significant amounts of content it is important that the same types of content have a similar appearance.

A commerce site selling hundreds of different gift baskets with flower arrangements should have a similar layout for all gift baskets. For customers, this provides a consistent experience when browsing the gift baskets, making them easier to compare. For content authors, the templated approach means they don't have to worry about the appearance and layout of each new gift basket they enter on the site. They can be sure that once they have entered the price, description, and uploaded an image of the item, it will look good to the end user and similar to all other gift baskets on the site.

Drupal 8's new Layout Builder allows a site creator to visually create a layout template that will be used for each item of the same content type (e.g. a "gift basket layout" for the "gift basket" content type). This is possible because the Layout Builder benefits from Drupal's powerful "structured content" capabilities.

Many of Drupal's competitors don't allow such a templated approach to be designed in the browser. Their browser-based page builders only allow you to create a design for an individual page. When you want to create a layout that applies to all pages of a specific content type, it is usually not possible without a developer.

Use case 2: Customizations to templated layouts

While having a uniform look for all products of a particular type has many advantages, sometimes you may want to display one or more products in a slightly (or dramatically) different way.

Perhaps a customer recorded a video of giving their loved one one of the gift baskets, and that video has recently gone viral (because somehow it involved a puppy). If you only want to update one of the gift baskets with a video, it may not make sense to add an optional "highlighted video" field to all gift baskets.

Drupal 8's Layout Builder offers the ability to customize templated layouts on a case per case basis. In the "viral, puppy, gift basket" video example, this would allow a content creator to rearrange the layout for just that one gift basket, and put the viral video directly below the product image. In addition, the Layout Builder would allow the site to revert the layout to match all other gift baskets once the world has moved on to the next puppy video.

Since most content management systems don't allow you to visually design a layout pattern for certain types of structured content, they of course can't allow for this type of customization.

Use case 3: Custom pages (with unstructured content)

Of course, not everything is templated, and content authors often need to create one-off pages like an "About us" page or the website's homepage.

In addition to visually designing layout templates for different types of content, Drupal 8's Layout Builder can also be used to create these dynamic one-off custom pages. A content author can start with a blank page, design a layout, and start adding blocks. These blocks can contain videos, maps, text, a hero image, or custom-built widgets (e.g. a Drupal View showing a list of the ten most popular gift baskets). Blocks can expose configuration options to the content author. For instance, a hero block with an image and text may offer a setting to align the text left, right, or center. These settings can be configured directly from a sidebar.

In many other systems content authors are able to use drag-and-drop WYSIWYG tools to design these one-off pages. This type of tool is used in many projects and services such as Squarespace and the new Gutenberg Editor for WordPress (now available for Drupal, too!).

On large sites, the free-form page creation is almost certainly going to be a scalability, maintenance and governance challenge.

For smaller sites where there may not be many pages or content authors, these dynamic free-form page builders may work well, and the unrestricted creative freedom they provide might be very compelling. However, on larger sites, when you have hundreds of pages or dozens of content creators, a templated approach is going to be preferred.

When will Drupal's new Layout Builder be ready?

Drupal 8's Layout Builder is still a beta level experimental module, with 25 known open issues to be addressed prior to becoming stable. We're on track to complete this in time for Drupal 8.7's release in May 2019. If you are interested in increasing the likelihood of that, you can find out how to help on the Layout Initiative homepage.

An important note on accessibility

Accessibility is one of Drupal's core tenets, and building software that everyone can use is part of our core values and principles. A key part of bringing Layout Builder functionality to a "stable" state for production use will be ensuring that it passes our accessibility gate (Level AA conformance with WCAG and ATAG). This holds for both the authoring tool itself, as well as the markup that it generates. We take our commitment to accessibility seriously.

Impact on contributed modules and existing sites

Currently there a few methods in the Drupal module ecosystem for creating templated layouts and landing pages, including the Panels and Panelizer combination. We are currently working on a migration path for Panels/Panelizer to the Layout Builder.

The Paragraphs module currently can be used to solve several kinds of content authoring use-cases, including the creation of custom landing pages. It is still being determined how Paragraphs will work with the Layout Builder and/or if the Layout Builder will be used to control the layout of Paragraphs.

Conclusion

Drupal's upcoming Layout Builder is unique in that it supports multiple different use cases; from templated layouts that can be applied to dozens or hundreds of pieces of structured content, to designing custom one-off pages with unstructured content. The Layout Builder is even more powerful when used in conjunction with Drupal's other out-of-the-box features such as revisioning, content moderation, and translations, but that is a topic for a future blog post.

Special thanks to Ted Bowman (Acquia) for co-authoring this post. Also thanks to Wim Leers (Acquia), Angie Byron (Acquia), Alex Bronstein (Acquia), Jeff Beeman (Acquia) and Tim Plunkett (Acquia) for their feedback during the writing process.

Promet Source: The Promet Family is Growing: Promet Acquires Digital Creative Agency DAHU

Main Drupal Feed - Mon, 11/12/2018 - 18:24
  We’re thrilled to announce the acquisition of DAHU; a strategy-focused, user experience and design agency. By adding DAHU capabilities we have creatively and strategically “leveled up” to provide more comprehensive solutions for clients. Specifically, DAHU will enhance our UI design, User Experience and add the following capabilities: WordPress development, messaging, and branding.  

Code Karate: Drupal 8 Editor File Upload Module

Main Drupal Feed - Mon, 11/12/2018 - 16:57
Episode Number: 217

The Drupal 8 Editor File Upload Module is a great module for allowing your content editors to upload files directly in your website content. If you have ever needed to upload a file, and then include a link to that file, then the Editor File Upload module will be useful. Rather than having to upload the file manually using FTP or through another module, then having to go back to create a link in your content to that file, this module lets you do it all in one step.

Tags: DrupalContribDrupal 8File ManagementSite BuildingDrupal Planet

Pages