Drupal

CloudFront Purger

New Drupal Modules - 4 April 2016 - 8:21pm

You can use AWS CloudFront as a reverse proxy in front of your whole Drupal site.

This module provides a very simple AWS CloudFront Purge Purger plugin.

Required Modules

Because AWS CloudFront does not support cache tags (yet), this module depends on URLs queuer module

Categories: Drupal

Image Style Class

New Drupal Modules - 4 April 2016 - 4:38pm

Adds classes onto each rendered image showing the image style name.

Categories: Drupal

Zyxware Technologies: Standardized curriculum for Drupal Developers - Phase 1 - completed publishing content

Planet Drupal - 4 April 2016 - 1:07pm

We are happy to inform that, we have completed the the first phase of the project on creating a standardized Drupal curriculum for Drupal companies as planned. We have compiled and published our Drupal training curriculum on the groups.drupal.org wiki under the Curriculum and Training group. We are now looking to get feedback from other Drupal companies and Drupal developers on the curriculum and the training materials. We also would like to invite developers from the community to contribute towards making this curriculum better.

DrupalDrupalgiveDrupal PlanetDrupal TrainingTeaching DrupalNewsAnnouncements
Categories: Drupal

Mediacurrent: AMP’lify Your Website: Google AMP 101

Planet Drupal - 4 April 2016 - 11:41am

Google just recently released a new open-source initiative called the Google Accelerated Mobile Pages (AMP) Project. The AMP project aims to implement a performance baseline to provide a better mobile web experience for all users. Its goal is to prioritize speed and increase page loading performance - which is essential for any organization interested in retaining an audience in today’s dynamic, fast-paced culture.

Categories: Drupal

Dries Buytaert: Improving Drupal's content workflow

Planet Drupal - 4 April 2016 - 11:38am

At DrupalCon Mumbai I sat down for several hours with the Drupal team at Pfizer to understand the work they have been doing on improving Drupal content management features. They built a set of foundational modules that help advance Drupal's content workflow capabilities; from content staging, to multi-site content staging, to better auditability, offline support, and several key user experience improvements like full-site preview, and more. In this post, I want to point a spotlight on some of Pfizer's modules, and kick-off an initial discussion around the usefulness of including some of these features in core.

Use cases

Before jumping to the technical details, let's talk a bit more about the problems these modules are solving.

  1. Cross-site content staging — In this case you want to synchronize content from one site to another. The first site may be a staging site where content editors make changes. The second site may be the live production site. Changes are previewed on the stage site and then pushed to the production site. More complex workflows could involve multiple staging environments like multiple sites publishing into a single master site.
  2. Content branching — For a new product launch you might want to prepare a version of your site with a new section on the site featuring the new product. The new section would introduce several new pages, updates to existing pages, and new menu items. You want to be able to build out the updated version in a self-contained 'branch' and merge all the changes as a whole when the product is ready to launch. In an election case scenario, you might want to prepare multiple sections; one for each candidate that could win.
  3. Preview your site — When you're building out a new section on your site for launch, you want to preview your entire site, as it will look on the day it goes live. This is effectively content staging on a single site.
  4. Offline browse and publish — Here is a use-case that Pfizer is trying to solve. A sales rep goes to a hospital and needs access to information when there is no wi-fi or a slow connection. The site should be fully functional in offline mode and any changes or forms submitted, should automatically sync and resolve conflicts when the connection is restored.
  5. Content recovery — Even with confirmation dialogs, people delete things they didn’t want to delete. This case is about giving users the ability to “undelete” or recover content that has been deleted from their database.
  6. Audit logs — For compliance reasons, some organizations need all content revisions to be logged, with the ability to review content that has been deleted and connect each action to a specific user so that employees are accountable for their actions in the CMS.
Technical details

All these use cases share a few key traits:

  1. Content needs to be synchronized from one place to another, e.g. from workspace to workspace, from site to site or from frontend to backend
  2. Full revision history needs to be kept
  3. Content revision conflicts needs to be tracked

Much of this started as a single module: Deploy. The Deploy module was first created by Greg Dunlap for Drupal 6 in 2008. In 2012, Greg handed over maintainership to Dick Olsson who created the first Drupal 7 version (7.x-2.x) with many big improvements. Later, Dave Hall created a second Drupal 7 version (7.x-3.x) which more significant improvements based on feedback from different users. Today, both Dick and Dave work for Pfizer and have continued to include lessons learned in the Drupal 8 version of the module. After years of experience working on Deploy module and various redesigns, the team has extracted the functionality in a set of modules:

Multiversion

This module does three things: (1) it adds revision support for all content entities in Drupal, not just nodes and block content as provided by core, and (2) it introduces the concept of parent revisions so you can create different branches of your content or site, and (3) it keeps track of conflicts in the revision tree (e.g. when two revisions share the same parent). Many of these features complement the ongoing improvements to Drupal's Entity API.

Replication

Built on top of Multiversion module, this lightweight module reads revision information stored by Multiversion, and uses that to determine what revisions are missing from a given location and lets you replicate content between a source and a target location. The next two modules, Workspace and RELAXed Web Services depend on replication module.

Workspace

This module enables single site content staging and full-site previews. The UI lets you create workspaces and switch between them. With Replication module different workspaces on the same site can behave like different editorial environments.

RELAXed Web Services

This module facilitates cross-site content staging. It provides a more extensive REST API for Drupal with support for UUIDs, translations, file attachments and parent revisions — all important to solve unique challenges with content staging (e.g. UUID and revision information is needed to resolve merge conflicts). The RELAXed Web Services module extends the Replication module and makes it possible to replicate content from local workspaces to workspaces on remote sites using this API.

In short, Multiversion provides the "storage plumbing", whereas Replication, Workspace, and RELAXed Web Services, provide the "transport plumbing".

Deploy

Historically Deploy module has taken care of everything from bottom to top related to content staging. But for Drupal 8 Deploy has been rewritten to just provide a UI on-top of the Workspace and Replication modules. This UI lets you manage content deployments between workspaces on a single site, or between workspaces across sites (if used together with RELAXed Web Services module). The maintainers of the Deploy module have put together a marketing site with more details on what it does: http://www.drupaldeploy.org.

Trash

To handle use case #5 (content recovery) the Trash module was implemented to restore entities marked as deleted. Much like a desktop trash or recycle bin, the module displays all entities from all supported content types where the default revision is flagged as deleted. Restoring creates a newer revision, which is not flagged as deleted.

Synchronizing sites with a battle-tested API

When a Drupal site installs and enables RELAXed Web Services it will look and behave like the REST API from CouchDB. This is a pretty clever trick because it enables us to leverage the CouchDB ecosystem of tools. For example, you can use PouchDB, a JavaScript implementation of CouchDB, to provide a fully-decoupled offline database in the web browser or on a mobile device. Using the same API design as CouchDB also gives you "streaming replication" with instant updates between the backend and frontend. This is how Pfizer implements off-line browse and publish.

This animated gif shows how a content creator can switch between multiple workspaces and get a full-site preview on a single site. In this example the Live workspace is empty, while there has been a lot of content addition on the Stage workspace in. This animated gif shows how a workspace is deployed from 'Stage' to 'Live' on a single site. In this example the Live workspace is initially empty. Conclusion

Drupal 8.0 core packed many great improvements, but we didn't focus much on advancing Drupal's content workflow capabilities. As we think about Drupal 8.x and beyond, it might be good to move some of our focus to features like content staging, better audit-ability, off-line support, full-site preview, and more. If you are a content manager, I'd love to hear what you think about better supporting some or all of these use cases. And if you are a developer, I encourage you to take a look at these modules, try them out and let us know what you think.

Thanks to Tim Millwood, Dick Olsson and Nathaniel Catchpole for their feedback on the blog post. Special thanks to Pfizer for contributing to Drupal.

Categories: Drupal

Improving Drupal's content workflow

Dries Buytaert - 4 April 2016 - 11:38am

At DrupalCon Mumbai I sat down for several hours with the Drupal team at Pfizer to understand the work they have been doing on improving Drupal content management features. They built a set of foundational modules that help advance Drupal's content workflow capabilities; from content staging, to multi-site content staging, to better auditability, offline support, and several key user experience improvements like full-site preview, and more. In this post, I want to point a spotlight on some of Pfizer's modules, and kick-off an initial discussion around the usefulness of including some of these features in core.

Use cases

Before jumping to the technical details, let's talk a bit more about the problems these modules are solving.

  1. Cross-site content staging — In this case you want to synchronize content from one site to another. The first site may be a staging site where content editors make changes. The second site may be the live production site. Changes are previewed on the stage site and then pushed to the production site. More complex workflows could involve multiple staging environments like multiple sites publishing into a single master site.
  2. Content branching — For a new product launch you might want to prepare a version of your site with a new section on the site featuring the new product. The new section would introduce several new pages, updates to existing pages, and new menu items. You want to be able to build out the updated version in a self-contained 'branch' and merge all the changes as a whole when the product is ready to launch. In an election case scenario, you might want to prepare multiple sections; one for each candidate that could win.
  3. Preview your site — When you're building out a new section on your site for launch, you want to preview your entire site, as it will look on the day it goes live. This is effectively content staging on a single site.
  4. Offline browse and publish — Here is a use-case that Pfizer is trying to solve. A sales rep goes to a hospital and needs access to information when there is no wi-fi or a slow connection. The site should be fully functional in offline mode and any changes or forms submitted, should automatically sync and resolve conflicts when the connection is restored.
  5. Content recovery — Even with confirmation dialogs, people delete things they didn’t want to delete. This case is about giving users the ability to “undelete” or recover content that has been deleted from their database.
  6. Audit logs — For compliance reasons, some organizations need all content revisions to be logged, with the ability to review content that has been deleted and connect each action to a specific user so that employees are accountable for their actions in the CMS.
Technical details

All these use cases share a few key traits:

  1. Content needs to be synchronized from one place to another, e.g. from workspace to workspace, from site to site or from frontend to backend
  2. Full revision history needs to be kept
  3. Content revision conflicts needs to be tracked

Much of this started as a single module: Deploy. The Deploy module was first created by Greg Dunlap for Drupal 6 in 2008 for a customer of Palantir. In 2012, Greg handed over maintainership to Dick Olsson. Dick continued to improve Deploy module for Al Jazeera while working at Node One. Later, Dave Hall created a second Drupal 7 version which more significant improvements based on feedback from different users. Today, both Dick and Dave work for Pfizer and have continued to include lessons learned in the Drupal 8 version of the module. After years of experience working on Deploy module and various redesigns, the team has extracted the functionality in a set of modules:

Multiversion

This module does three things: (1) it adds revision support for all content entities in Drupal, not just nodes and block content as provided by core, and (2) it introduces the concept of parent revisions so you can create different branches of your content or site, and (3) it keeps track of conflicts in the revision tree (e.g. when two revisions share the same parent). Many of these features complement the ongoing improvements to Drupal's Entity API.

Replication

Built on top of Multiversion module, this lightweight module reads revision information stored by Multiversion, and uses that to determine what revisions are missing from a given location and lets you replicate content between a source and a target location. The next two modules, Workspace and RELAXed Web Services depend on replication module.

Workspace

This module enables single site content staging and full-site previews. The UI lets you create workspaces and switch between them. With Replication module different workspaces on the same site can behave like different editorial environments.

RELAXed Web Services

This module facilitates cross-site content staging. It provides a more extensive REST API for Drupal with support for UUIDs, translations, file attachments and parent revisions — all important to solve unique challenges with content staging (e.g. UUID and revision information is needed to resolve merge conflicts). The RELAXed Web Services module extends the Replication module and makes it possible to replicate content from local workspaces to workspaces on remote sites using this API.

In short, Multiversion provides the "storage plumbing", whereas Replication, Workspace, and RELAXed Web Services, provide the "transport plumbing".

Deploy

Historically Deploy module has taken care of everything from bottom to top related to content staging. But for Drupal 8 Deploy has been rewritten to just provide a UI on-top of the Workspace and Replication modules. This UI lets you manage content deployments between workspaces on a single site, or between workspaces across sites (if used together with RELAXed Web Services module). The maintainers of the Deploy module have put together a marketing site with more details on what it does: http://www.drupaldeploy.org.

Trash

To handle use case #5 (content recovery) the Trash module was implemented to restore entities marked as deleted. Much like a desktop trash or recycle bin, the module displays all entities from all supported content types where the default revision is flagged as deleted. Restoring creates a newer revision, which is not flagged as deleted.

Synchronizing sites with a battle-tested API

When a Drupal site installs and enables RELAXed Web Services it will look and behave like the REST API from CouchDB. This is a pretty clever trick because it enables us to leverage the CouchDB ecosystem of tools. For example, you can use PouchDB, a JavaScript implementation of CouchDB, to provide a fully-decoupled offline database in the web browser or on a mobile device. Using the same API design as CouchDB also gives you "streaming replication" with instant updates between the backend and frontend. This is how Pfizer implements off-line browse and publish.

This animated gif shows how a content creator can switch between multiple workspaces and get a full-site preview on a single site. In this example the Live workspace is empty, while there has been a lot of content addition on the Stage workspace in. This animated gif shows how a workspace is deployed from 'Stage' to 'Live' on a single site. In this example the Live workspace is initially empty. Conclusion

Drupal 8.0 core packed many great improvements, but we didn't focus much on advancing Drupal's content workflow capabilities. As we think about Drupal 8.x and beyond, it might be good to move some of our focus to features like content staging, better audit-ability, off-line support, full-site preview, and more. If you are a content manager, I'd love to hear what you think about better supporting some or all of these use cases. And if you are a developer, I encourage you to take a look at these modules, try them out and let us know what you think.

Thanks to Tim Millwood, Dick Olsson and Nathaniel Catchpole for their feedback on the blog post. Special thanks to Pfizer for contributing to Drupal.

Categories: Drupal

Autogrow

New Drupal Modules - 4 April 2016 - 11:27am

Adds support for the Autogrow plugin for CKEditor.

  1. Download the plugin from http://ckeditor.com/addon/autogrow.
  2. Place the plugin in the root libraries folder (/libraries).
  3. Enable the CKEditor Autogrow module in the Drupal admin.
  4. Configure your CKEditor format(s) to enable autogrow, and change some default configuration for it.
Categories: Drupal

Deeson: How our teams deliver projects

Planet Drupal - 4 April 2016 - 10:22am

One of the things we believe in at Deeson is giving our team the freedom and responsibility to make decisions. At many agencies there’s often a centralisation of control and influence, but we believe that by giving that control back to the people who actually do the work we get better results for our clients.

Our vision is of an empowered team with the freedom to do what they love in better ways, and the responsibility to make decisions that will deliver innovative, data- and insight-driven products that bring genuine value to clients and their end users.

Over the last year we’ve expanded, not just in size but geographically too. We now have people spread around the UK and Europe, so how do we retain that freedom while maintaining our ability to communicate well, to develop our skills individually and as a team, and to deliver the highest quality digital products to our clients?

This was the question occupying us in 2015 when we started to do some research into models for self-organising teams.

At this point the expansion of the team was already adding a level of complexity to delivering projects for our clients. Under those circumstances growing agencies will often hire more managers to handle that complexity.

We didn't want to do that because it's counter-intuitive if you believe, as we do, that people do best when they manage their own schedules and projects, rather than having someone else tell them what to do and when. Instead of adding layers of management hierarchy we wanted to enable everyone to stay focused and close to the work, and that’s what led us to start working in multi-disciplary teams called pods.

A pod typically consists of 7-9 people and is made up of an account manager, a solutions architect, a user experience consultant and a cross-section of designers and developers. Each pod has a set number of projects and clients that they work with at any one time, meaning that everyone in the pod has a detailed knowledge of each project - and, crucially, everyone can work on every project within that pod.

Having a small, dedicated and permanent team is core to the way we work, and even more valuable is the accompanying change in how we view responsibilities.

Whereas before the developers were responsible for development work, the designers for design and the project manager for planning and scheduling, now the whole pod is jointly responsible for bringing purpose, judgement and their own specialist skills to the solving of clients’ problems.

We don’t have a gatekeeper doling out tasks to individuals, or prioritising the work, because the pod members are invested and equipped to make those decisions more effectively than anyone else.

So, what does pod working look like in practice?

We begin each day with the morning stand-up, where we share updates on a per-project basis (with distributed team members in attendance thanks to Google Hangouts). This ensures everyone in the pod is aware of the status of each project, whether they’re working directly on it or not. It also removes the need for separate daily project meetings, because any issues are identified right away and can be dealt with by the appropriate people.

We do most of our written client communication via Basecamp, which means we all have a record of what’s being discussed and agreed. This is reflected in the quality of the work we give back to the client, who gets the same level of communication as before - but with a wider pool of people with a deep understanding of the project who can step in and be involved if necessary.

And that flexibility and scalability is key: depending on our schedule and team size we can add new pods as and when we need to, in order to manage our growing portfolio of clients and projects.

Sharing the knowledge and responsibility across the pod means we don’t find ourselves stuck if someone is ill or goes on holiday, and reducing the number of meetings we have means everyone has more time and a better ability to focus on the day’s work, as well as a quicker feedback loop for solving problems.

Close, collaborative pod working gives us all a chance to share our knowledge and skills, to spot where we can help someone out by pointing them in the direction of a solution to a tricky problem, or by spending half an hour working on something that will unblock their progress. It also gives us the opportunity to develop pod members’ individual careers, by putting people with different backgrounds and levels of experience together and letting them find the best ways of working together and sharing their expertise.

Cross-discipline collaboration and shared learning is essential, but we also recognise that we want to grow strong specialisms as well as strong delivery units. We facilitate this by running separate teams we call chapters: groups built around specialisms like engineering, UX, and design.

Each chapter has a lead - an experienced practitioner who in addition to their role within their pod is responsible for promoting best practice and shared professional development across the chapter. In this way we ensure that our core skills are constantly being developed even as our day-to-day focus is on delivering work to our clients.

So what positive change have we seen since we’ve been working this way?

For one, it’s led to a stronger team spirit (as well as some friendly rivalry between pods).

And while we are proud of our flat management structure, the pod model gives everyone the immediate day-to-day support they need from their peers, so that decisions can be made, issues resolved and advice received right away.

Unlike with other agencies, our clients don’t have to spend a lot of time dealing with account managers. Instead they get direct contact with skilled, dedicated, knowledgeable and trusted people who are focused on doing the work that delivers what they and their businesses need.

Categories: Drupal

Promet Source: A Guide to Awesome User Testing Tools, 2016 Edition

Planet Drupal - 4 April 2016 - 9:00am

When creating or redesigning any digital assets, your decisions should revolve around the users. Ask questions like:

► What are the end user's needs?

► How will this design serve those users?

► What are the business goals for your brand and how will they impact the end user?

► How will users interact with this new design or feature of your website?

Categories: Drupal

Appnovation Technologies: Introduction to Drupal 8 Module Development

Planet Drupal - 4 April 2016 - 7:55am
Drupal 8 philosophy and architecture is different than Drupal 7. From a backend and frontend standpoints there are new concepts.
Categories: Drupal

Evolving Web: Choosing Modules and Themes for Drupal 8

Planet Drupal - 4 April 2016 - 7:53am

If you're a Drupal developer who's on the fence about trying Drupal 8, we hope this post will push you to go for it... or inform you that it's better to wait, if your project depends on a module that's not there yet.

read more
Categories: Drupal

Acquia Developer Center Blog: Try Acquia Cloud’s New (Faster and More Responsive) User Interface

Planet Drupal - 4 April 2016 - 6:16am

Today we’re pleased to announce the public beta release of our updated user interface (UI) for Acquia Cloud.

Our goal is to create a UI that offers a level of automation that developers need to be efficient. We’re doing this by reducing and eliminating the times you’ll have to jump between pages, whether you're switching environments, moving between code, databases, and files, or monitoring your website's health. Now it's all on one page.

Tags: acquia drupal planet
Categories: Drupal

Apache Solr View Count

New Drupal Modules - 4 April 2016 - 6:13am

This module allows you to index the node view count to Apache solr index as a custom field and let you sort SOLR results. The module requires Apache solr search module. The Apachesolr Viewcount module depends on either of the following modules to fetch the node view count:

Categories: Drupal

Drop Guard: Drop Guard recipes: Testing your updates in a feature branch instance

Planet Drupal - 4 April 2016 - 3:45am
Drop Guard recipes: Testing your updates in a feature branch instance Igor Kandyba Mon, 04.04.2016 - 12:45

With this post, we are starting a new series - "Drop Guard recipes". It will be all about things which help us to be more productive, efficient, provide better service to our customers and ensure better security for Drupal. As you might expect, it will be mostly Drop Guard related, but we promise there will be a lot of interesting stuff for everyone. Stay tuned!

First of all, let's agree that if you or your team uses some sort of modern development workflow - which essentially means the path the code makes from the point it was originally written to the production website, you should be familiar with feature branches concept. Apart from traditional "dev", "stage" and "master" branches, you create separate named branches for website features or code updates which are not yet ready to be merged upstream.

Git workflow Drop Guard CI QA Drupal Planet Drop Guard recipes
Categories: Drupal

Config Importer and Tools

New Drupal Modules - 4 April 2016 - 2:10am

This module aims to cover development needs with managing configs during project development.
Importing all configs during development is not convenient and can lead to bad behaviours with overwriting or deleting configs or content from a site
So there is a need for importing only specific configs via hook_update_N

Categories: Drupal

Webforms

New Drupal Modules - 4 April 2016 - 1:52am

This module aims to cover basic need with embedding forms into a site via entity_embed, incorporating

  • contact_storage,
  • views,
  • csv_serialization

Basic features
OptionEmailtem -> gives you an opportunity to create a field with Options, tied to emails for sending out submissions to addition for main contact form setting
Markup item - for adding simple HTML to your forms
States - List of US and Canada states

Categories: Drupal

ActiveLAMP: Composer Manager in Drupal 7 and Drupal 8

Planet Drupal - 3 April 2016 - 8:01pm

This video will take you through the correct way to use composer dependencies in Drupal 7 and Drupal 8 using the Composer Manager module. This video part 2 to the PSR video we did last month, that shows how to write a views handler using PSR-4 class autoloading (http://activelamp.com/videos/psr-4-class-autoloading-with-drupal-7). At the end of the PSR-4 video, I pulled in a composer dependency not using Composer Manager. This video will show you the correct way to use Composer with Drupal.

Read more...
Categories: Drupal

Pages

Subscribe to As If Productions aggregator - Drupal