Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 8 min 45 sec ago

OpenConcept: Drupal 8 - Accessibility Now; Supporting Continued Accessibility in the Future

Fri, 12/02/2016 - 18:46
div class=field field-name-body field-type-text-with-summary field-label-hidden view-mode-rssdiv class=field-itemsdiv class=field-item even property=content:encodedp class=noteThis article was initially posted as a guest blog on a href= Digital Echidna Blog/a on November 29, 2016./p pimg alt=Phone with Braille Display src=/sites/openconcept/files/accessibilityphone.jpeg style=width: 320px; height: 158px; float: left; margin: 5px; /So you’ve gone all out on making your website accessible. You considered accessibility at every stage of your project. You started by choosing Drupal. You then evaluated the wireframes for potential problems, took careful consideration that the colours had sufficient contrast, had your developers do regular accessibility checks with every sprint, brought in an external reviewer at the end of the project to evaluate your work, etc./p pIt was the textbook example of how you should approach building a modern site using a Content Management System./p pThen you hand over this gem to the content editors./p pAnd quickly the accessibility gains you have worked so hard on start to be compromised./p pEditors copy/paste bad HTML from Microsoft Word and break functionality. They use font tags to mark-up their document or start inserting H1s in the body of the content. They upload images without alternative text. These are just a few random errors that slowly start getting added to the site./p pSure, you do an accessibility review of your site every six months using a third-party evaluation tool. It hits some of the errors that are being added, but by the time it takes you to organize and address these issues, some of those folks who added that content are no longer doing that job. Now someone else needs to be educated about both the problem and the solution./p pThis is really a best case scenario. Content Management Systems were designed to enable people with little or no technical knowledge to create and maintain content without knowing anything about HTML or accessibility. So why are we surprised that they haven’t grok’d* the WCAG 2.0 specs? em(*editor's note: this means 'understood' for the less technically inclined amongst us!)/em/p pFortunately, there is a solution, and we've already done a lot to implement it in Drupal 8./p pAuthoring Tool Accessibility Guidelines (ATAG) 2.0. a href= 2.0 is just over a year old now and it comes in two parts/a./p pMost content management systems really struggle with the first part: making the authoring tool itself accessible. Fortunately, we’ve been working on this since Drupal 7 and we can be very confident that users of all abilities can perceive, operate, and understand Drupal’s admin pages in a robust context. Drupal 8 isn’t perfect, but this commitment to make both the front and back-ends respect WCAG 2.0 AA is still, sadly, quite unique./p pThe second part comes from finding ways to make it easier for content authors to produce accessible content. We know that people learn best when they are corrected while creating a document, rather than a few months later. Drupal can make it easier for authors to improve their content as they are creating it./p pThere are a few bold things that we’ve done in Drupal 8./p ulliAlt tags are now required by default. This can be disabled but, by default, editors will be asked to create alternative text for every image;/li liWe chose CKEditor for Drupal 8, which has a long track record with accessibility, including ATAG. It defaults to semantic markup where possible;/li liHeadings and spans are now allowed by the default filter for body text. Headings help manage a hierarchy while spans allow for WCAG 2.0’s Language of Parts;/li liBrowser spell check is enabled by default. Screen-readers aren’t good at pronouncing spelling errors;/li liSummary and caption elements have been added to Views tables. This additional information can be very useful in providing additional context to assistive technology users; and/li liWe have accessibility information added to help pages to help make the information more discoverable./li /ulpThere is a lot more that can be done, but the groundwork has been set in Drupal 8 to help content editors produce better content for less. Better, more understandable content will not only help people with disabilities, but everyone who needs to access information in this fast-paced, mobile world./p /div/div/divsection class=field field-name-field-portfolio-topic field-type-taxonomy-term-reference field-label-above view-mode-rssh2 class=field-labelTopic:nbsp;/h2ul class=field-itemsli class=field-item evena href=/topic/planet typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Planet/a/lili class=field-item odda href=/topic/open-source typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Open Source/a/lili class=field-item evena href=/topic/accessibility typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Accessibility/a/li/ul/sectionsection class=field field-name-field-primary-image field-type-image field-label-above view-mode-rssh2 class=field-labelPrimary Image:nbsp;/h2div class=field-itemsfigure class=clearfix field-item evenimg typeof=foaf:Image class=image-style-none src= width=800 height=420 alt= //figure/div/sectionspan property=dc:title content= Drupal 8 - Accessibility Now; Supporting Continued Accessibility in the Future class=rdf-meta element-hidden/span

Amazee Labs: Drupal Mountain Camp is coming

Fri, 12/02/2016 - 15:58
spanDrupal Mountain Camp is coming/span div class=field field-node--field-lead field-name-field-lead field-type-text-long field-label-hidden div class=field-items div class=field-itempTogether with the local Drupal Community, we are inviting you to join us for a href= Mountain Camp/a in Davos, Switzerland. More than 200 attendees are expected to come for sessions, workshops, sprints and stay for the community ... as well as a great amount of powder for those interested in skiing or snowboarding under perfect conditions!/p /div /div /div spana href=/en/josef-dabernig title=View user profile. lang= about=/en/josef-dabernig typeof=schema:Person property=schema:name datatype= class=usernameJosef Dabernig/a/span spanFri, 12/02/2016 - 15:58/span div class=field field-node--field-image field-name-field-image field-type-image field-label-hidden div class=field-items div class=field-itemimg class=image-style-blog-full src= width=482 height=482 alt=Drupal Mountain Camp Logo typeof=foaf:Image / /div /div /div div class=field field-node--body field-name-body field-type-text-with-summary field-label-hidden div class=field-items div class=field-itempAfter a very successful and very interesting Drupal Commerce Camp in 2011, the team of Drupal Events Schweiz decided that it is again time for a Drupal Camp in Switzerland. As Switzerland provides so much more than bright attendees and speakers, we also want to show the beauty of our country and mountains. We found the perfect location for this: Davos!/p piframe allowfullscreen= frameborder=0 height=315 src= width=560/iframe/p pThe camp will happen from 16 to 19 February 2017 at the a href= Congress Centre/a. We expect around 200 attendees from Switzerland, all over Europe and the world. We will feature a day of summits, two days of sessions, a day fully dedicated to sprints, and social activities each day./p pI'm especially excited that a href= So/a has been confirmed to be the first keynote speaker. He will be giving a talk on API-first Drupal and the future of the CMS. In addition, we have confirmed a number of speakers internationally amp; from Switzerland. Interested in presenting? The a href= for sessions/a is open until beginning of January./p pimg alt=Preston So - Keynote Speaker for Drupal Mountain Camp data-entity-type=file data-entity-uuid=93864d8c-a8f9-457a-9309-9a0cb57076e5 height=267 src= width=267 //p pSprints are a great place to get involved with development of Drupal 8, join an initiative and get to work with experts and people interested in the same areas. a href= the sprint sheet to sign up already/a to join forces for improving Media, Paragraphs, Drupal 8 core as well as the Rules module for Drupal 8./p pWe are thankful for a great number of sponsors already which help keep ticket prices low. If you are interested in finding Drupal talent or providing your services to Swiss customers, this is a unique opportunity. See the a href= Mountain Camp website/a for information about sponsoring or contact a href=mailto:michael.schmid@drupalevents.chMichael/a directly. /p pDiscounted hotel options are available from CHF 59 per person/night via the following link: a href= pa href= Bird Tickets/a are available until end of December for only CHF 80. With your purchase you already get a discount on travels with the famous Swiss railway service. There is more to come!/p pSee you 16-19 of February in Davos, Switzerland. In the meantime, a href= us on twitter/a./p /div /div /div - Thoughts: The wonders of Twig theming

Fri, 12/02/2016 - 13:47
div class=paragraph paragraph--type--text paragraph--view-mode--default cta-style--default div class=container div class=row div class=col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 div class=field field--name-field-text field--type-text-long field--label-hidden field--itempPart of the plan for rebuilding the Ixis site in Drupal 8 was for us to write up some of our thoughts at the end. Writing about the theme layer is hard, because it’s all completely new. There’s a million things I want to talk about, some of the Drupal related, some of them just about frontend tools in general, so I’m going to try and squeeze as much as I can in here./p h2Bootstrap is awesome/h2 pThe frontend theme is built on Bootstrap, which allowed us to get the site up and running quickly, and iterate on feedback from the rest of Ixis and the design agency. We only started building the theme 6 days before the site went live!/p pUsing a fairly heavy framework like Bootstrap often raises concerns about performance, but considering that all of the CSS on one of our page loads is ~30kb, it was worth the trade off for the speed of development and iteration. At some point we’ll go through Bootstrap and remove the parts we aren’t using, but right now we’re still iterating and improving things./p h2Libsass is awesome/h2 pWe’ve been using Sass for a while at Ixis, it’s amazing for writing clear CSS that can actually be maintained after a few years of iterative development work. Up until now we’ve relied on Compass to compile that for us, but this time we took a look at a href= and a href= with a href= pDamn is it fast. We’re compiling bootstrap-sass as part of our theme, which used to take Compass ages every time we changed a variable. Libsass builds the whole thing in about a second. On top of compiling the CSS, we’re using Gulp on the Ixis site to automatically add vendor prefixes (no more reliance on compass for browser compatibility), provide image mappings (which lets Sass access information about the images, like dimensions) and optimise the file size of those images./p h2Twig is awesome/h2 pI 3 Twig. After so many years of wrangling the Drupal PHPTemplate engine into usable markup, it is so refreshing that everything is templated. No more overriding theme functions just to add an extra class to a div. You don’t even need to use PHP at all to do it./p pre code class=language-twigarticle{{ attributes.addClass(‘an-extra-class') }}/code/prepDealing with render arrays in a template? Just print them! Doesn’t matter what’s in them. Let Twig sort it out. You’ll never again see “Array” printed to the screen because you forgot to pass something through render()./p pI know a huge amount of effort went into making Drupal 8 more accessible to frontend folks, and it really does seem to have paid off! The only downside is that I still have to go back to the Drupal 7 way of PHP everywhere occasionally to support older sites./p h2Libraries are awesome/h2 pThe new libraries.yml file makes it a lot easier to define a href=, which are collections of Javascript and CSS, along with their dependencies, so you can just load things when you need them. No gallery on this page? Drupal won’t load that javascript, and if the gallery was the only reason you needed jQuery then it won’t load that either if no gallery is being rendered on the page. A contrib module that adds a library can now be boiled down to just an info.yml and libraries.yml filebe 2 yaml files in the theme./p pContrib for libraries is in a bit of a weird state in Drupal 8 at the moment. If you’ve used Drupal 7 then you’ve probably used the a href= API/a module, it’s there to allow other contrib modules to share third party libraries. It looks like the plan for Drupal 8 is to eventually have a a href= repository of third-party libraries/a, but currently it doesn’t seem like a lot of contrib is using it, instead just relying on the library being in /libraries in the Drupal root./p h2Paragraphs are awesome/h2 pWe went with paragraphs in order to allow content editors a bit of control of the layout of the pages. I won’t waffle too much about how we set up paragraphs because a href=// title=Using paragraphs in Drupal 8we’ve already talked about that/a, but from a frontend point of view, each paragraph type has it’s own twig template, and we can load separate libraries just for that one paragraph, so we were able to make each paragraph into it’s own self contained component. Did I mention I love the new Twig stuff in Drupal 8?/p h2Caching is awesome, but you should probably learn how it works/h2 pThe new caching layer is amazing, it just seems to work magically behind the scenes. It can be quite easy to be caught out by it though, if you don’t understand what’s happening behind the curtain, especially if you’re used to Drupal 7’s way of caching each page./p pHere’s an example from building the Ixis site: The logo on our site links to the front page. It’s a fairly common thing to do. If you’re already on the frontpage though, that’s a redundant link, there’s no reason for it to be there and it can confuse things for those using screen readers./p pSo we added a simple check: If we’re on the front page, just show the logo, otherwise wrap the logo in a link to the front page. Without caching, this works fine. With caching, Drupal caches that block the first time it’s rendered, then uses it everywhere, because we haven’t told Drupal that this block can differ based on path./p pIn the end, we added a new a href= context/a to the ‘site branding’ block, so Drupal knows it can differ based on the url. We’re currently relying on just the ‘url.path’ context, but a href= 8.3 there’s a new url.path.is_front context/a we’ll be using./p h2Debugging is easy./h2 pDebugging Twig is easy peasy; In your sites/default/services.yml file (copy the one from if it doesn’t exist), then change the debug value to ‘true’./p pre code class=language-yamlparameters:  twig.config:    debug: true /code/prepThen you get handy comments like this in the page source:/p pre code class=language-twigdiv class=region region-branding  !-- THEME DEBUG --  !-- THEME HOOK: 'block' --  !-- FILE NAME SUGGESTIONS:     * block--magicks-sitebranding.html.twig     x block--system-branding-block.html.twig     * block--system.html.twig     * block.html.twig  --  !-- BEGIN OUTPUT from 'themes/custom/magicks/templates/block/block--system-branding-block.html.twig' --  span class=logo navbar-btn    img width=120 height=44 src=// alt=Home  /span  !-- END OUTPUT from 'themes/custom/magicks/templates/block/block--system-branding-block.html.twig' -- /div/code/prepYou can quickly dump a variable with the dump function like code{{ dump(a_variable) }}/code, which just uses PHP’s var_dump() behind the scenes, but if you want to poke at array they you’ll probably want to use the a href= module from devel/a, which gives you a much nicer output with code{{ kint(content) }}/code. Word of warning, the little kbd+/kbd will expand everything, and if it’s a big tree it’ll just crash your browser./p /div /div /div /div /div div class=paragraph paragraph--type--image paragraph--view-mode--default div class=container div class=row div class=col-sm-12 col-md-10 col-md-offset-1 div class=field field--name-field-image field--type-image field--label-hidden field--item img src= width=1186 height=675 alt=Example of kint output class=img-responsive //div /div /div /div /div div class=paragraph paragraph--type--text paragraph--view-mode--default cta-style--default div class=container div class=row div class=col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 div class=field field--name-field-text field--type-text-long field--label-hidden field--itempspan id=docs-internal-guid-c453dee3-bfa0-dcb6-c649-6c2dc405fb1fFrontend developer experience in Drupal 8 is a huge improvement over what was in Drupal 7, and thanks to the new release cycle, it’s continuing to improve even after Drupal 8 has launched. Really looking forward to seeing what new features we’ll get in the future, and I’ll be keeping an eye on the /spana href=‘core ideas’ issue queue/a./p /div /div /div /div /div

Unimity Solutions Drupal Blog: Global Opportunities with Drupal - Enterprise Adoption

Fri, 12/02/2016 - 13:26
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpThis is again an excerpt from my talk at #DCD2016. The second part of my talk was on Drupal Enterprise Adoption./p/div/div/div

OSTraining: How to Contribute Your Code on, Part 2

Fri, 12/02/2016 - 11:10
div class=ost-intro-imageimg src= alt=Beginners Guide to Contributing to Drupal : Prerequisites width=200 height=134 //div pWelcome to the second part of our series about how to contribute to Drupal./p pa href= we covered signing up to Drupal and setting up our account, this time we will guide you in the creation of a new sandbox project. Let's start.../p Blog: AGILEDROP: Drupal Blogs in November

Fri, 12/02/2016 - 08:58
a href= src= We have a news for you. Pretty exciting one. From now on, at the beginning of every month, we will look at the Drupal blogs we have written over the past month, making sure that nothing slips away from you and that you will be as informed as possible. Maybe you would have liked some of the topics, but you were just not on your computer that day, you had a day off, you were too busy at work etc. Well, from now on, even if you have missed something, you will be able to catch it later. Drupal Camps in Africa were our first blog topic this month. We got the inspiration for starting the world… a href= MORE/a

Drupal Modules: The One Percent: Drupal Modules: The One Percent — Tota11y (video tutorial)

Fri, 12/02/2016 - 03:25
span class=field field--name-title field--type-string field--label-hiddenDrupal Modules: The One Percent — Tota11y (video tutorial)/span div class=field field--name-field-screenshot field--type-image field--label-hidden field__item img src= width=480 height=259 alt=Project page screenshot typeof=foaf:Image class=image-style-large //div span class=field field--name-uid field--type-entity-reference field--label-hiddenspan lang= about= typeof=schema:Person property=schema:name datatype= xml:lang=NonProfit/span/span span class=field field--name-created field--type-created field--label-hiddenThu, 12/01/2016 - 20:25/span div class=field field--name-field-episode field--type-integer field--label-inline div class=field__labelEpisode/div div class=field__item8/div /div div class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itempHere is where we look at Drupal modules running on less than 1% of reporting sites. Today we investigate Tota11y which helps you visualize how your site performs when using assistive technologies. More info on Blue Beanie Day can be found at

php[architect]: December 2016 – Scrutinizing Your Tests

Thu, 12/01/2016 - 19:58
pimg class=alignright size-thumbnail wp-image-11139 src= alt=dec16 width=150 height=150 srcset= 150w, 300w, 160w, 50w, 120w, 500w sizes=(max-width: 150px) 100vw, 150px /The twelfth issue of 2016 is now available! This month we look at how to write good tests with Behat and using Test Driven Development. This issue also includes articles on using HTTPlug to decouple your HTTP Client, Decoupled Blocks with Drupal and JavaScript. Our columnists have articles on writing a Chat bot, advice on securing your application#8217;s secrets, making better bug reports, respecting diversity, and a look back at 2016./p pa href=/magazine/2016-2/decemberDownload your issue and read a FREE article today./a/p div class=clear/div

CiviCRM Blog: The quest for performance improvements - 2nd sprint

Thu, 12/01/2016 - 16:56
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encoded pThree weeks ago I wrote about our a href= for performance at the Socialist party. /aThis week we had a follow up sprint and I want to thank you for all the comments on that blog./p pDuring this sprint we have been looking into the direction of the amount of groups (+/- 2.700) and whether the amount of groups slowed down the system. We developed a script for deleting a set of groups from all database tables and we deleted around 2.400 groups from the system and we saw that this had an positive impact on the performance./p pBefore deleting the groups adding a new group took around 14 seconds. After removing 2.400 groups, adding a new group took around 3 seconds. So that gave us a direction in which we could look for a solution./p pWe also looked what would happened when we delete all contacts who have not a membership from the database and that also had a positive impact but not as huge as the reducing the amount of groups. The reason we looked into this is that around 200.000 contacts in the system are not members but sympathizers for a specific campaign./p pWe also had one experienced database guy (who mainly knows Postgres) looking into database tuning; at the moment we don't know what the outcome is of his inspection./p pFrom what we have discover by reducing the groups we have two paths to follow:/p olli Actually reducing the amount of groups in the system/li li Developing an extension which does functional the same thing as groups but with a better structure underneath and developed with preformance in mind. (no civicrm_group_contact_cache; no need for nesting with multiple parents; no need for smart groups)./li /olpBoth paths are going to be discussed at the socialist party and in two weeks we have another sprint in which we hope to continue the performance improvements./p p /p p /p /div/div/divdiv class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/blog/tags/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a/div/div/div

SystemSeed: Can services adopt the future of devops?

Thu, 12/01/2016 - 10:36
pStartups and products can move faster than agencies that serve clients as there is no feedback loops and manual QA steps by an external authority that can halt a build going live./ppOne of the roundtable discussions that popped up this week while we’re all in Minsk is that agencies which practice Agile transparently as SystemSeed do see a common trade-off. CI/CD (Continuous Integration / Continuous Deployment) isn’t quite possible as long as you have manual QA and that lead time baked-in./ppNon-Agile (or “Waterfall”) agencies can potentially supply work faster but without any insight by the client, inevitably then needing change requests which I’ve always visualised as the false economy of Waterfall as demonstrated here: /pfigure data-orig-width=650 data-orig-height=408 class=tmblr-fullimg src= data-orig-width=650 data-orig-height=408//figurepWould the client prefer Waterfall+change requests and being kept in the dark throughout the development but all work is potentially delivered faster (and never in the final state), or would they prefer full transparency, having to check all story details, QA and sign off as well as multi-stakeholder oversighthellip; in short - it can get complicated./ppCI and CD isn’t truly possible when a manual review step is mandatory. Today we maintain a thorough manual QA by ourselves and our clients before deploy using a “standard” (ifeature branch -gt; dev -gt; stage -gt; production)/i devops process, where manual QA and automated test suites occur both at the feature branch level and just before deployment (Stage). a href= provides this hosting infrastructure and makes this simple as visualised below:/pfigure data-orig-width=800 data-orig-height=400 class=tmblr-fullimg src= alt=image data-orig-width=800 data-orig-height=400//figurepThis week we brainstormed a href= amp; Green/a live environments which may allow for full Continuous Integration whereby deploys are automated whenever scripted tests pass, specifically without manual client sign off. What this does is add a fully live clone of the Production environment to the chain whereby new changes are always deployed out to the clone of live and at any time the system can be switched from pointing at the “Green” production environment, to the “Blue” clone or back data-orig-width=652 data-orig-height=184 class=tmblr-fullimg src= data-orig-width=652 data-orig-height=184//figurepAssuming typical rollbacks are simple and databases are either in sync or both Green and Blue codebases link to a single DB, then this theory is well supported and could well be the future of devops. Especially when deploys are best made “immediately” and not the next morning or in times of low traffic./ppIn this case clients would be approving work already deployed to a production-ready environment which will be switched to as soon as their manual QA step is completed./ppOne argument made was that our Pantheon standard model allows for this in Stage already, we just need an automated process to push from Stage to Live once QA is passed. We’ll write more on this if our own processes move in this direction./p