When using Features module to move changes from one development environment to the next, it can be tricky to track which Feature ought to be 'reverted' in order make the new code be incontrol. Sure you can revert them all in one shot with `drush features-revert-all`, but that is pretty intensive to do especially on a production site and can lead to some race conditions.
By default a Drupal site has a lot of flexibility when it comes to assigning user roles and permissions. There are times however when the default flexibility is not quite enough. The Drupal Role Assign Module extends this flexibility a little by allowing more fine grained control over setting user roles.
The Drupal RoleAssign module allows you to allow other roles to assign users roles... confused yet? An example might be helpful. Assume you have the following Drupal roles on your site:Tags: DrupalUsersDrupal 7Drupal Planet
We are thrilled to announce that, in collaboration with the Drupal 8 branch maintainers, the Association is launching a brand-new program: Drupal 8 Accelerate. Modeled after our Community Cultivation Grants program, Drupal 8 Accelerate is a $125,000 fund to help solve critical issues and accelerate the release of Drupal 8.
The Drupal community is filled with a plethora of opinions and ideas, but there’s one thing we likely all agree on; we’re ready for Drupal 8 to be released! This anticipation is underscored by the record number of contributors to D8 - over 2400. Now it’s time for the Drupal community to rally and finish the job. The Drupal Association wants to help you make that happen. After all, our mission is to unite a gobal open source community to build and promote Drupal.
The Drupal 8 Accelerate Program is a $125,000 fund provided by the Drupal Association (and by extension, all the Association members and Partners who fund our work - so thank you). Grants will be made in two categories: branch maintainer requests and community requests. This two-branch system means that funds can be directed by the people most intimately familiar with the project needs while still allowing for our amazing community to come up with innovative ideas that have a big impact. The Association will also be providing logistical support to the branch maintainers throughout the process.
While the Association is providing the funds and the support, we are not deciding WHAT gets funded. This gets handled by the branch maintainers, keeping the Association on the right side of the “we don’t direct the project” line. The Drupal 8 Accelerate program is a fantastic opportunity for the Association to support and amplify community efforts. All of our favorite work at the Association follows this model - DrupalCon session selection, Community Cultivation Grants, Global Training Days, and DrupalCamp Fiscal Sponsorship to name a few. We’re here to make it easier for you to innovate, and this program is yet another example.
Of course, this is the first time our community has tried anything like this, so we expect that we’ll be learning a lot as we go. As always, we are looking for your feedback and help so that we can improve.
How can you help? Let me count the ways:
- Help promote the program. Share this blog post on Twitter, Facebook, and other places your Drupal friends hang out online.
- Apply! Take this program back to your user group, company, or friends and dream big. If you have a great way to help push Drupal 8 to release, we want to hear about it.
- Help fund the grants. The Association has pledged $125,000 because we think this program is THAT important. But we’re looking for community support to help make this investment. You can become member, a partner, or talk to us about making a contribution directly to the fund.
Drupal core announcements: Priorities for the upcoming Drupal 8 critical issue sprint (Dec. 10-14 in Ghent, Belgium)
Our top priority for the sprint will be to make progress on D8 upgrade path blockers (critical issues with the 'D8 upgrade path' tag) that affect the Entity Field API, Views, and the Configuration System. Here are the specific issues we have targeted:
- #2372855: Add content & config entity dependencies to views
- #2341357: Allow the entity area to use UUIDs instead of IDs and provide autocompletion
Discuss and plan our approach. (The second issue, #2341357, is a soft blocker that covers part of the scope of the first, #2372855.)
- [PP-1] Figure out what to do in Views when entity schema changes
Discuss and plan our approach.
- #1934152: Figure the out if we want global config overrides to stick (settings.php overrides don't work on all pages)
Discuss, make a decision, and move forward.
- #2278017: [PP-1] When a content entity type providing module is uninstalled, the entities are not fully deleted, leaving broken references
- #2338873: [PP-2] Modules providing non-configurable field storage definitions can be uninstalled, leaving orphaned unpurged data
These issues are postponed on #2335879: Change SqlContentEntityStorageSchema::requiresEntityDataMigration() to ask the old storage handler if it has data rather than assuming yes unless NULL storage, but that will hopefully land before the sprint. The first issue (#2278017) is proceeding well and can hopefully be wrapped up in the sprint, and then the second (#2338873) will hopefully be a straightforward application of the same pattern. In addition to these issues, we may also want to create a new issue to add a config validator that does the same validation check during a config deployment.
- #2183983: Find hidden configuration schema issues
- #2387149: Display extenders are not possible to describe with config schema
- #2387157: Cloning display into another display also stores options that are not supported by the new display type
Agree on the API needed for the Views child issues. Then, continue to resolve outstanding failures in the main issue. It would be great to either finish these by the end of the sprint or get far enough to know the reason for each remaining failure to have confidence there's no lingering huge problem! (#2387141: Missing field configuration schemas across core tests should be hopefully done before the sprint starts.)
- #2232477: Fatal when adding new fields with NOT NULL constraints in a base table that contains existing entities
This issue was discussed in Amsterdam, committed, and then reverted. yched has been working on the patch since; we could probably focus on this issue together and discuss the issues with the previous patch to move this forward.
Another goal of the sprint is to triage critical issues in the core queue to assess their relevance and priority. (You can help by making sure any open critical issues you are following have up-to-date issue summaries.)Sponsors
If you have any questions about the upcoming sprint, contact xjm.
Anecdotally, Drupal 8 is slower than anything before it - maybe 4x slower. While installing Drupal 8.0.0-beta3 so I could work on upgrading the Masquerade module, I found the installer dreadfully slow. I started a timer when I got to the Batch API-enabled "Install site" page. The installer ran for 10 minutes to get as far as step 32 of 37. Then it errored-out.
An AJAX HTTP error occurred. HTTP Result Code: 200 Debugging information follows. Path: http://localhost/drupal8/core/install.php?langcode=en&profile=standard&i... StatusText: OK ResponseText: ( ! ) Fatal error: Maximum execution time of 30 seconds exceeded in /Users/davidnorman/Sites/drupal8/core/lib/Drupal/Core/Extension/ModuleHandler.php on line 261
I've installed Drupal probably thousands of times and I knew my MacBook Pro Retina, 3rd-generation quad core i7 processor with a SSD wasn't a bottleneck. At the time, I only had one extra PHP extension enabled - Xdebug (see my phpinfo()). It only had a basic configuration. Sometimes I enable things like xdebug.collect_assignments or xdebug.show_local_vars, but even those weren't enabled at the time.[xdebug] zend_extension="/usr/local/Cellar/php56-xdebug/2.2.6/xdebug.so" xdebug.auto_trace = On
To get Drupal to install, I commented the Xdebug zend_extension at /usr/local/etc/php/5.6/conf.d/ext-xdebug.ini, did a brew install php56-apcu, and restarted my MacBook.
After I swapped Xdebug for APCU, the "Install site" portion of the Drupal 8 installer took only 30 seconds to complete and did not time-out, versus the 10 minutes with ultimate failure while Xdebug was enabled.
At this point, I'm seem to be left to conclude that if I wanted to use Xdebug to debug the installer, that my only option is to increase the default 30 second timeout in my /usr/local/etc/php/5.6/php.ini. Alternatively, if I want to use Xdebug for day-to-day module development, that I'll need to disable Xdebug temporarily to get a local install setup.
Drupal 8 does a lot more stuff to process a page. Core developers have succeeded in moving most of the code to use object oriented methods with namespaces and protected variable spaces, but at the expense of turning a vanilla install into about 76MB. Drupal 7.34 is only 15MB.
To make a point, I inserted a debug_print_backtrace() in EntityAccessControlHandler::access(). This is a basic call in core that would check access on anything that's an entity - users, nodes, etc. After Firefox choked on the resulting output, I attempted to make a snapshot of the page using Evernote to link to in this article. Instead, even Evernote told me that the page was too big to capture.
I guess I don't really have any other point to make. It's not like this article is going to make Drupal 8 faster. I don't have advice for making it lightweight. It's what we have to live with now in the supposed pursuit of progress and modern sophistication. I'm just leaving my breadcrumb for other developers who might find it impossible to even get Drupal 8 installed using an environment that worked for Drupal 7 since I was able to get through the "Install site" part of the Drupal 7.34 installer with Xdebug enabled and with APCU disabled in only 14 seconds.Post categories Drupal
What happens when a user bookmarks an access-protected page? If their session expires before they next visit the bookmark, they'll see an "Access Denied" message with no login form. How confusing for the end user! Let's change that.
A funny thing happened in 1991, when the Americans with Disabilities Act started compelling businesses to make their premises more accessible. People discovered that long-handled faucets are easier to turn when your hands are wet; wheelchair ramps enabled parents to bring their strollers inside; and athletes relied on handrails after twisting their ankles during practice. In short, ease of use benefited everybody, not just the targeted population.
It's a lesson the Drupal community has struggled gamely to learn: consider Drupal 7's extensive (and expensive) user-interface revamp. And yet beginners still find Drupal much harder to use than, say, WordPress. Meanwhile, technologists who are weighing Drupal against its competitors reach for the handrail, find it missing, and assume that this lack of “polish” is more than skin deep.
Sometimes, they're right.'tis a Gift to be Simple
If the history of technology teaches us one thing, it's this: Simplicity wins every time. It beats features, security, and price. Examples abound both within and outside of the world of computers: Packaged goods beat out bulk service even as they partly eliminated customer choice, and Twitter dumbed down blogging to become an essential part of digital life. But fighting against the need for simple, reliable tools is quixotic: It's easier and more fun to create new features than to perfect the ones you have.
Certainly Drupal has long been guilty of this. We've held onto poorly implemented core features, even when their function has diminished and the market has passed them by. The mostly pointless and hard-to-use Actions module is a great example. The disease is evident outside of core, too. Features get more attention than interface bugs in the queues of contributed modules; and five years after its release, the Mac version of Acquia Dev Desktop still can't serve web pages on the standard HTTP port 80, or shut down gracefully when you restart your computer.
We're always on the lookout for great sites built with Drupal Commerce, our truly flexible software that's changing the face of eCommerce one site at a time.
Traveling this Holiday Season? Well if you're in Germany, you might be taking FlixBus. And if you are, then chances are you just purchased your ticket on their new site hosted on Platform.sh. The site features a robust ticketing engine powered by the flexibility of Drupal Commerce and was built by the talented team at Wunderkraut, a Drupal Commerce Delivery partner that has just recently announced their plans to move all the organizations development to Platform.sh, our Continuous Delivery Cloud built to enable and enhance agile development from day one.
To see Drupal Commerce sites we've Spotlighted in previous weeks view Other Spotlight Sites
Creative Juices: I Survived Drupalgeddon: How Hackers Took Over My Site, What I Did About It, And How You Can Stay Safe
If you stop, you loose. This rule works always, especially speaking about IT industry. Those, who work with Drupal for a long time, probably remember how hard it was to switch from Drupal 6 to its 7th version. Seems, that it all took place not so long ago, but official release of Drupal 8 took place recently…Read more
Part 2 of our series about hosting and playing videos in Drupal explores hosted video solutions in detail, and offers some basic information about using video sharing sites. See part 1 for a short explanation of the most popular Drupal modules for video handling, and an introduction of CDNs and cloud storage services.
Just a quick note of how we resolved an issue related to an upgrade to Date.
We recently updated Date in our core distribution to date-7.x-2.9-beta1 and on one site, we had a number of date fields set up as just "Date". After the update, the display of all of these ended up 7 - 8 hours off -- when you edit the node, it shows up with the correct time, and when you display the node, it's off by 8 hours.DrupalDrupal PlanetUpdatesDate ModuleTime zone
Although the Blue Drop Awards are still a few months away, preparation has already begun. However, this isn’t a one-man show; we need your help. There are many ways to get involved such as volunteering, becoming a sponsor, posting to your social media networks and more.
In case you were not aware, in 2012, a group of volunteers set out to create an annual program that aims to increase the awareness of Drupal and it’s capabilities. Now in it’s fourth year, this community-nominated, publicly-voted event recognizes the contributions of individuals, companies, and projects. The Blue Drop Awards are 100% volunteer-organized so we need your help to highlight and showcase the best Drupal websites/modules out there.
There are lots of ways of getting involved! Currently we're looking for sponsors to help us continue this annual project and volunteers to help us run the project.
We're looking for kind volunteers, who are interested in helping with verifying nominations, web design, development, running the booth at DrupalCon LA, wrangling other volunteers and sponsors, and more.
Sponsors are the only way for us to make this a sustaining project because it takes significant amounts of time and resources to put this project on every year. Luckily for our fantastic sponsors, there are tons of benefits of becoming a sponsor! For 2015 we have four sponsorship packages to choose from; sign up and we’ll get your brand in front of tens of thousands of people in the Drupal community. This is a great lead generation and branding opportunity for our sponsors.
Regardless of whether you decide to sponsor or volunteer, we can't wait to see all of the great Drupal nominees come February!
A big THANK YOU to our talent in this Drupal video: Doug Vann (DougVann.com), Arnold Leung (Appnovation), Michael Spinosa (Unleashed Technologies), Stephen Weinberg (Commerce Guys), Ben Finklea, Erik Wagner, Brian Solka, Alexander Popov, and Gilbert Sauceda (Volacci).Tags: Planet Drupal Drupal blue drop awards
In our third year supporting the Drupal Global Training Days Initiative, we have seen more training companies, more community leaders, and more individuals participate than ever before.
Each quarter, communities and training companies host Introduction to Drupal sessions, building better and brighter community members. Global Training Days (GTD) is an opportunity for local training companies and community leaders to build their local community by offering low cost/free Introduction to Drupal training. The Drupal Association lists your training on our site, promotes GTDs and is available to consult on planning and curriculum. Offering these trainings has anecdotally shown to significantly grow individual participation in communities, build a pool of developers, and raise general awareness for the Drupal project.
This year 35 countries hosted over 170 low cost or free trainings. This year our Asian-Pacific communities really embraced GTDs! We had 8 Indian companies host trainings in Srinagar, Bangalore, Ghaziabad, Delhi, Mumbai, Kolkata, and Gurgaon -- the most trainings in one individual country. China, South Korea, Pakistan, New Zealand, Australia, and Japan also hosted training sessions, really highlighting our growth and momentum in Asia-Pacific.
Feeling inspired? Sign up to host a GTD at your DrupalCamp, meet-up, or your local user group. Are you new to Drupal, or do you want to participate in an introductory training? Try reaching out to local Drupal training company to host an event.
Make sure you save the following dates to host and participate in Global Training Days in 2015:
- February 27/28
- May 22/23
- August 21/22
- November 20/21
— Rachit Gupta (@tweet_rachit) September 6, 2014
Acquia Commons is a Drupal distribution that is for building communities within your organization. I have been able to play around with its competitor JIVE and must admit, it stands quite well next to it.
We were approached by Gary Conroy from Specsavers, who have introduced Commons within their organization and needed to do some additional tweaks to make it a bit similar to Facebook. This will be a series of two blog posts, in first we will show how we have made similar functionality to Facebook Like links and in the second how did we change the status form widget.
Drupal Commerce: How to switch your payment settings based on environment variables using Platform.sh
When working on a Commerce project which uses a payment gateway, you need to always make sure that your Staging and Development environments are properly targeting the sandbox or test mode of your payment gateway, and that your Production site is targeting the live account.
This is actually true for any third-party service integration which provides a sandbox where you can test. The objective is to make sure you never send test data on a live account, no matter the service you're testing on.
For this tutorial, I will focus on payment method settings, but the principle remains the same for any other third-party integration.
I will start from an empty Drupal site hosted on Platform.sh and go through the following steps:
- Enable and configure Paypal WPS payment method
- Export its configuration to a settings.local.php file
- Override its Sandbox configuration on the Staging environment
- Write custom code to read the configuration from the settings.local.php
As you see, the goal (as always with Drupal) is to read the configuration from your code so that you can easily switch from a sandbox mode to a live mode.
If you see nothing above probably your browser does not support PDF embed. Try from a desktop with the latest version of Chrome or Firefox.
Let's get started.
Traditional web design has always involved creating flat, two-dimensional designs in wireframes or high-definition design comps. While this process feels natural and intuitive for designers, it presents significant shortcomings when it comes to the increasing demand for modern, responsive websites.
Building a website in Drupal typically follows this process:
create low-definition conceptual designs, wireframes, and sketches
create high-definition design files in Photoshop
configure the site and build out various functionalities
create a base theme and apply it to complete functionalities
This process, tried-and-true as it may be, leads to a lot of challenges:Synchronicity of frontend and backend development
Theming only after a site’s functionality is ready leads to a problematic situation wherein a web design team can't actually show its client polished work until the end of the project. Theoretically, of course, we can show some functionality or provide elaborate descriptions, but the “bells and whistles” still tend to be missing until a project nears completion. This leads to a huge bottleneck effect as both clients and quality analysts turn their attention to testing a new website on multiple devices and platforms. At this stage, most of the bugs reported will be related to responsive behavior or small changes to theming. This can be a nightmare for frontend developers; they receive tons of work all at once, even as the project is about to finish.Enabling frontend developers
Lately Propeople has been rewriting the web design process, building prototypes right after designs become available. In fact, the main deliverables of our design work are the prototypes themselves. Technically, the prototypes we build are sets of HTML pages. The idea here is for these prototypes to empower frontend developers to build a site how they see it, instead of how Drupal dictates. Prototypes free up frontend developers to use new technologies and to properly organize code. Another advantage is that prototypes can be built before Drupal functionality is finalized. In other words, clients can start test driving their website early on in the development process and have a clear idea of how the site is going to look and behave. By the time Drupal functionality is ready, all frontend bugs are resolved, specifically the ones related to responsive behavior. There are multiple PHP-based template engines to use, platesphp.com being one. Our developers use assemble.io.
Let’s say you’ve got your prototypes just the way you want them. Now Drupal’s backend HTML should be made to match the prototypes as precisely as possible. The bad news: this is not easy as it may sound. The good news: we’ve compiled some best practices to lead the way.
Panels, panels, panels. We use a stack of panels modules. It is pretty simple to build custom layouts out from the prototypes, replacing static blocks with implemented panes.
Custom panes with custom templates. In order to control the HTML of custom panes, we create a template file for each one. This makes it easy to tweak the HTML of a single pane as needed. We even display custom panes in lieu of views panes, executing views under the hood. We skip rendering views in order to keep all the theming for one block in one template.
Display entities as view modes. For most view modes (different kinds of teasers), we use separate custom templates.
Prototypes make building a website much more exciting and improves the web design process for everyone involved. Backend developers can actually watch the site’s theming implemented as they complete functionality. Frontend developers have more freedom and fewer Drupalisms to remember. Best of all, prototypes increase client satisfaction because prototypes allow clients to feel more involved in the implementation of their projects.Tags: PropeoplePrototypesDesignService category: TechnologyCheck this option to include this post in Planet Drupal aggregator: planetTopics: Tech & Development