Feed aggregator
Lullabot: 10 Commandments of Modern Web Design
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction.
— Albert Einstein
I would argue that a huge part of that genius Einstein refers to can be found in clarity of purpose and principles.
We all wind up in those situations where we're focusing on technical details, implementation and points of process, and missing the bigger picture. I confess I've been there far too often. When we find ourselves in those situations as designers, it's important to have some guiding principles we can remind ourselves of and even share with our team and colleagues. Guiding principles can help get everyone on the same page and make it easier to work through the details of process and implementation. They're no panacea, but they've certainly helped me maintain my sanity.
Below I've documented some of my emerging, fundamental design principles. These principles have helped guide me in this brave new world of a bazillion devices and amazing possibilities. Hopefully they'll be helpful to you as you hone your design process, document your own principles, and face challenges along the way.
Gábor Hojtsy: Learn Drupal 8 now by helping to make it more unified and user/developer friendly
Many of the Drupal 8 core APIs are shaping up now, and as Larry Garfield likes to say "we are still not ready porting Drupal 8 to Drupal 8". Meaning that the new APIs introduced are not used widely at all places where they would be applicable. Views is in core, but not all listings are views, router configuration instead of menu hooks are in core, but most modules use menu hooks, and so on. We of course target the final Drupal 8.0 release to have these conversions done, but we need more help to do them. Let me highlight items that interest me most as the multilingual initiative lead (but most of these rhyme with multi-channel publishing / web-services efforts as well).
Help convert content-like things to content entitiesDrupal 8 has a new improved Entity API to manage content entities. What better opportunity to get to know the new content handling APIs than being involved in porting core components to it? Web services and multilingual are both fundamentally in need of a unified handling for content-like stuff in Drupal.
Comments have already been converted to the new entity API (http://drupal.org/node/1778178) which can serve as an example for conversions elsewhere, namely nodes (http://drupal.org/node/1818556), users (http://drupal.org/node/1818570) and so on. See the full list of conversion issues at http://drupal.org/node/1818580. Once these conversions are done, we still need to apply multilingual property handling to do such basic things as editing titles on nodes in different languages (http://drupal.org/node/1498674).
While the existing entity types need conversions, there are also other content-like things in core that need to be converted to entities proper. For example aggregator feeds (http://drupal.org/node/293318) have been converted to content entities but more needs to be worked on. Hands are needed to help with converting menu links (http://drupal.org/node/916388) and custom blocks (http://drupal.org/node/1871772) as well.
Learn Drupal 8 configuration by porting things to the configuration systemThe new configuration system in Drupal 8 is great in unifying all configuration elements under one system instead of custom one-off database storages and APIs for configuration.
There is a laundry list of system settings forms to convert to configuration at http://drupal.org/node/1696224 including locale module settings, file system settings, etc. still to be done.
Drupal 8 also comes with configuration entities, which store their data with the configuration system (and are not fieldable). Some of the previously custom coded features such as views, menus (http://drupal.org/node/1814916) and contact form categories (http://drupal.org/node/1588422) have been converted to configuration entities. Others like languages are still to be done (http://drupal.org/node/1754246). Track all related issues at http://drupal.org/node/1802750.
Learn the new configuration schema system by writing schemas for configurationA configuration schema system was just recently added to core (see http://drupal.org/node/1905070 for documentation and examples). Some configuration files got a schema defined in the initial patch, but there is still more work to be done to adopt this and complete. For example, only some of Views got schemas written, and we need to complete that (http://drupal.org/node/1910606). The meta issue to track and find schema issues is at http://drupal.org/node/1910624.
Why get involved?I think this is a unique opportunity to (a) get to know Drupal 8 early (b) still have a chance to shape things in Drupal 8 where you find them confusing (instead of bragging about them too late when there is no chance to change) and (c) help Drupal 8 become the great consistent platform we all want it to become. Better web services features and dramatically more extensive multilingual features are also a huge plus!
How to get help if you get stuck?Most of these issues have someone who got it started and you can find the people who worked on previous complete conversions that I linked to above. Find these people on IRC, get involved in virtual meetings, ask at core mentoring hours. Sometimes all is needed is reviews, help testing or help writing tests.
Thanks for all your contributions!
Wunderkraut blog: Drupalcon Australia: Dries Keynote
Dries Buytaert, the founder and project lead of Drupal, gives his traditional keynote at Drupalcon Australia.
Dries began by looking at some of Drupal's recent achievements, along the theme of 'Do Well, Do Good' - the idea that Drupal companies succeed and profit, but are doing great things for society at the same time.
He highlighted the MTA (Mass Transit Authority) website in New York, which kept citizens informed in the aftermath of superstorm Sandy. Staff were able to update the site from their mobile devices when they couldn't get to their office, and the site stayed up under very heavy traffic, while other non-Drupal sites across the city were down. He also highlighted some charity websites built on Drupal dealing with very high loads - one in the UK that handled £7m in donations in one day during a TV fundraising event. Finally in this section he talked about how Drupal is helping governments open up information and make their work more transparent.
Dries sums up by saying that Drupal is no longer just about content, its about faciliating the core work of organisations on the web.
Drupal 8Next Dries turned to the next version of Drupal, and outlined some of the new improvements that are coming:
- Web Services: Drupal 8 has brought in some of the Symfony components that will enable improved web services support. This will make integrations with 3rd party services - CRM systems, ERP systems, and so on much easier. It will also facilitate native mobile apps to integrate with a Drupal site more easily.
- Authoring Experience: The core themes are responsive, and the admin backend is now responsive - so it's possible to manage and update your site from a mobile device. In-Place Editing will allow content authors and editors to work on their content in the front-end of the site, editing it directly on the page by simply clicking where they would like to make changes. WYSIWYG is being added to core. The content creation page has been re-designed for greater user experience.
- Site Builder Improvements: Better configuration management, with configuration settings now stored in code rather than in the database - this will make continuous development and deployment much easier. View is now in core. There is better multi-language handling.
Dries then discussed the timeline taking us towards a release of Drupal 8.0. The Feature Freeze is on 18th February, the Code Freeze is 1st July, and release is possible by the end of 2013, with the usual caveat that it will only be released when it's ready.
From Content Management to Experience ManagementDries now turns towards other aspects of the future. He says currently 2% of the web runs Drupal, and we should aim for 10%. He says we should aim big for the sites we target - the largest ecommerce site in the world, the largest government site, the largest news network and so on.
These seem like huge goals, and Dries wonders what stands in our way. He says that big sites need 'complete solutions' - they need content, community and commerce on one site. Traditionally these have been seperate systems, but now they need to be consolidated. These big sites need to run their business or organisation on the web. This is referred to as Web Experience Management.
Dries feels that the Drupal community is a little disconnected from this transition. We need to focus on the business goals of the organisation - attracting, engaging, influencing, converting and retaining users.
In order to achieve this sites need more than just content management. They need user generated content, e-mail, CRM, marketing automation, multi-channel (mobile, tv etc), personalisation, analytics, SEO, digital asset management (DAM). Drupal needs to be addressing these needs to serve larger sites. Dries says Drupal needs to move from being a content management system, to being a web experience management system.
To facilitate that Dries would like to see more, and more specialised, startups in the Drupal ecosystem. He also thinks we need to develop larger Drupal agencies. These larger agencies can provide the strategic input that larger clients require, and be able to handle the larger projects. Dries believes they can then help Drupal move towards Web Experience Management. (Of course, that's why we merged four of Europe's best Drupal agencies to form the largest agency in Europe, and are tackling these kind of large projects).
Dries finishes by saying that Drupal can challenge the big proprietary vendors in the WEM space, just like it has challenged, and beaten, the proprietary content management systems. By doing this we'll be doing well, and doing good - opening up these tools and making them available to all.
Web Wash: Intro To Taxonomy CSV (Part 2): Import Terms With Custom Fields
In part 1 of this series, we imported a list of terms as a flat and tree structure. We also became familiar with Taxonomy CSV's import and export page. We imported a simple list of terms in part 1. In Drupal 7, taxonomy terms have become a lot more powerful such as the ability to attach fields to terms.
In this tutorial, we'll import terms that have a custom field.
Drupal Association News: What I Learned at #DrupalCon Day 1: We Saved the Universe! We Can Rap!
I have the great good fortune to be in Sydney this week for DrupalCon Sydney, a sold out event of over 400 attendees! So far, the Aussies have proven to be amazing hosts, and rabid Drupal fans. Since this is my first DrupalCon, I thought I would share with you what I've been learning as I take it all in. Unsurprisingly, what I learned turned out to be a whole lot of fun!
Code Karate: Drupal 7 Conditional Fields Module
The Drupal 7 Conditional Fields module makes it easy to build dynamic and complex forms with Drupal 7 Fields. Any Drupal entity that has fields can pretty much be built into a dynamic and conditional form. The Conditional Fields module essentially lets you set conditions for how specific fields act based on another dependent field on the form. The simplest example is that this module can hide or show a field based on the value of another field. If you are still confused at what this module can do, watch the video to find out more!
DDoD Video:CMS Quick Start: Comparison of pagination techniques for Drupal 7
Pagination is one of those elements we take for granted. Most of the time it works fine out of the box and requires no customization or configuration. However, you do indeed have options in this department and changing the pagination can greatly benefit a site that has hundreds or thousands of pieces of content. Today we're going to examine a few different modules and techniques you can use to improve the speed and efficiency of content browsing.
1. More columns
Affinity Bridge: Gates Foundation: Case Study in Responsive Design
In January, our team helped launch a conference website for the Bill & Melinda Gates Foundation. The Gates Foundation is currently very active in examining the U.S. school system looking for effective ways to leverage its strengths. Our team had the opportunity to participate in building online tools to help stakeholders connect at the annual Teaching is Learning 2013 conference (they call it their "convening").
As a front-end developer, this project was interesting because we were building a fully responsive website in a short time frame. This meant we needed clear mobile-first designs with clear layout guidelines.
The design we received met the requirements: it was clean, fit into the 960 grid, provided a style for every display layout (mobile, tablet and screen), and considerable thought went into how each block would flow on the adaptive theme. This significantly reduced the amount of CSS code we needed to create and helped us to style "general elements" instead of focusing in "singular custom blocks". Mega props to Brandon who designed the site!
Rubber Meets the RoadThe rest of this blog post is meant for theme designers or anyone interested in learning about techniques for responsive layout. It gets pretty technical.
So how did we create a responsive theme ready for production in a week? Let me tell you.
To accomplish this we had to work fast and be confident that our tools would work. By letting Omega 3 and Display Suite 2 take care of the responsive layout I could concentrate in the creation of the custom theme where I used Compass for my style sheets.
To accommodate the use of two responsive slideshows on the front page (one for images, one for Twitter) I used Flex Slider. This automatically resized our images and block sizes for each responsive layout without us having to resize anything ourselves. We did have to add a small amount of custom code to have the sliders shift out of synch (in synch they looked a little funny).
Responsive Main NavigationThe main navigation menu was a bit of a challenge. For the mobile layout the menu had to display in a clickable dropdown style. To add some hot and spicy to the recipe we wanted to include a breadcrumb on the mobile navigation as well.
In the diagram above, you can see the menu in the various responsive layouts (the top is the normal screen size). By using Menu Block 2 we were able to display the 2nd level of the navigation in a separated region when needed (normal screen size). I decided to keep the full HTML menu structure intact to use it to my advantage on the mobile layout where some jQuery magic was needed to complete the metamorphosis. The expanded menu is just a simple inline menu. Below, you can see the Compass and JQuery code I created for the mobile menu.
Compass code
nav.compact-menu { background: url("../images/arrow-down.png") no-repeat 98% 14px $dirty-white; border: 1px solid $light-black; &.expanded { background-image: url("../images/arrow-up.png"); } > h2 { @include adjust-font-size-to(14px); @include trailer(0); background: url("../images/tools.png") no-repeat 6px center; font-weight: 700; margin: 4px 0; padding: 0px 4px 12px 38px; position: relative; text-transform: uppercase; &:hover { cursor: pointer; } .mini-breadcrumb { @include adjust-font-size-to(10px); bottom: 0px; display: block; color: $light-black; font-style: italic; font-weight: normal; left: 38px; position: absolute; text-transform: none; } } > ul { display: none; } ul { list-style: none outside none; margin: 0; padding: 0; li { list-style: none outside none; margin: 0 !important; padding: 0; } a { border-top: 1px solid $dark-gray; display: block; padding: 5px 10px; &:link, &:visited { color: $light-black; } &:hover { background: $secondary-link-color; color: $dirty-white; } &.active-trail { font-weight: 600; } } ul { margin: 0 10px; a { padding: 2px 10px; } } } }jQuery code
/* * Responsive menu */ var bmgf_responsive_menu = function() { // Main menu // TODO: Improve this section // This should have been done on php and not here, but I wasn't able to find a nicer solution if ($('#region-menu nav > h2').length == 0) { $('#region-menu nav').prepend('<h2 class="element-invisible">Main menu</h2>'); $('#region-menu nav > ul').attr('id', 'main-menu'); } // End of TODO if (Drupal.omega.getCurrentLayout() == 'mobile' || Drupal.omega.getCurrentLayout() == 'narrow') { $('#region-menu nav').addClass('compact-menu'); $('#region-menu nav > h2 .mini-breadcrumb').detach(); $('#region-menu nav > h2.element-invisible').removeClass('element-invisible'); $('#region-menu nav > ul').removeClass('inline clearfix').hide(); // build breadcrumb var breadcrumb = '', active_trail = $('#region-menu nav > ul').find('li a.active-trail'); for (var i = 0; i < active_trail.length; i++) { breadcrumb += $(active_trail[i]).text(); if (i != active_trail.length - 1) { breadcrumb += ' > '; } } $('#region-menu nav > h2').append('<span class="mini-breadcrumb">' + breadcrumb + '</span>'); } else { $('#region-menu nav').removeClass('compact-menu'); $('#region-menu nav > h2').addClass('element-invisible'); $('#region-menu nav > ul').addClass('inline clearfix').show(); } $('#region-menu nav > h2') .unbind('click.bmgf') .bind('click.bmgf', function() { $(this).siblings('ul').slideToggle(); $(this).parent().toggleClass('expanded'); }); }Remember that on screen hover events need to be replaced by click actions for touch screen devices.
Finishing the Fiddly Bits
Some other quick fixes included the Callout Boxes at the top of the content pages - these are the green boxes that say "Learn everything you need to know about...". Now I know you shouldn't use tables to control your layout, but this is an occcasion where it was the optimum solution for us. By using a background image I was able to control the size of the displayed icon at each responsive layout size.
One of my biggest challenges was to make these pretty boxes below. When you hover over the boxes the background colour changes and the entire box can be clicked. Nice and intuitive functionality, but a small challenge to implement (see code sample below).
There is no JavaScript here, since HTML5 allows anchor tags to have block and inline elements inside. Something like <a href="#"><h3>I'm an h3 tag</h3></a> is now completely acceptable, however the wysiwyg editors haven't caught up just yet. Unfortunately, disabling the wysiwyg editor was not an option for us so we simply needed to disable it when saving these blocks.
Wrapup
As I've said before, the mobile Internet is here to stay. Building fully responsive themes is a logical and necessary progression in our theme development. Working with the right tools like Omega 3, Display Suite 2 and Compass for my style sheets can make the process of developing responsive layouts easy and fast. However, to be successful the key ingredient in our secret sauce is an awesome website graphic design that considers mobile first! This makes all the difference.
Open Source Training: Improving Drupal User Profiles with Profile2
Drupal 7 has made it easy for you to allow your site users to share information about themselves. User accounts are now "entities" which means that you can add fields to them, just as with content.
You can add user profile fields for names, email addresses, phone numbers, resumes or whatever else you might need.
However, there are some limitations to the core user profile. What happens if you don't want user accounts visible to the public? What happens if you need different profiles for different areas of your site?
The answer is the Profile2 module.
Drupalize.Me: New Series: Deploying Your Code with Beanstalk
This week I am continuing the trend of mini-series with some lessons on deploying your code, in the FREE Deploying Your Code Without a Terminal series. The reason behind this quick set of videos is that not everyone is command line savvy, and not everyone has to be. What is important though, is getting your code into version control, and there are plenty of tools that let you do that using a graphical interface.
Modules Unraveled: 050 Aberdeen Cloud with Aaron Porter - Modules Unraveled Podcast
- What is AberdeenCloud?
- How does it affect development?
- Version control - replace github?
- dev / staging / live
- Is AberdeenCloud just for development? Or can you host a live site on it as well?
- What kind of scalability does AberdeenCloud offer?
- What’s the pricing look like?
- What kind of support is available?
- How can clients and site owners use AberdeenCloud?
- What does AberdeenCloud have to offer for site-builders?
- What tools/features are available for developers?
- What’s coming up in the future of AberdeenCloud?
- Paul Johnson (@pdjohnson): What tools exist in Aberdeen cloud to make devs lives easier? E.g continuous integration, scaling, monitoring, upgrading Drupal, db backup
- Paul Johnson: How does Aberdeen cloud differentiate itself from @acquia and @pantheon_drupal ?
Drupal Watchdog: Drupal Security
When thinking about the security of a site based on a system like Drupal, it's valuable to decide if your site is a gazelle or a bank; that can help you prioritize your actions related to security, and determine a strategy for securing your site. This article starts by explaining the bank vs. gazelle categories, and then gives ideas for how to protect your site depending on which kind you have.
The Asymmetrical Nature of SecurityThe first thing to consider when running a site is that as the site owner you have to be proactive in keeping your site 100% secure. An attacker only needs to find one vulnerability. This asymmetry creates one of the biggest challenges in running a secure site and often leads developers and operations teams to take extreme measures to protect their sites. It's not uncommon to hear about combinations of preventive and detective protection in multiple layers. Just one example I'm aware of: a site that uses a Denial Of Service prevention tool at the DNS layer, a CDN with a built-in web application firewall (WAF), and a WAF on the read-only-publicly-accessible staging server, all of which are in front of the actual content entry server which is only accessible on a private VPN. Lots of protection, right?
Author Greg KnaddisonGreg is the author of Cracking Drupal, the only book to discuss security in Drupal. As Director of Security Services at Acquia, Greg helps perform security reviews and trains clients to learn to find and fix those problems for themselves. Read more on Acquia.com, DrupalScout.com, CrackingDrupal.com, or @greggles.
Web Omelette: "I’m Hooked": a weekly examiner of a Drupal hook.
Mediacurrent: What's new in Drupal 8?
Now that features are frozen, let's take a look at what to expect in Drupal 8, both front and back-end.
Behind the scenes, Symfony2, an object-oriented application framework, will be part of Core and will provide multiple benefits:
Drupal core announcements: Entity reference import needs feedback [video]
I've been having a hard time drumming up architectural review on Handle entity references on import. I know it's pretty hard to see how the parts fit together, so I made a short video explaining the proposed approach.
The patch doesn't need code style review or manual testing yet, but instead needs architectural review to ensure we're building the right thing.
Also, for people who do want to start playing around with REST module based on this, keep in mind the following. Currently, only JSON-LD supports deserialization of incoming data, though there is an active issue to add support for JSON as well. Additionally, only EntityNG entities are supported, and I have only tested the entity_test bundle.
You can ask me any questions about the approach in IRC or over twitter.
Digett: IE compatibility craziness, retina graphics, what should I do?
I'm excited about the future of web design/development.
- Screen-size agnostic approaches like responsive design using media queries.
- High resolution graphics. Apple has branded this high resolution display as a "Retina" display. Other manufacturers are beginning to come close to the same resolution level. No doubt, we'll only see increased resolution going forward.
- CSS3/HTML5 now in the mainstream.
- Hosted fonts (Google Fonts, Typekit, etc) are becoming more common and higher quality.
The process of including IE7 and now even IE8 in my workflow feels "post war" and not current, modern or exciting. I remember the beautiful day when I stopped supporting IE6 a few years ago — the world was full of CSS promise.
Web Wash: Intro To Taxonomy CSV (Part 1): Import And Export Structured Terms
The Taxonomy CSV module allows site builders to import and export taxonomy terms using a CSV file. This allows content creators to define large vocabulary lists in Excel or Numbers, export the spreadsheet to CSV, and then import it into a website. Another benefit of using this module is the ability to import a large list of terms by adding terms into a text area. This makes managing vocabulary lists a lot easier in the early stages of site building.
In this tutorial, we'll look at how to import and exports parent and child terms. When you import terms using Taxonomy CSV, there are a lot of options on the import page. We'll import terms using the least amount of configuring and use a simple CSV example.
Code Karate: Drupal 7 Service Links Module
The Drupal 7 Service links module makes it easy to add social networking or bookmarking links and widgets to your Drupal 7 website. From Facebook, to Twitter, to Google Plus, and more... this module has it all.
In this episode you will learn:
- How to download and configure the various settings in the Service Links module
- How to add service links and service widgets to a content type page
Thanks to today's sponsor Drupalize.me
DDoD Video:Freelock : Drupal deployment with Git Flow
At Freelock, we've been adopting a pattern for git branch management called Git Flow. If you haven't run across git flow before, go check out this article to get the basic concepts: A successful Git branching model.
Story Type: Dev CornerTags: DrupalSource Code Managementgitgit flowDrupal Planet