Planet Drupal

Syndicate content
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 32 min 30 sec ago

Aten Design Group: Making region content available to node templates in Drupal 8

Thu, 06/23/2016 - 19:06
img src=http://atendesigngroup.com/sites/default/files/super-powered-templates.png width=1000 height=600 alt= /pWhy would you need to render the content from Drupal’s block layout via a node template file? Normally, that is the territory of page templates. The use-case for me was a page where node-specific fields were mixed in with blocks to the extent that rendering region content in a page template file wasn't going to work./p pI needed to be able to render my region content amidst field values in my node template files. Drupal doesn't let you do that out-of-the-box./p h2Superpower your Nodes/h2 pA region defined as ‘Primary Content’ (span class=geshifiltercode class=text geshifilter-textprimary_content/code/span) in our theme can be printed in a empage template/em like so:/p pspan class=geshifiltercode class=text geshifilter-text{{ page.primary_content }}/code/span/p pTry that in a emnode template/em and you get a big fat nothing. Using a href=https://api.drupal.org/api/drupal/core!modules!node!node.module/function/template_preprocess_node/8.2.x title=template_preprocess_node API at Drupal.orgspan class=geshifiltercode class=text geshifilter-textTHEME_preprocess_node/code/span/a we can change this, and superpower our node templates to be as capable as page templates./p pReplace “span class=geshifiltercode class=text geshifilter-textTHEME/code/span” with your theme name below:/p div class=geshifilterpre class=geshifilter-phpspan style=color: #808080; font-style: italic;/** * Implements hook_preprocess_node() for NODE document templates. *//span span style=color: #000000; font-weight: bold;function/span THEME_preprocess_nodespan style=color: #66cc66;#40;/spanamp;span style=color: #0000ff;$variables/spanspan style=color: #66cc66;#41;/span span style=color: #66cc66;#123;/span span style=color: #808080; font-style: italic;// Allowed view modes/span span style=color: #0000ff;$view_mode/span = span style=color: #0000ff;$variables/spanspan style=color: #66cc66;#91;/spanspan style=color: #ff0000;'view_mode'/spanspan style=color: #66cc66;#93;/span; span style=color: #808080; font-style: italic;// Retrieve view mode/span span style=color: #0000ff;$allowed_view_modes/span = span style=color: #66cc66;#91;/spanspan style=color: #ff0000;'full'/spanspan style=color: #66cc66;#93;/span; span style=color: #808080; font-style: italic;// Array of allowed view modes (for performance so as to not execute on unneeded nodes)/span nbsp; span style=color: #808080; font-style: italic;// If view mode is in allowed view modes list, pass to THEME_add_regions_to_node()/span span style=color: #b1b100;if/spanspan style=color: #66cc66;#40;/spana href=http://www.php.net/in_arrayspan style=color: #000066;in_array/span/aspan style=color: #66cc66;#40;/spanspan style=color: #0000ff;$view_mode/span, span style=color: #0000ff;$allowed_view_modes/spanspan style=color: #66cc66;#41;/spanspan style=color: #66cc66;#41;/span span style=color: #66cc66;#123;/span span style=color: #808080; font-style: italic;// Allowed regions (for performance so as to not execute for unneeded region)/span span style=color: #0000ff;$allowed_regions/span = span style=color: #66cc66;#91;/spanspan style=color: #ff0000;'primary_content'/spanspan style=color: #66cc66;#93;/span; THEME_add_regions_to_nodespan style=color: #66cc66;#40;/spanspan style=color: #0000ff;$allowed_regions/span, span style=color: #0000ff;$variables/spanspan style=color: #66cc66;#41;/span; span style=color: #66cc66;#125;/span span style=color: #66cc66;#125;/span nbsp; span style=color: #808080; font-style: italic;/** * THEME_add_regions_to_node *//span nbsp; span style=color: #000000; font-weight: bold;function/span THEME_add_regions_to_nodespan style=color: #66cc66;#40;/spanspan style=color: #0000ff;$allowed_regions/span, amp;span style=color: #0000ff;$variables/spanspan style=color: #66cc66;#41;/span span style=color: #66cc66;#123;/span span style=color: #808080; font-style: italic;// Retrieve active theme/span span style=color: #0000ff;$theme/span = \Drupal::span style=color: #006600;theme/spanspan style=color: #66cc66;#40;/spanspan style=color: #66cc66;#41;/span-gt;span style=color: #006600;getActiveTheme/spanspan style=color: #66cc66;#40;/spanspan style=color: #66cc66;#41;/span-gt;span style=color: #006600;getName/spanspan style=color: #66cc66;#40;/spanspan style=color: #66cc66;#41;/span; nbsp; span style=color: #808080; font-style: italic;// Retrieve theme regions/span span style=color: #0000ff;$available_regions/span = system_region_listspan style=color: #66cc66;#40;/spanspan style=color: #0000ff;$theme/span, span style=color: #ff0000;'REGIONS_ALL'/spanspan style=color: #66cc66;#41;/span; nbsp; span style=color: #808080; font-style: italic;// Validate allowed regions with available regions/span span style=color: #0000ff;$regions/span = a href=http://www.php.net/array_intersectspan style=color: #000066;array_intersect/span/aspan style=color: #66cc66;#40;/spana href=http://www.php.net/array_keysspan style=color: #000066;array_keys/span/aspan style=color: #66cc66;#40;/spanspan style=color: #0000ff;$available_regions/spanspan style=color: #66cc66;#41;/span, span style=color: #0000ff;$allowed_regions/spanspan style=color: #66cc66;#41;/span; nbsp; span style=color: #808080; font-style: italic;// For each region/span span style=color: #b1b100;foreach/span span style=color: #66cc66;#40;/spanspan style=color: #0000ff;$regions/span span style=color: #b1b100;as/span span style=color: #0000ff;$key/span =gt; span style=color: #0000ff;$region/spanspan style=color: #66cc66;#41;/span span style=color: #66cc66;#123;/span nbsp; span style=color: #808080; font-style: italic;// Load region blocks/span span style=color: #0000ff;$blocks/span = entity_load_multiple_by_propertiesspan style=color: #66cc66;#40;/spanspan style=color: #ff0000;'block'/span, a href=http://www.php.net/arrayspan style=color: #000066;array/span/aspan style=color: #66cc66;#40;/spanspan style=color: #ff0000;'theme'/span =gt; span style=color: #0000ff;$theme/span, span style=color: #ff0000;'region'/span =gt; span style=color: #0000ff;$region/spanspan style=color: #66cc66;#41;/spanspan style=color: #66cc66;#41;/span; nbsp; span style=color: #808080; font-style: italic;// Sort ‘em/span a href=http://www.php.net/uasortspan style=color: #000066;uasort/span/aspan style=color: #66cc66;#40;/spanspan style=color: #0000ff;$blocks/span, span style=color: #ff0000;'Drupalspan style=color: #000099; font-weight: bold;\b/spanlockspan style=color: #000099; font-weight: bold;\E/spanntityspan style=color: #000099; font-weight: bold;\B/spanlock::sort'/spanspan style=color: #66cc66;#41;/span; nbsp; span style=color: #808080; font-style: italic;// Capture viewable blocks and their settings to $build/span span style=color: #0000ff;$build/span = a href=http://www.php.net/arrayspan style=color: #000066;array/span/aspan style=color: #66cc66;#40;/spanspan style=color: #66cc66;#41;/span; span style=color: #b1b100;foreach/span span style=color: #66cc66;#40;/spanspan style=color: #0000ff;$blocks/span span style=color: #b1b100;as/span span style=color: #0000ff;$key/span =gt; span style=color: #0000ff;$block/spanspan style=color: #66cc66;#41;/span span style=color: #66cc66;#123;/span span style=color: #b1b100;if/span span style=color: #66cc66;#40;/spanspan style=color: #0000ff;$block/span-gt;span style=color: #006600;access/spanspan style=color: #66cc66;#40;/spanspan style=color: #ff0000;'view'/spanspan style=color: #66cc66;#41;/spanspan style=color: #66cc66;#41;/span span style=color: #66cc66;#123;/span span style=color: #0000ff;$build/spanspan style=color: #66cc66;#91;/spanspan style=color: #0000ff;$key/spanspan style=color: #66cc66;#93;/span = entity_viewspan style=color: #66cc66;#40;/spanspan style=color: #0000ff;$block/span, span style=color: #ff0000;'block'/spanspan style=color: #66cc66;#41;/span; span style=color: #66cc66;#125;/span span style=color: #66cc66;#125;/span nbsp; span style=color: #808080; font-style: italic;// Add build to region/span span style=color: #0000ff;$variables/spanspan style=color: #66cc66;#91;/spanspan style=color: #0000ff;$region/spanspan style=color: #66cc66;#93;/span = span style=color: #0000ff;$build/span; span style=color: #66cc66;#125;/span span style=color: #66cc66;#125;/span/pre/div pAfter clearing caches, I can now print content specified in Drupal’s block layout using my node template files. For example, if I’ve specified span class=geshifiltercode class=text geshifilter-textprimary_content/code/span in span class=geshifiltercode class=text geshifilter-text$allowed_regions/code/span, then I can access it via span class=geshifiltercode class=text geshifilter-textnode--node_type.html.twig/code/span with:/p pspan class=geshifiltercode class=text geshifilter-text{{ primary_content }}/code/span/p

Drupal core announcements: Fabianx and stefan.r are now Drupal 7 co-maintainers

Thu, 06/23/2016 - 17:13
pEarlier this year, I announced that I was a href=https://groups.drupal.org/node/508638seeking additional Drupal 7 co-maintainers/a in order to help bolster the efforts of the indefatigable a href=http://buytaert.net/david-rothsteinDavid Rothstein/a. Thank you very much to everyone who responded to the call; there were certainly some very eager and qualified applications!/p pI have selected a href=https://www.drupal.org/u/fabianxFabian Franz (Fabianx)/a and a href=https://www.drupal.org/u/stefanr-0Stefan Ruijsenaars (stefan.r)/a, which are also two of the names put forward by David himself. I recently asked them to apply to become Drupal 7 co-maintainers, and I am pleased to announce they both gave an enthusiastic yes!/p pFabian will be a Drupal 7 Framework Manager, and Stefan will be a Drupal 7 Release Manager and Drupal 7 Product Manager. David will continue his role as a Framework Manager, Release Manager and Product Manager for Drupal 7./p pFabian is from Germany, and is a Senior Performance Engineer and Technical Lead at Tag1 Consulting. He is always up to a challenge, and has been a part of the Drupal community for over 6 years. He was already a subsystem maintainer for the Drupal core theme system, and he has done innovative work in terms of Scalability and High Performance for Drupal (BigPipe!). He is in general passionate about everything Open Source since GNU was born, which as it happens, is the same day as his birthday./p pStefan hails from the Netherlands, and is a freelancer currently working with Belgian government clients. He has been part of the Drupal community since his first Drupalcon in Szeged in 2008, and recently became a member of the a href=https://security.drupal.org/team-membersDrupal Security Team/a./p pBoth Fabian and Stefan have ample experience contributing both to numerous contributed modules, and to Drupal core, being especially instrumental to squashing the last critical bugs prior to the Drupal 8 release./p pPlease join me in welcoming Fabian and Stefan to the Drupal 7 core committer team! (And if you happen to be at a href=http://milan2016.drupaldays.orgDrupal Developer Days Milan/a, you can high-five Stefan in person! :-))/p

Deeson: 24 things about Drupal 8 every CTO should know

Thu, 06/23/2016 - 15:16
pemLast updated 2nd December 2015/em/p pJohn Ennew, Drupal 8 contributor and Deeson technical lead has collected together the questions we’ve been receiving from clients about Drupal 8 into one handy list./p pJohn is a speaker at DrupalCon and maintains Drupal modules used on thousands of websites throughout the world. He holds a Masters in Computer Systems Engineering and is an IET Chartered Engineer, in addition to winning ‘Techie of the Year’ 2015./p pDo you have a question that we haven’t answered? Drop us an email at a href=mailto:hello@deeson.co.ukhello@deeson.co.uk/a or ask in the comments./p img src=https://d5av3fo92eabs.cloudfront.net/sites/default/files/styles/image_400_width/public/secondary_images/images/drupal-8-logo-inline-cmyk-72.png?itok=2NEELodc width=400 height=100 alt=Drupal 8 logo / pContents/p h4a href=#heading1Planning for Drupal 8/a/h4 p a href=#11. Why did Drupal 8 take so long?/a  a href=#22. When should I start building on Drupal 8?/a  a href=#33. How long until common contributed modules are going to be available?/a  a href=#44. How much do Drupal 7 developers have to learn?/a  a href=#55. Will Drupal 8 make Drupal builds cheaper?/a  a href=#66. Will Drupal 8 sites be quicker to build?/a/p h4a href=#heading 2Implications for Drupal 7/a/h4 p a href=#77. Is there an upgrade path from previous Drupal versions?/a  a href=#88. How long will Drupal 7 support last now Drupal 8 is out?/a/p h4a href=#heading 3New functionality in Drupal 8/a/h4 p a href=#99. Does Drupal Commerce feature in the Drupal 8 release?/a  a href=#1010. Are multi-lingual sites handled differently in Drupal 8?/a  a href=#1111. How is the content editor experience different in Drupal 8?/a  a href=#1212. Does Drupal 8 handle complex user and content permissions any differently?/a/p h4a href=#heading 4The front-end and Drupal 8/a/h4 p a href=#1313. Does Drupal 8 change the approach to theming and front-end standards?/a  a href=#1414. How is accessibility handled in Drupal 8?/a/p h4a href=#heading 5Drupal 8 in the enterprise/a/h4 p a href=#1515. Does Drupal 8 make enterprise development practices such as automated testing easier?/a  a href=#1616. Is it easier to manage a large portfolio of sites with Drupal 8?/a  a href=#1717. Has configuration management improved in Drupal 8?/a/p h4a href=#heading 6Architecture changes/a/h4 p a href=#1818. What does Drupal 8 mean for ‘headless Drupal’?/a  a href=#1919. Does Drupal 8 change how Drupal integrates with other systems?/a  a href=#2020. Is the database abstraction layer any different?/a  a href=#2121. I’ve heard Symfony is used heavily in Drupal 8 core, what are the implications?/a/p h4a href=#heading 7Performance and security/a/h4 p a href=#2222. Are there performance improvements in Drupal 8?/a  a href=#2323. Has High Availability (HA) improved in Drupal 8?/a  a href=#2424. Does Drupal 8 have any major differences in its approach to security?/a/p p /p h3a id=heading1 name=heading1Planning for Drupal 8/a/h3 h4a id=1 name=11. Why did Drupal 8 take so long?/a/h4 pDrupal has been around for 15 years and Drupal 8 has been in development for 5 years. This sounds like a long time to produce a release./p pUnder the hood, Drupal 8 has lots of big changes from Drupal 7. Many new programming concepts and paradigms have been adopted which will make Drupal more standards-compliant. This has meant removing old, more Drupal specific ways of doing things and embracing more widely known standards and technologies./p pThe discussion plan in Drupal community is that in future there will be gradual, phased releases allowing feature development to proceed in separate branches, rather than waiting for other functionality to produce a single large release like Drupal 8./p h4a id=2 name=22. When should I start building on Drupal 8?/a/h4 pDrupal 8 should be strongconsidered/strong for all projects from now onwards. The decision on whether it’s the right time for a specific project will depend on the appetite for risk, the nature of the functionality and complexity of the project./p pThere are many contributed modules that don’t have a stable release yet. This means a project may end up building a Drupal 8 version of a particular tool which would be available ‘for free’ in Drupal 7./p pHowever, this is likely to be outweighed by the long term advantages of choosing Drupal 8. We’d recommend that a project scheduled to launch in 6 to 12 months time should select Drupal 8 over Drupal 7./p pThe fundamental overhaul of the multilingual system in Drupal 8 means that multilingual sites should always choose Drupal 8./p pA project with a close, hard release date may not want to take on the risk of an unexpected bug in Drupal 8 impacting development or causing post-launch issues. These issues are always more likely in a new product before it’s had widespread production use./p h4a id=3 name=33. How long until common contributed modules are going to be available?/a/h4 pDeeson maintains a list of 52 modules which are used in a large number of our projects. 11 are now included in Drupal 8 Core so will be fully supported, 9 have community contributed releases in an alpha or beta stage of development and the rest, 32 modules, have no testable release as yet./p pFor simple brochure sites with limited functionality, Drupal 8 is ready now as some of the most important content management tools are now included in the core platform./p pHowever, there are some significant omissions, e.g. a href=https://www.drupal.org/project/pathautoPathauto/a and a href=https://www.drupal.org/project/tokenTokens/a which are used to automatically generate tags in emails or automatic URL aliases based on the title of content./p pOur experience of Drupal 7 was that contributed modules started being usable one year after the initial Drupal 7 release. We expect the turnaround to be quicker this time because Drupal 8 core incorporates many of these modules and that key contributed modules will be stable by May 2016./p h4a id=4 name=44. How much do Drupal 7 developers have to learn?/a/h4 pSome major changes to Drupal 8 are the introduction of the a href=https://www.drupal.org/theme-guide/8/twigTwig/a templating system for the theme layer, the introduction of components of the Symfony framework into core, the plugin system and a general principle to move to an object-orientated style of programming from the previous, procedural style. Drupal 7 developers, therefore, have quite a bit of learning to do./p pIt is expected that over the next year interest in Drupal 8 will grow and more developers will begin learning the skills needed to work on a Drupal 8 project. The Drupal community has done an excellent job of a href=https://www.drupal.org/8providing support material/a on the Drupal.org website with better documentation than previous versions of Drupal had./p pDevelopment teams will need to start ramping up their training now to support the projects they will be taking on in the next 6 months or risk being left unprepared./p h4a id=5 name=55. Will Drupal 8 make Drupal builds cheaper?/a/h4 pAs with previous versions, Drupal 8 will have no license fee so is free to reuse./p pThe cost of projects built using Drupal 8 is unlikely to be significantly different compared with projects built with previous versions of Drupal./p pHowever, we believe that there will be long term reductions in the total cost of ownership because of the improvements made under the hood in Drupal 8. Development best practices have been introduced including a new plugin system making it easier to extend and enhance Drupal 8 compared with previous versions./p h4a id=6 name=66. Will Drupal 8 sites be quicker to build?/a/h4 pThere has been significant improvements in what is known as DX, or developer experience. These should improve the abilities of the development team to develop sites and diagnose issues./p pExamples include moving to Object-Oriented OO coding principles which organises code more logically and in a manner the developer tools understand. This means that code can autocomplete in their editing tools. Another example is the Twig templating layer which better organises the theme system in Drupal, meaning that it is harder for developers to create untidy code./p pOf course, many development teams have been applying these practices on top of Drupal 7 already so are already getting the benefits of these tools and practices which are now in Drupal 8 core./p h3a id=heading 2 name=heading 2Implications for Drupal 7/a/h3 h4a id=7 name=77. Is there an upgrade path from previous Drupal versions?/a/h4 pThe a href=https://www.drupal.org/upgrade/migrateMigrate/a module is included in Drupal 8. Migrate provides a series of tools a developer can use to map content in a Drupal 6 or 7 website to its location within a Drupal 8 website.  Although not a simple process, it does mean the migration path from previous versions of Drupal is available./p h4a id=8 name=88. How long will Drupal 7 support last now Drupal 8 is out?/a/h4 pThe Drupal community is committed to a href=https://www.drupal.org/d6-lts-supportsupporting/a the previous version of Drupal. This means Drupal 7 will be supported until Drupal 9 is released. There is currently no official release date for Drupal 9 and so no end of life date for Drupal 7./p pI expect support for Drupal 7 for many years, particularly considering the huge install base of Drupal 7 sites./p h3a id=heading 3 name=heading 3New functionality in Drupal 8/a/h3 h4a id=9 name=99. Does Drupal Commerce feature in the Drupal 8 release?/a/h4 pDrupal Commerce is not maintained by the Drupal core team but maintained by a company - Commerce Guys. They have a Drupal 8 version of the module in active development./p pThe new Drupal 8 version is described as offering significant improvements over the old versions of Drupal Commerce, including better add to cart facilities, faster product creation and more intuitive product administration./p h4a id=10 name=1010. Are multilingual sites handled differently in Drupal 8?/a/h4 pPrevious versions of Drupal had only partial support for multilingual websites. Multilingual projects usually involved stitching together a number of contributed modules to provide support for various elements of Drupal to be translated and each worked in a slightly different way. This inconsistency caused many projects budget and deadline pressures./p pThere has been a significant overhaul of multilingual capabilities in Drupal 8. Translations of all core elements are done in a sane and consistent manner in Drupal 8 core./p pThe installation system natively supports 94 languages. There are simple processes for installing new languages and language updates. The administration interface is entirely translatable. Assets, such as files or images, can now be assigned to a language or shared between languages./p h4a id=11 name=1111. How is the content editor experience different in Drupal 8?/a/h4 pDrupal 8 ships with the popular a href=https://www.drupal.org/node/1890502CKEditor/a WYSIWYG web editor. This means this tool is supported as standard and so will be maintained to continue to integrate well with it./p pThe new a href=https://www.drupal.org/node/1993254NavBar/a module in Drupal 8 core offers a clean administration tool for accessing all sections of the administration interface./p pDrupal 8’s a href=https://www.drupal.org/project/quickeditquick edit/a feature allows content editors the ability to do simple editing and changes in the page instead of loading a form specially for editing content./p pOn the horizon there are improvements to media handling in Drupal 8 as well which will give Drupal 8 a superior interface for managing assets such as files and images but this did not make it into core./p h4a id=12 name=1212. Does Drupal 8 handle complex user and content permissions any differently?/a/h4 pUnder the hood the content access permission system has been rewritten in Drupal 8 but the behaviour for content administrators is much the same as before.  /p pIt is expected that contributed modules will be providing the fine grained additional permission control they did in previous versions of Drupal. The popular choice in previous versions of Drupal for this was Organic Groups, which hadn’t been refactored to match more recent core versions. To provide stable functionality in Drupal 7 we have been using the a href=https://www.drupal.org/project/groupGroup/a module instead, we are planning to create a Drupal 8 release too./p h3a id=heading 4 name=heading 4The front-end and Drupal 8/a/h3 h4a id=13 name=1313. Does Drupal 8 change theming and front-end standards approach?/a/h4 pIn Drupal 7 PHP based templates made it too easy for developers to place logic in their templates which should have been managed in modules. Over time, templating code which was not strongly controlled would become fragile and it would be hard to find bugs and add new functionality./p pTheming has changed significantly with the introduction of the a href=https://www.drupal.org/theme-guide/8/twigTwig/a templating system in Drupal 8. Developers will now be able to write almost all markup in Twig templates rather than PHP code in functions. Though there will be an initial investment in learning required by development teams, the long term results will be cleaner templates which are more maintainable./p h4a id=14 name=1414. How is accessibility handled in Drupal 8?/a/h4 pThere have been some improvements made to accessibility in Drupal 8./p pWAI-ARIA landmarks, live regions, roles amp; properties are included which improves the accessibility of dynamic areas of the page. Drupal’s Form API now puts errors in-line rather than having the errors displayed in different regions to the form element which had the input error./p pThere is a JavaScript alert for audible announcements allowing site builders to include timely messages specifically for aural users. A new Tabbing Manager ensures a logical ordering to accessing page elements for users not using a mouse./p pA general approach in Drupal 8 is to use standardised libraries to deliver functionality rather than trying to develop well known and well developed functionality from scratch. By working with library developers, best-of-breed technologies can be developed in partnership with a larger community./p pOne of the effects of this is that accessibility for a particular function can be developed by teams of people who really understand that field. A good example here is using the jQuery UI library to provide autocomplete functionality in Drupal 8. The Drupal community can now help the jQuery UI community in producing a better, more accessible tool./p h3a id=heading 5 name=heading 5Drupal 8 in the enterprise/a/h3 h4a id=15 name=1515. Does Drupal 8 make enterprise development practices such as automated testing easier?/a/h4 pSeveral improvements in Drupal 8 make it a more effective platform for practising continuous development. The configuration management system means configuration now lives in code in a standard way meaning code can be safely transferred between environments and its behaviour is now predictable./p pDrupal 8 code makes more use of objects and PHPUnit is supported by the testing infrastructure within the core codebase, meaning all code can now be written with unit tests./p pDrush, the Drupal CLI tool, has been updated to work with Drupal 8 already, and can be used to automate most deployment activities from testing the quality of the custom code using the coder module, to testing the functionality using PHPUnit./p pAutomated testing has also been improved with Drupal 8. The core product now includes PHPUnit which is a test runner which allows both Unit and Functional tests.  These are better tests which run much quickly than previous versions./p pPHPUnit is a well recognised tool in the wider PHP developer community, hopefully meaning that finding people to write tests and finding resources to help developers get to grips with testing will be easier with Drupal 8./p pDrupal 8 is also supported by the popular a href=http://docs.behat.org/en/v2.5/Behat/a testing framework for Symfony allowing well formed behaviour driven development practices (BDD)./p h4a id=16 name=1616. Is it easier to manage a large portfolio of sites with Drupal 8?/a/h4 pDrupal 8 is a good choice for organisations maintaing large portfolios of sites. Drupal is the most flexible and extensible CMS and so can be used to develop both small, simple websites but also larger, more complex ones. By choosing to consolidate on Drupal you can reduce the development effort required in maintaining a large estate./p pDrupal 8’s RESTful APIs allows you to develop the sorts of enterprise tools needed to manage an estate of sites. Features like Drupal’s multi-site and the Group module mean that you can also take a single Drupal codebase and use it to deliver multiple websites. There will always be complexities with such approaches but Drupal is flexible enough to alter it to your specific requirements./p h4a id=17 name=1717. Has configuration management improved in Drupal 8?/a/h4 pConfiguration management is the ability to define the configuration of a software application like a Drupal website in a testable, versionable way. In Drupal 7 it was often the case that configuration had to be done in each environment after a release rather than defining the behaviour of the website in each environment within the code of the website./p pDrupal 7 had some addons that made this possible such as the Features module, but these were never done in an entirely satisfactory manner and each module had to define its exportable behaviour to Features.  /p pIn addition, the variable table in Drupal 7 became a dumping ground of both configuration and state for each environment which meant that determining what needed to be exported into configuration in code and what could be safely ignored on a per-environment basis was complicated, time consuming and could lead to errors during deployment./p pThe a href=https://www.drupal.org/documentation/administer/configConfiguration Management Initiative/a in Drupal 8 has brought a standardised way for modules to define their editable configuration. Site builders can then export the configuration for an environment into configuration files which can be put into the website’s version control system and changed on a per-environment basis. This allows configuration to be audited, rolled back and be testable./p h3a id=heading 6 name=heading 6Architecture changes/a/h3 h4a id=18 name=1818. What does Drupal 8 mean for ‘headless Drupal’?/a/h4 pHeadless Drupal or Decoupled Drupal are terms used to describe the system’s architectural practice of separating the back-end and theming components of Drupal. In such an architecture, Drupal is used as a Content Management System for data entry and retrieval, but the rendering of web pages of content to end users (the theming layer) is passed over to another tool./p pThis allows development teams to build rich internet applications, mobile applications or apps for devices such as smart TVs, watches or the next Google Glass. Each of these devices have their own theming mechanisms and all of them just want pure data from the Content Management System./p pDrupal 8 is capable of outputting data not just as HTML but in many forms such as JSON or XML. How it delivers data depends on the device or application which is requesting the data./p pChoosing Drupal 8 as the Content Management system is a good investment for the future. Initially it may just be a website delivering to traditional web browsers, but later other apps or dynamic internet applications may be built which use the same Drupal back-end for retrieving their data./p h4a id=19 name=1919. Does Drupal 8 change how Drupal integrates with other systems?/a/h4 pDrupal 8’s inclusion of standard PHP libraries means that for any particular application it is likely that a good external library already exists. There is less of a reliance on a single developer working inside of the Drupal ecosystem to meet your integration needs./p pDrupal 8 also provides mechanisms for exporting its data via a a href=https://api.drupal.org/api/drupal/core!core.api.php/group/third_party/8RESTful API/a allowing it to easily integrate with other systems./p pIn addition, the new a href=https://www.drupal.org/developing/api/8/pluginsplugin/a system within Drupal means that extensions to Drupal can easily be developed. This technology maintains Drupal’s position as the most extensible and flexible CMS framework available./p h4a id=20 name=2020. Is the database abstraction layer any different?/a/h4 pThe process of standardising on the Drupal Entity model began in Drupal 7 and has been extended in Drupal 8. Developers working on developing websites with Drupal 8 will work at the Entity level rather than the database level. This allows Drupal 8 websites to work agnostically with a larger number of database technologies, not just the traditional relational ones such as MySQL. For example, it is possible to use NoSQL solutions such as MongoDB as the database storage layer with a Drupal 8 website./p pIn Drupal 8, the database API is pretty much the same as Drupal 7, but developers should almost never be making database calls directly unless they are developing core APIs./p h4a id=21 name=2121. I’ve heard Symfony is used heavily in Drupal 8 core, what are the implications?/a/h4 pIn previous versions of Drupal all the code within Drupal was built by members of the Drupal community. In Drupal 8, the developers have embraced other projects like Symfony, and are building libraries which can be reused in other projects. Rather than re-inventing the wheel, Drupal 8 includes components developed by a larger community to solve a problem./p pThis means that Drupal benefits from a more stable codebase used in more projects. In return, projects like Symfony also get the benefit of more people making use of their code and so becomes more robust in the process./p pDevelopers familiar with Symfony and not Drupal will now be able to move into Drupal development. This opens up the pool of talent development teams can draw on./p pSymfony is written using industry standards and best practices, such as PSR-4 name spacing of classes, these have been incorporated in Drupal 8./p h3a id=heading 7 name=heading 7Performance and security/a/h3 h4a id=22 name=2222. Are there performance improvements in Drupal 8?/a/h4 pThe caching system was completely re-written in Drupal 8. In Drupal 7, often when a cache needed to be cleared the only option was to clear all caches meaning that a small change could cause a greater strain on the website as all the caches had to refill.  /p pCaching usually occurred at the page level as well in Drupal 7, which meant that either the whole page was returned from cache or the whole page needed to be regenerated. For logged in users, generally no caching happened and the whole page was generated for every page request./p pIn Drupal 8 the caches are much more complex and caching can be defined and cleared with greater precision. The new Cache Tags system allows, for example, pieces of a page to be cached so that logged in users might receive most of a page from cache and just the link to their account is generated./p pCache Tags also allows the developers to define specific cache-clear scenarios for their sites based on the known behaviour of the site - for example, it is possible to clear all caches which contain information about user 300 following an update to their account without clearing every other user’s cached data./p pIn addition, the cache system, like much of Drupal 8, is pluggable which means that better caching tools can be plugged in at all levels. For large, complex site, much more precise selections of tools can be used to improve performance./p pThe way the page build pipeline works has been overhauled in Drupal 8 meaning that a web page is built in a much more efficient manner to previous versions of Drupal. There is also a general ‘fast by default’ principal used by the Drupal 8 developers which makes sure that nothing needs to be enabled to provide performance boosts for Drupal 8./p h4a id=23 name=2323. Has High Availability (HA) improved in Drupal 8?/a/h4 pDrupal has been used in HA environments for many years now and is a well understood problem. Drupal 8 is similar to Drupal 7 in this respect. The improvements to the caching layer means that more complex strategies are now possible with Drupal 8 and additional thought may optionally be put into the configuration of caching tools./p h4a id=24 name=2424. Does Drupal 8 have any major differences in its approach to security?/a/h4 pThe Twig templating system is a major change from the old way of allowing PHP code within the template code. Twig is full of features for ensuring a secure theming layer, which has historically been a common source of security vulnerabilities./p pAnother common vulnerability was introduced by site builders manually configuring text filters for a variety of third party WYSIWYG editors. Such an editor is a must for a content management system but installing them wasn’t supported natively by Drupal core and was one of the more complex tasks of a site builder. In Drupal 8, the CKEditor editor is included as standard with sensibly configured defaults which will work for most cases and be secure./p pThe PHP module has been removed from core which allowed site builders to write PHP code in the browser. This led to bad practices and also allowed a way for a malicious user who gained higher privileges in the website due to poor configuration to execute code on the server./p pAll input variables from the URL are properly declared by the new routing system. This means bad or unexpected data types get filtered by default. The previous CSRF protection provided by Drupal 7’s core APIs are also still available in Drupal 8./p pA team of volunteers called the Drupal security team have managed looking for security issues in Drupal core and managing the security issue queue and advisory notices./p pWith so much third party code now required for Drupal 8 to work, managing security advisories to external libraries is more important. Modules making use of external libraries can alert to security problems with their dependencies via the hook_requirements event./p pIn Drupal core, external code actually forms part of the Drupal 8 codebase. When security problems are found in that code, the security team must then work with the third party developers to fix the problems and ensure security advisories affecting both code bases are released together./p pDrupal 8 doesn’t provide an automated way of applying updates out of the box. However it’s possible for companies using Drupal websites to do this via a continuous integration process using the drush command line tool, version control and automated tests./p

Arpit Jalan: GSOC 2016- Providing Web Tests for the Safe Search feature for the Google Vision module- Week 4

Thu, 06/23/2016 - 14:34
div dir=ltr style=text-align: left; trbidi=ondiv dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;TL;DR/spanspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; In my last post /spana href=http://arpitjalandrupal.blogspot.in/2016/06/third-week-of-google-summer-of-coding.html style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;Avoid Explicit Contents in the images using Google Vision module/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;, I had discussed about the services which “Safe Search” feature of the Vision API provides us, and how we have put this into use in the /spana href=https://www.drupal.org/project/google_vision style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;Google Vision/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; module as a constraint to all the image fields which would be validated when the option is enabled. This week I have worked on developing simple web tests for testing this feature whether it gives us the results as expected./span/divb id=docs-internal-guid-c9a8181b-7d3f-78dd-ab20-5d72478210ce style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;Last week I had worked on developing the code to use the Safe Search detection feature as a constraint to the image fields which would validate the images for the presence of explicit contents, provided that the user enables the configuration for the concerned image field./span/divb style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;Besides the code, testing the functionality using /spana href=https://www.drupal.org/node/265828 style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;simple web tests/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; are equally essential to ensure that the feature executes perfectly when necessary steps are implemented./span/divdiv dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;Hence, this week I have worked on developing simple web tests, which ensures that we have a fully functional feature./span/divb style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;I have tested both the conditions with safe search enabled and disabled to verify the results which should be obtained. When the safe search is enabled, any image containing any sort of nbsp;explicit content, is detected, and asked for moderation. If the image is not moderated, then the image is not saved. When the same image was passed through the second test, with safe search disabled, it was stored successfully, thus providing us the expected results./span/divb style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;To conduct the test successfully, I had to create a demo content type in my tests using /spana href=https://www.drupal.org/node/265762 style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;drupalCreateContentType()/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;, which would have an image field with the ‘Enable Safe Search’ option. This was something new to me to how to add an extra field to the default content type settings. The Drupal documentation on /spana href=https://api.drupal.org/api/drupal/core%21modules%21field%21src%21Entity%21FieldConfig.php/class/FieldConfig/8.1.x style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;FieldConfig/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; and /spana href=https://api.drupal.org/api/drupal/core%21modules%21field%21src%21Entity%21FieldStorageConfig.php/class/FieldStorageConfig/8.1.x style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;FieldStorageConfig/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; were of great help to understand the underlying concepts and functions which the field offers, and thus helping me to create custom fields programmatically. However, in order to perform the test, I had to call the API directly, which required a valid API key and an image which actually contains explicit content. Hence, my mentors asked me to override the functions of the class (mocking the services) in such a way that it removes the dependency from both the key and the image. Thus, I created a test module inside the Google Vision module, and override the function. /span/divb style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;Summarizing the above, I can say that in addition to learning how to test the constraints and validators, I also came to learn about some really cool techniques, including the creation of custom fields in tests and mocking the services./span/divbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;The lingotek_test of the /spana href=https://www.drupal.org/project/lingotek style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;Lingotek Translation/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; /spanspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;module is a good reference to learn about how to override the services in web tests./spanspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; Other references which are useful for mocking are /spana href=https://api.drupal.org/api/drupal/core!lib!Drupal!Core!DependencyInjection!ServiceProviderBase.php/class/ServiceProviderBase/8.2.x style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;ServiceProviderBase/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; and /spana href=https://www.drupal.org/node/2157657#mock_class style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;Mocking for Unit Tests/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;./span/divdivspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;br //span/div/div

Drupal.org Featured Case Studies: Open Social, Drupal 8 Distribution

Thu, 06/23/2016 - 12:45
div class=field field-name-field-mainimage field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg src=https://www.drupal.org/files/styles/case588x306/public/OS_CASE-HQ.png?itok=EoAuIMv_ width=588 height=306 alt=Open Social - social business community software //div/div/divdiv class=field field-name-field-link field-type-link-field field-label-abovediv class=field-labelCompleted Drupal site or project URL:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=https://www.drupal.org/project/socialhttps://www.drupal.org/project/social/a/div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpOpen Social is a new Drupal 8 distribution. It's social software for a href=https://www.drupal.org/project/social rel=nofollowcommunities and social intranets/a, similar to the Drupal 7 distribution a href=https://www.drupal.org/project/commons title=Drupal Commons rel=nofollowCommons/a. Open Social empowers people to effectively collaborate and organize. /p pOpen Social has many features, such as Profiles, Groups, Events, Streams, and Notifications, and is inspired by the Drupal 7-based online community a href=https://www.drupal.com/case-study/greenpeace-greenwire rel=nofollowGreenpeace Greenwire/a, built by a href=https://www.goalgorilla.com/en rel=nofollowGoalGorilla/a. The Greenwire platform has helped Greenpeace change the face of volunteering and empower thousands of people to become active volunteers and make a difference in the world./p/div/div/divdiv class=field field-name-field-module field-type-node-reference field-label-abovediv class=field-labelKey modules/theme/distribution used:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/project/addressAddress/a/divdiv class=field-item odda href=/project/better_formatsBetter Formats/a/divdiv class=field-item evena href=/project/composer_managerComposer Manager/a/divdiv class=field-item odda href=/project/config_updateConfiguration Update Manager/a/divdiv class=field-item evena href=/project/dynamic_entity_referenceDynamic Entity Reference/a/divdiv class=field-item odda href=/project/entityEntity API/a/divdiv class=field-item evena href=/project/field_groupField Group/a/divdiv class=field-item odda href=/project/groupGroup/a/divdiv class=field-item evena href=/project/messageMessage/a/divdiv class=field-item odda href=/sandbox/webflo/2281193Override node options (d8)/a/divdiv class=field-item evena href=/project/profileProfile/a/divdiv class=field-item odda href=/project/r4032loginRedirect 403 to User Login/a/divdiv class=field-item evena href=/project/search_apiSearch API/a/divdiv class=field-item odda href=/project/tokenToken/a/divdiv class=field-item evena href=/project/bootstrapBootstrap/a/div/div/divdiv class=field field-name-field-developed-org field-type-node-reference field-label-abovediv class=field-labelOrganizations involved:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/goalgorillaGoalGorilla/a/divdiv class=field-item odda href=/open-socialOpen Social/a/div/div/divdiv class=field field-name-field-profiles field-type-user-reference field-label-abovediv class=field-labelTeam members:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/u/jaapjanjaapjan/a/divdiv class=field-item odda href=/u/jochemvnjochemvn/a/divdiv class=field-item evena href=/u/maikel-koopmanmaikel-koopman/a/divdiv class=field-item odda href=/u/nielsvandermolennielsvandermolen/a/divdiv class=field-item evena href=/u/peterpolmanpeterpolman/a/divdiv class=field-item odda href=/u/ribelribel/a/divdiv class=field-item evena href=/u/ronaldtebrakeronaldtebrake/a/div/div/div

Deeson: 24 things about Drupal 8 every CTO should know

Thu, 06/23/2016 - 11:06
pAre you preparing to migrate to Drupal 8? If so, you’re probably experiencing an influx of questions about what this means for your business. With so much time lapsed between the releases of Drupal 7 and 8, it’s hard to know what this new era will bring. But fear not; Deeson’s technical lead John Ennew has been busy collating all the queries we’ve received so far and writing some useful, insightful answers for you. This is the first of our three-part series answering all your burning Drupal 8 questions./p p This week, we’re focusing on two areas: planning for Drupal 8, and the implications for Drupal 7./p img src=https://d5av3fo92eabs.cloudfront.net/sites/default/files/styles/image_400_width/public/secondary_images/images/1_1.jpg?itok=EKVHwzoS width=400 height=209 alt=24 things about Drupal 8 every CTO should know - Part 1 title=24 things about Drupal 8 every CTO should know - Part 1 / p /p h3a id=heading1 name=heading1Planning for Drupal 8/a/h3 h4a id=1 name=11. Why did Drupal 8 take so long?/a/h4 pDrupal has been around for 15 years and Drupal 8 has been in development for 5 years. This sounds like a long time to produce a release./p pUnder the hood, Drupal 8 has lots of big changes from Drupal 7. Many new programming concepts and paradigms have been adopted which will make Drupal more standards-compliant. This has meant removing old, more Drupal specific ways of doing things and embracing more widely known standards and technologies./p pThe discussion plan in Drupal community is that in future there will be gradual, phased releases allowing feature development to proceed in separate branches, rather than waiting for other functionality to produce a single large release like Drupal 8./p h4a id=2 name=22. When should I start building on Drupal 8?/a/h4 pDrupal 8 should be strongconsidered/strong for all projects from now onwards. The decision on whether it’s the right time for a specific project will depend on the appetite for risk, the nature of the functionality and complexity of the project./p pThere are many contributed modules that don’t have a stable release yet. This means a project may end up building a Drupal 8 version of a particular tool which would be available ‘for free’ in Drupal 7./p pHowever, this is likely to be outweighed by the long term advantages of choosing Drupal 8. We’d recommend that a project scheduled to launch in 6 to 12 months time should select Drupal 8 over Drupal 7./p pThe fundamental overhaul of the multilingual system in Drupal 8 means that multilingual sites should always choose Drupal 8./p pA project with a close, hard release date may not want to take on the risk of an unexpected bug in Drupal 8 impacting development or causing post-launch issues. These issues are always more likely in a new product before it’s had widespread production use./p h4a id=3 name=33. How long until common contributed modules are going to be available?/a/h4 pDeeson maintains a list of 52 modules which are used in a large number of our projects. 11 are now included in Drupal 8 Core so will be fully supported, 9 have community contributed releases in an alpha or beta stage of development and the rest, 32 modules, have no testable release as yet./p pFor simple brochure sites with limited functionality, Drupal 8 is ready now as some of the most important content management tools are now included in the core platform./p pHowever, there are some significant omissions, e.g. a href=https://www.drupal.org/project/pathautoPathauto/a and a href=https://www.drupal.org/project/tokenTokens/a which are used to automatically generate tags in emails or automatic URL aliases based on the title of content./p pOur experience of Drupal 7 was that contributed modules started being usable one year after the initial Drupal 7 release. We expect the turnaround to be quicker this time because Drupal 8 core incorporates many of these modules and that key contributed modules will be stable by May 2016./p h4a id=4 name=44. How much do Drupal 7 developers have to learn?/a/h4 pSome major changes to Drupal 8 are the introduction of the a href=https://www.drupal.org/theme-guide/8/twigTwig/a templating system for the theme layer, the introduction of components of the Symfony framework into core, the plugin system and a general principle to move to an object-orientated style of programming from the previous, procedural style. Drupal 7 developers, therefore, have quite a bit of learning to do./p pIt is expected that over the next year interest in Drupal 8 will grow and more developers will begin learning the skills needed to work on a Drupal 8 project. The Drupal community has done an excellent job of a href=https://www.drupal.org/8providing support material/a on the Drupal.org website with better documentation than previous versions of Drupal had./p pDevelopment teams will need to start ramping up their training now to support the projects they will be taking on in the next 6 months or risk being left unprepared./p h4a id=5 name=55. Will Drupal 8 make Drupal builds cheaper?/a/h4 pAs with previous versions, Drupal 8 will have no license fee so is free to reuse./p pThe cost of projects built using Drupal 8 is unlikely to be significantly different compared with projects built with previous versions of Drupal./p pHowever, we believe that there will be long term reductions in the total cost of ownership because of the improvements made under the hood in Drupal 8. Development best practices have been introduced including a new plugin system making it easier to extend and enhance Drupal 8 compared with previous versions./p h4a id=6 name=66. Will Drupal 8 sites be quicker to build?/a/h4 pThere has been significant improvements in what is known as DX, or developer experience. These should improve the abilities of the development team to develop sites and diagnose issues./p pExamples include moving to Object-Oriented OO coding principles which organises code more logically and in a manner the developer tools understand. This means that code can autocomplete in their editing tools. Another example is the Twig templating layer which better organises the theme system in Drupal, meaning that it is harder for developers to create untidy code./p pOf course, many development teams have been applying these practices on top of Drupal 7 already so are already getting the benefits of these tools and practices which are now in Drupal 8 core./p h3a id=heading 2 name=heading 2Implications for Drupal 7/a/h3 h4a id=7 name=77. Is there an upgrade path from previous Drupal versions?/a/h4 pThe a href=https://www.drupal.org/upgrade/migrateMigrate/a module is included in Drupal 8. Migrate provides a series of tools a developer can use to map content in a Drupal 6 or 7 website to its location within a Drupal 8 website.  Although not a simple process, it does mean the migration path from previous versions of Drupal is available./p h4a id=8 name=88. How long will Drupal 7 support last now Drupal 8 is out?/a/h4 pThe Drupal community is committed to a href=https://www.drupal.org/d6-lts-supportsupporting/a the previous version of Drupal. This means Drupal 7 will be supported until Drupal 9 is released. There is currently no official release date for Drupal 9 and so no end of life date for Drupal 7./p pI expect support for Drupal 7 for many years, particularly considering the huge install base of Drupal 7 sites./p pstrongThat concludes our Drupal session for this week. Next time around, we’ll be covering the all-important new functionality in Drupal 8, as well as some crucial front end issues./strong/p pstrongIf you’d like to receive the next part of our our mini series on Drupal 8 right now, simply subscribe to our newsletter below. We’ll send the next part over to you straight away./strong/p

myDropWizard.com: Drupal 6 security update for Secure Password Hashes!

Wed, 06/22/2016 - 20:42
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpemAs you may know, a href=https://www.mydropwizard.com/blog/weve-reached-drupal-6-end-life-date-what-does-meanDrupal 6 has reached End-of-Life (EOL)/a which means the Drupal Security Team is no longer doing Security Advisories or working on security patches for Drupal 6 core or contrib modules - but the a href=https://www.mydropwizard.com/blog/how-official-drupal-6-long-term-support-will-workDrupal 6 LTS vendors/a are and we're one of them!/em/ppstrongToday, there is a security release for a href=https://www.drupal.org/project/phpassSecure Password Hashes/a to fix a security bug./strong/ppBy default in Drupal 6, all of a user's existing login sessions will be closed and the current session regenerated when a user changes their password. There was a bug in the Secure Password Hashes module that prevented this from happening./ppWith the help of the D6LTS vendors, a a href=https://www.drupal.org/project/phpass/releases/6.x-2.2new version/a was released./ppstrongYou can also download the patch a href=http://cgit.drupalcode.org/d6lts/plain/common/contrib/views/SA-CONTRIB-2016-036-6.x-2.x.patchthe patch/a.br/strong/ppstrong/strongIf you have a Drupal 6 site using the Views module, we recommend you update immediately! We have already deployed the patch for all of our Drupal 6 Long-Term Support clients. :-)/ppstrongIf you'd like all your Drupal 6 modules to receive security updates and have the fixes deployed the same day they're released, please a href=https://www.mydropwizard.com/drupal-6-ltscheck out our D6LTS plans/a./strong/ppemspanNote/span: if you use the a href=https://www.drupal.org/project/mydropwizardmyDropWizard/a module (totally free!), you'll be alerted to these and any future security updates, and will be able to use drush to install them (even though they won't necessarily have a release on Drupal.org)./em/pp/div/div/div

Lullabot: Using the Template Method pattern in Drupal 8

Wed, 06/22/2016 - 18:01
div class=rich-textpSoftware design patterns are a very good way to standardize on known implementation strategies. By following design patterns you create expectations and get comfortable with the best practices. Even if you read about a design pattern and realize you have been using it for a long time, learning the formal definition will help you avoid eventual edge cases. Additionally, labeling the pattern will enhance strongcommunication/strong, making it strongclearer/strong#xA0;and strongmore effective/strong. If you told someone about a foldable computer that you can carry around that contains an integrated trackpad, etc, you could have been more efficient by calling that a laptop./p pI have already a href=https://www.lullabot.com/articles/get-a-decorator-for-your-drupal-hometalked about design patterns/a#xA0;in general and the decorator pattern in particular, and today I will tell you about the emTemplate Method/em#xA0;pattern. These templates have nothing to do with Drupal#x2019;s templates in the theme system./p pImagine that we are implementing a social media platform, and we want to support posting messages to different networks. The algorithm has several common parts for posting, but the authentication and sending of actual data are specific to each social network. This is a very good candidate for the template pattern, so we decide to create an strongabstract base class/strong, codeNetwork/code, and several strongspecialized subclasses/strong, codeFacebook/code, codeTwitter/code, #x2026;/p pIn the Template Method pattern, the abstract class contains the logic for the algorithm. In this case we have several steps that are easily identifiable:/p olliAuthentication. Before we can do any operation in the social network we need to identify the user making the post./li liSending the data. After we have a successful authentication with the social network, we need to be able to send the array of values that the social network will turn into a post./li liStoring the proof of reception. When the social network responds to the publication request, we store the results in an entity./li /ol pThe first two steps of the algorithm are very specific to each network. Facebook and Instagram may have a different authentication scheme. At the same time, Twitter and Google+ will probably have different requirements when sending data. Luckily, storing the proof of reception is going to be generic to all networks. In summary, we will have two abstract methods that will authenticate the request and send the data plus a method that will store the result of the request in an entity. More importantly, we will have the posting method that will do all the orchestration and call all these other methods./p pOne possible implementation of this (simplified for the sake of the example) could be:/p div class=codepre codespan class=code__preprocessorlt;?php/span span class=code__keywordnamespace/span span class=code__titleDrupal/span\span class=code__titletemplate/span; span class=code__keyworduse/span span class=code__titleDrupal/span\span class=code__titleComponent/span\span class=code__titleSerialization/span\span class=code__titleJson/span; span class=code__comment/** * Class Network. * * span class=code__doctag@package/span Drupal\template *//span span class=code__keywordabstract/span span class=code__classspan class=code__keywordclass/span span class=code__titleNetwork/span span class=code__keywordimplements/span span class=code__titleNetworkInterface/span /span{ span class=code__comment/** * The entity type manager. * * span class=code__doctag@var/span \Drupal\Core\Entity\EntityTypeManagerInterface. *//span span class=code__keywordprotected/span span class=code__variable$entityTypeManager/span; span class=code__comment/** * Publish the data to whatever network. * * span class=code__doctag@param/span PostInterface $post * A made up post object. * * span class=code__doctag@return/span bool * TRUE if the post was posted correctly. *//span span class=code__keywordpublic/span span class=code__functionspan class=code__keywordfunction/span span class=code__titlepost/spanspan class=code__params(PostInterface span class=code__variable$post/span)/span /span{ span class=code__comment// Authenticate before posting. Every network uses a different/span span class=code__comment// authentication method./span span class=code__variable$this/span-gt;authenticate(); span class=code__comment// Send the post data and keep the receipt./span span class=code__variable$receipt/span = span class=code__variable$this/span-gt;sendData(span class=code__variable$post/span-gt;getData()); span class=code__comment// Save the receipt in the database./span span class=code__variable$saved/span = span class=code__variable$this/span-gt;storeReceipt(span class=code__variable$receipt/span); span class=code__keywordreturn/span span class=code__variable$saved/span == SAVED_NEW || span class=code__variable$saved/span == SAVED_UPDATED; } span class=code__comment/** * Authenticates on the request before sending the post. * * span class=code__doctag@throws/span NetworkException * If the request cannot be authenticated. *//span span class=code__keywordabstract/span span class=code__keywordprotected/span span class=code__functionspan class=code__keywordfunction/span span class=code__titleauthenticate/spanspan class=code__params()/span/span; span class=code__comment/** * Send the data to the social network. * * span class=code__doctag@param/span array $values * The values for the publication in the network. * * span class=code__doctag@return/span array * A receipt indicating the status of the publication in the social network. *//span span class=code__keywordabstract/span span class=code__keywordprotected/span span class=code__functionspan class=code__keywordfunction/span span class=code__titlesendData/spanspan class=code__params(array span class=code__variable$values/span)/span/span; span class=code__comment/** * Store the receipt data from the publication call. * * span class=code__doctag@return/span int * Either SAVED_NEW or SAVED_UPDATED (core constants), depending on the operation performed. * * span class=code__doctag@throws/span NetworkException * If the data was not accepted. *//span span class=code__keywordprotected/span span class=code__functionspan class=code__keywordfunction/span span class=code__titlestoreReceipt/spanspan class=code__params(span class=code__variable$receipt/span)/span /span{ span class=code__keywordif/span (span class=code__variable$receipt/span[span class=code__stringapos;statusapos;/span] gt; span class=code__number399/span) { span class=code__comment// There was an error sending the data./span span class=code__keywordthrow/span span class=code__keywordnew/span NetworkException(sprintf( span class=code__stringapos;%s could not process the data. Receipt: %sapos;/span, get_called_class(), Json::encode(span class=code__variable$receipt/span) )); } span class=code__keywordreturn/span span class=code__variable$this/span-gt;entityTypeManager-gt;getStorage(span class=code__stringapos;network_receiptsapos;/span) -gt;create(span class=code__variable$receipt/span) -gt;save(); } } /code/pre/div pThe codepost/code#xA0;public method shows how you can structure your posting algorithm in a very readable way, while keeping the extensibility needed to accommodate the differences between different classes. The specialized class will implement the steps (abstract methods) that make it different./p div class=codepre codespan class=code__preprocessorlt;?php/span span class=code__keywordnamespace/span span class=code__titleDrupal/span\span class=code__titletemplate/span; span class=code__comment/** * Class Facebook. * * span class=code__doctag@package/span Drupal\template *//span span class=code__classspan class=code__keywordclass/span span class=code__titleFacebook/span span class=code__keywordextends/span span class=code__titleNetwork/span /span{ span class=code__comment/** * {span class=code__doctag@inheritdoc/span} *//span span class=code__keywordprotected/span span class=code__functionspan class=code__keywordfunction/span span class=code__titleauthenticate/spanspan class=code__params()/span /span{ span class=code__comment// Do the actual work to do the authentication./span } span class=code__comment/** * {span class=code__doctag@inheritdoc/span} *//span span class=code__keywordprotected/span span class=code__functionspan class=code__keywordfunction/span span class=code__titlesendData/spanspan class=code__params(array span class=code__variable$values/span)/span /span{ span class=code__comment// Do the actual work to send the data./span } } /code/pre/div pAfter implementing the abstract methods, you are done. You have successfully implemented the template method pattern! Now you are ready to start posting to all the social networks./p div class=codepre codespan class=code__comment// Build the message./span span class=code__variable$message/span = span class=code__stringapos;I like the new article about design patterns in the Lullabot blog!apos;/span; span class=code__variable$post/span = span class=code__keywordnew/span Post(span class=code__variable$message/span); span class=code__comment// Instantiate the network objects and publish./span span class=code__variable$network/span = span class=code__keywordnew/span \Drupal\template\Facebook(); span class=code__variable$network/span-gt;post(span class=code__variable$post/span); span class=code__variable$network/span = span class=code__keywordnew/span \Drupal\template\Twitter(); span class=code__variable$network/span-gt;post(span class=code__variable$post/span);/code/pre/div pAs you can see, this is a behavioral pattern very useful to deal with specialization in a subclass for a generic algorithm./p pTo summarize, this pattern involves a parent class, the abstract class, and a subclass, called the specialized class.#xA0;The abstract class implements an algorithm by calling both abstract and non-abstract methods./p ulliThe non-abstract methods are implemented in the abstract class, and the abstract methods are the specialized steps that are subsequently handled by the subclasses. The main reason why they are declared abstract in the parent class is because the subclass handles the specialization, and the generic parent class knows nothing about how. Another reason is because PHP won#x2019;t let you instantiate an abstract class (the parent) or a class with abstract methods (the specialized classes before implementing the methods), thus forcing you to provide an implementation for the#xA0;missing steps#xA0;in the algorithm./li liThe design pattern doesn#x2019;t define the visibility of these methods, you can declare them#xA0;public#xA0;or#xA0;protected. If you declare these methods public, then you can surface them in an interface to make the base class abstract./li /ul pIn one typical variation of the template pattern, one or more of the abstract methods are not declared abstract. Instead they are implemented in the base class to provide a sensible default. This is done when there is a shared implementation among several of the specialized classes. This is called a hook method (note that this has nothing to do with Drupalapos;s hooks)./p pComing back to our example, we know that most of the Networks use OAuth 2 as their authentication method. Therefore we can turn our abstract codeauthenticate/code#xA0;method into an OAuth 2 implementation. All of the classes that use OAuth 2 will not need to worry about authentication since that will be the default. The codeauthenticate/code#xA0;method will only be implemented in the specialized subclasses that differ from the common case. When we provide a default implementation for one of the (previously) abstract methods, we call that a hook method./p pAt this point you may be thinking that this is emjust OOP/em#xA0;or embasic subclassing/em. This is because the template pattern is very common. Quoting a href=https://en.wikipedia.org/wiki/Template_method_patternWikipediaapos;s/a#xA0;words:/p pciteThe Template Method pattern occurs frequently, at least in its simplest case, where a method calls only one abstract method, with object oriented languages. If a software writer uses a polymorphic method at all, this design pattern may be a rather natural consequence. This is because a method calling an abstract or polymorphic function is simply the reason for being of the abstract or polymorphic method./cite/p pYou will find yourself in many situations when writing Drupal 8 applications and modules where the Template Method pattern will be useful. The classic example would be annotated plugins, where you have a base class, and every plugin contains the bit of logic that is specific for it./p pI like the Template Method pattern because it forces you to structure your algorithm in a very clean way. At the same time it allows you to compare the subclasses very easily, since the common algorithm is contained in the parent (and abstract) class. All in all itapos;s a good way to have variability and keep common features clean and organized./p /div

LevelTen Interactive: LevelTen, Open Enterprise, and 6 Strategic Advantages for Using Pantheon

Wed, 06/22/2016 - 16:04
img typeof=foaf:Image src=http://getlevelten.com/sites/default/files/styles/600x300/public/content/blog/images/untitled_design_12.png?itok=_0K1ds9l width=600 height=300 alt=pantheon drupal / pWhen LevelTen gets into talks with potential clients or even current clients, our first thought is to recommend businesses to Pantheon hosting for scalable websites. When we first began looking for partners to host and manage our a href=http://getlevelten.com/products/oe-proOpen Enterprise Pro CMS/a, a Drupal distribution, a href=http://pantheon.ioPantheon/a was a clear choice. Our company philosophy is built around providing infinitely scalable content management and marketing solutions that are simple enough for nontechnical people to manage and maintain their websites. That...a href=/blog/felipa-villegas/levelten-open-enterprise-and-6-strategic-advantages-using-pantheon class=more-linkRead more/a/p

Mark Shropshire: Type Less with Drush site-set

Wed, 06/22/2016 - 05:53
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:encodedpa href=https://github.com/drush-ops/drushimg src=http://mark.shropshires.net/sites/default/files/drush-logo.png alt=Drush logo style=float:right; padding-left: 8px; border: none; //a I use drush aliases between a href=http://www.drupalvm.comDrupal VM/a and Drupal hosting services quite a bit. It was great to learn that codedrush site-set/code allows me to set the alias to use for the current session, so I don't have to type the alias name over and over again. For instance, I can set an alias like this: code$ drush site-set @drupalvm.drupal8.dev/code, allowing me to check the status of the site on the Drupal VM with code$ drush status/code. !--break-- To make it even easier, codeuse/code is an alias for codesite-set/code. Example: code$ drush use @drupalvm.drupal8.dev/code./p pDrush site-set has some other useful options beyond setting drush aliases. Check out the options available at the link below:/p phttps://drushcommands.com/drush-8x/core/site-set//p /div/div/divsection class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above view-mode-rssh2 class=field-labelBlog Category:nbsp;/h2ul class=field-itemsli class=field-item evena href=/taxonomy/term/13 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a/li/ul/section

Talha Paracha: GSoC’16 – Pubkey Encrypt – Week 4 Report

Wed, 06/22/2016 - 02:00
pI started the week by providing test coverage for functionalities I added to the module in week 3. Since the main functionality I added was the automatic generation of keys, the tests I wrote assert for these capabilities:/p

Acquia Developer Center Blog: Drupal 8 Module (Distro!) of the Week: Lightning

Tue, 06/21/2016 - 23:29
div class=field field-name-field-blog-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg typeof=foaf:Image src=https://dev.acquia.com/sites/default/files/styles/blog__190_x110_/public/blog/drupal_8_logo_isolated_cmyk_72_2_19.png?itok=fy6hxad8 width=140 height=85 alt=Drupal 8 logo title=Drupal 8 logo //divdiv class=field-item oddimg typeof=foaf:Image src=https://dev.acquia.com/sites/default/files/styles/blog__190_x110_/public/blog/drupal_lightning_the_distribution_for_enterprise_authoring.png?itok=Jzp-1W8k width=140 height=85 alt=The Lightning distribution#039;s homepage: lightning.acquia.com title=The Lightning distribution#039;s homepage: lightning.acquia.com //div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedp emEach day, new functionality is being created for and built with Drupal 8. At the same time, more and more Drupal 7 modules are also being migrated to the Drupal community’s latest major release. In this series, the Acquia Developer Center is profiling some of the most prominent, useful modules, projects, and tools available for Drupal 8. This week: stronga href=http://lightning.acquia.comthe Drupal 8 Lightning distribution/a/strong./em /p /div/div/divdiv class=field field-name-field-blog-tags field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/tags/acquia-drupal-planet typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=acquia drupal planet/a/divdiv class=field-item odda href=/tags/lightning typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=lightning/a/divdiv class=field-item evena href=/tags/distro typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=distro/a/divdiv class=field-item odda href=/tags/distribution typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=distribution/a/divdiv class=field-item evena href=/tags/authoring typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=authoring/a/div/div/div

Zivtech: Attention: A Key Component of UX and Cognitive Psychology

Tue, 06/21/2016 - 21:30
div class=field-body div class=asset-wrapper asset aid-179 asset-image editor contenteditable=false data-asset-cid=1466537125147 div class=content div class=field-asset-imageimg alt= height=360 src=/sites/default/files/styles/asset_image_full/public/assets/images/8701550888_de362419d8_z.jpg?itok=k9GG2fVP width=640 //div div class=field-asset-image-copyright /div div class=field-asset-image-description /div /div /div p dir=ltrbr /em​Technology is cool. New features are cool. Shouldn’t your site show all these cool things off?/em/p p dir=ltrThe short answer, unfortunately, is no. All those bells and whistles rapidly overwhelm users. They may be thinking: emWow, look at this magical 3D scrolling effect! Wow, look at this video background! Wow, check out this slideshow! Wow, look at those cool drawings! /em/p pAnd very quickly, users get lost in the hubbub of cool things and lose track of mission. Guess what? Your website’s goal is not to show off cool stuff. It’s to get and keep visitors’ attention to your product or service, and to convert customers. That’s why it’s so important to understand how attention comes into play when designing your website./p h3br / ​How Psychology Aids Website Design/h3 p dir=ltrRecent advances in technology spotlight two increasingly important fields: user experience (UX), or how people interact with websites and apps; and cognitive psychology, a discipline that examines mental processes such as thinking and memory. /p p dir=ltrUser experience is an exemplary application of cognitive psychology, though it’s not always framed that way. In order for a user experience designer to work from a research driven, human focused standpoint, it’s necessary to understand key aspects of cognition. /p p dir=ltrAttention is one of the main tenets of human cognition. When you understand the principles of attention, you can greatly improve the way websites are designed for both the producer and the consumer./p h3 dir=ltrbr / Look Away From the Light /h3 p dir=ltrPsychologists used to compare visual attention to a spotlight: people set their eyes on a certain visual of a certain size and that was that. Cognitive psychologists have made great strides in the field of attention. It turns out that attention is not as limited as scientists once imagined. /p Contrary to what most people assume, attention is not finite. It does not have to be focused where the eyes are looking, and it can be focused in multiple spots. People take in stimuli even if they aren’t immediately focused on them. Specific things like movement divert attention from the initial focus. Attention is not a spotlight as psychologists once thought, but rather it is an ever-shifting amorphous scan.br /br / When you take a more holistic approach to building a website, guide the user’s attention without inducing a headache. When too many exciting things distract the user, it prevents them from accomplishing their goals. h3br / ​Order is Beauty/h3 p dir=ltrStrive for a visual hierarchy. Not everything should immediately try to grab the user’s attention; rather, the most important part of the website should be obvious. Some websites have begun to prioritize the user’s attention-- for example, Zivtech’s a href=https://www.zivtech.com/blog target=_blankblog page/a phases out the header image by blurring it as the user scrolls down, shifting focus to the articles below.br /br / ​Anyone can tell you that a web page looks cluttered, but a good designer should know how a cluttered web page impacts user attention. So if you want to boost your site metrics like traffic, session duration, and conversion, pay attention./p /div nav role=navigation class=links-inline/nav

Dries Buytaert: The long path to being understood

Tue, 06/21/2016 - 19:29
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpI sent an internal note to all of Acquia's 700+ employees today and decided to cross-post it to my blog because it contains a valuable lesson for any startup. One of my personal challenges — both as an Open Source evangelist/leader and entrepreneur — has been to learn to be comfortable with not being understood. Lots of people didn't believe in Open Source in Drupal's early days. Some people emstill/em don't understand why you'd give the software away for free. Lots of people didn't believe Acquia could succeed. It can be difficult to deal with the naysayers and rejections. In many cases, an idea takes years to gain general acceptance. Open Source software and its new commercial approaches are starting to reach that point just now. If you ever have an idea that is not understood, I want you to think of my story./p blockquote pTeam,/p pThis week, Acquia got a nice mention on Techcrunch in an article written by Jake Flomenberg, a partner at Accel Partners. For those of you who don't know Accel Partners, they are one of the most prominent venture capital investors and were early investors in companies like Facebook, Dropbox, Slack, Etsy, Atlassian, Lynda.com, Kayak and more./p pThe article, called a href=https://techcrunch.com/2016/06/19/the-next-wave-in-software-is-open-adoption-softwareThe next wave in software is open adoption software/a, talks about how the enterprise IT stack is being redrawn atop powerful Open Source projects like MongoDB, Hadoop, Drupal and more. Included in the article is a graph that shows Acquia's place in the latest wave of change to transform the technology landscape, a place showing our opportunity is bigger than anything before as the software industry migrated from mainframes to client-server, then SaaS/PaaS and now - to what Flomenberg dubs, the age of a href=https://medium.com/accel-insights/the-rise-of-open-innovation-the-3p-s-for-building-a-durable-open-software-company-3bc6e0ec6fa7#.frr8ys492Open Adoption Software/a./p figure class=figure div class=img style=border: 1px solid #ccc; display: inline-blockimg src=http://buytaert.net/sites/buytaert.net/files/cache/blog-waves-of-software-adoption-742x1114.jpg style=display:block alt=Waves of software adoption//div figcaption style=font-style: italic; color: #777;/figcaption /figure pIt's a great article, but it isn't new to any of us per se – we have been promoting this vision since our start nine years ago and we have seen over and over again how Open Source is becoming the dominant model for how enterprises build and deliver IT. We have also shown that we are building a successful technology company using Open Source./p pWhy then do I feel compelled to share this article, you ask? The article marks a small but important milestone for Acquia./p pWe started Acquia to build a new kind of company with a new kind of business model, a new innovation model, all optimized for a new world. A world where businesses are moving most applications into the cloud, where a lot of software is becoming Open Source, where IT infrastructure is becoming a metered utility, and where data-driven services make or break business results./p pWe've been steadily executing on this vision; it is why we invest in Open Source (e.g. Drupal), cloud infrastructure (e.g. Acquia Cloud and Site Factory), and data-centric business tools (e.g. Acquia Lift)./p pIn my 15+ years as an Open Source evangelist, I've argued with thousands of people who didn't believe in Open Source. In my 8+ years as an entrepreneur, I've talked to thousands of business people and dozens of investors who didn't understand or believe in Acquia's vision. Throughout the years, Tom and I have presented Acquia's vision to many investors – some have bought in and some, like Accel, have not (for various reasons). I see more and more major corporations and venture capital firms coming around to Open Source business models every day. This trend is promising for new Open Source companies; I'm proud that Acquia has been a part of clearing their path to being understood./p pWhen former skeptics become believers, you know you are finally being understood. The Techcrunch article is a small but important milestone because it signifies that Acquia is finally starting to be understood more widely. As flattering as the Techcrunch article is, true validation doesn't come in the form of an article written by a prominent venture capitalist; it comes day-in and day-out by our continued focus and passion to grow Drupal and Acquia bit by bit, one successful customer at a time./p pBuilding a new kind of company like we are doing with Acquia is the harder, less-traveled path, but we always believed it would be the best path for our customers, our communities, and ultimately, our world. Success starts with building a great team that not only understands what we do, but truly believes in what we do and remains undeterred in its execution. Together, we can build this new kind of company./p p--br / Dries Buytaertbr / Founder and Project Lead, Drupalbr / Co-founder and Chief Technology Officer, Acquiabr / /blockquote/div/div/div

DrupalCon News: The Business of Drupal

Tue, 06/21/2016 - 19:10
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenpDrupal is a CMS. Drupal is a framework. Drupal is a piece of software which allows us to create amazing online experiences. Drupal is its awesome community. For some of us Drupal is a way of life. But what else is Drupal?/p pDrupal is our business./p/div/div/div

Cheeky Monkey Media: Custom Sorting of Views Content

Tue, 06/21/2016 - 17:58
span class=field field--name-title field--type-string field--label-hiddenCustom Sorting of Views Content/span div class=field field--name-field-image field--type-image field--label-hidden field__item img src=/sites/default/files/2016-06/customsortingofviews.jpg width=1380 height=444 alt=Custom Sorting of Views Content by Ryan Smylski, Senior Monkey Wrencher, Cheeky Monkey Media / /div span class=field field--name-uid field--type-entity-reference field--label-hiddena title=View user profile. href=/users/ryan class=usernameryan/a/span span class=field field--name-created field--type-created field--label-hiddenTue, 06/21/2016 - 15:58/span div class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itemp dir=ltrspan id=docs-internal-guid-bc161c24-73af-f435-ae46-2e53f2b24848Have you ever had a list of related items, related by say by a taxonomy term or another node, and needed some way to sort that list, fully, or even partially? If so, there are a few good views modules out there to help you out./span/p h2 dir=ltra href=https://www.drupal.org/project/nodequeuespanThe Nodequeue Module/span/a/h2 p dir=ltrspan id=docs-internal-guid-bc161c24-73af-f435-ae46-2e53f2b24848My first introduction to setting up a custom sort on a list of content was to use the /spana href=https://www.drupal.org/project/nodequeueNodequeue /amodule. Nodequeue is a multi-faceted module which has a lot of queue/listing functionality. One of which is integrating with views./p p dir=ltrspan id=docs-internal-guid-bc161c24-73af-f435-ae46-2e53f2b24848I’ll go through the steps necessary for setting up a nodequeue and linking it to your view to have it use your sorting./span/p/div

Acquia Developer Center Blog: How to Ensure That Your Website is Launch-Ready

Tue, 06/21/2016 - 17:08
div class=field field-name-field-blog-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg typeof=foaf:Image src=https://dev.acquia.com/sites/default/files/styles/blog__190_x110_/public/blog/launch.jpg?itok=ubhHbWH- width=140 height=85 alt=launch //div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpLaunching a new application can be a scary event. Many potential bottlenecks, although not readily apparent, can cause problems on the go-live day, or the first time there’s a surge in site traffic./p pAt Acquia, we conduct a site audit to ensure that a new site is not subject to unnecessary delays. We do this by identifying potential problems, and proposing clear and specific remediation and optimization measures during development./p pThat’s the big picture. Here’s a close-up view on how we do it. /p/div/div/divdiv class=field field-name-field-blog-tags field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/tags/acquia-drupal-planet typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=acquia drupal planet/a/div/div/div

ImageX Media: When Responsive Websites May Not Be Enough: Why You Need a Mobile Business App

Tue, 06/21/2016 - 16:07
!-- field.tpl -- div class=field field-name-body field-type-text-with-summary field-label-hidden !-- theme hook suggestions: -- !-- hook:field -- !-- tpl file: * field--text-with-summary.tpl.php -- !-- tpl file: * field--body.tpl.php -- !-- tpl file: * field--blog.tpl.php -- !-- tpl file: * field--body--blog.tpl.php -- pMobile usage shows no signs of slowing down. Many web design and development agencies encourage clients to deploy websites using a responsive design in place. For those in need a refresher, a responsive website is a design approach based on a href=http://www.w3schools.com/css/css_rwd_grid.aspfluid grids/a and a href=http://www.w3schools.com/css/css_rwd_mediaqueries.aspCSS3 media queries/a. A responsive site's layout will change based on the size (height x width) of a device./p /div !--/field.tpl --

Drupal Commerce: Commerce 2.x: Unit, Kernel, and Functional Tests Oh My!

Tue, 06/21/2016 - 16:01
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpAt the end of May, I made an a href=https://www.drupal.org/node/2733473initiative to move all of the Drupal Commerce tests away from Simpletest/a and to use the available test classes built off of PHPUnit. Why? Simpletest is a test framework within Drupal and not used by the PHP community at large./p pWith the a href=https://www.drupal.org/node/2304461KernelTestBaseTNG™/a issue, Drupal core officially moved to being based on top of PHPUnit for Kernel and Unit tests. Soon more test types were to follow, such as a href=https://www.drupal.org/node/2232861browser tests/a and a href=https://www.drupal.org/node/2469713JavaScript testing/a./p h4 style=text-align: centerDeath to Simpletest, Long Live PHPUnit, Mink, and PhantomJS/h4 pWe now have PHPUnit as our test framework, the choice of the greater PHP community. The browser tests use the Mink browser emulator, which anyone working with Behat should be somewhat familiar. Testing JavaScript is done by pointing PhantomJS configuration to Mink. No longer are we limited to the functionalities of Simpletest and our community to develop it. /p/div/div/div

ComputerMinds.co.uk: How to write a PHPUnit test for Drupal 8

Tue, 06/21/2016 - 14:00
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-items id=md1div class=field-item even itemprop=articleBodypThis article will talk you through the steps to follow to write a simple PHPUnit test for Drupal 8./p pI have been doing a href=https://www.drupal.org/user/2617663/tracka lot of work/a on Drupal 8 migrations for the past few months so that will be the focus of the test./p h2Step 1: Create a emFixture/em/h2 pTo quote the a href=https://phpunit.de/manual/current/en/fixtures.htmlPHPUnit manual/a:/p/div/div/div