Planet Drupal

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

Annertech: Annertech: Web Agency of the Year

Thu, 09/29/2016 - 09:46
span class=field field-node--title field-name-title field-type-string field-label-hiddenAnnertech: Web Agency of the Year/span div class=field field-node--body field-name-body field-type-text-with-summary field-label-hidden div class=field-items div class=field-itempMy fingers are trembling typing this. I can't believe it. This morning everyone in Annertech land is thinking did that really just happen? It appears it did, we are the web agency of the year!/p pLast night, to top off the other three awards we won - best arts and culture website, most beautiful website in Ireland, and best website - we then went on to win Best Web Agency 2016./p pSpeaking to accept the award, Alan Burke thanked the great team we have in Annertech and our fantastic clients who trust us with such important work./p/div /div /div

Annertech: Ireland.ie/Annertech are the Big Winners at Realex Web Awards 2016

Thu, 09/29/2016 - 09:33
span class=field field-node--title field-name-title field-type-string field-label-hiddenIreland.ie/Annertech are the Big Winners at Realex Web Awards 2016/span div class=field field-node--body field-name-body field-type-text-with-summary field-label-hidden div class=field-items div class=field-itempWe knew Ireland.ie (built by Annertech on Drupal) was a special website. The design is beautiful thanks to the amazing work of BigO Media, the content, media, and experience is second to none thanks to the the team in the Ireland.ie office at the Department of Arts, Heritage and the Gaeltacht. The implementation is without flaw (if we say so ourselves!)./p/div /div /div

erdfisch: Drupalcon Dublin: Come to the island and get off the island

Wed, 09/28/2016 - 23:02
span class=field field-node--title field-name-title field-type-string field-label-hiddenDrupalcon Dublin: Come to the island and get off the island/span div class=field field-node--field-single-image field-name-field-single-image field-type-entity-reference field-label-visually_hidden div class=field-label visually-hiddenSingle image:nbsp;/div div class=field field-media--field-image field-name-field-image field-type-image field-label-hidden img src=https://erdfisch.de/sites/default/files/IMG_5285.JPG width=2592 height=1944 alt= title=The beach around the corner from our Dublin apartment typeof=foaf:Image / /div div class=copyrightThe beach around the corner from our Dublin apartment/div /div span class=field field-node--created field-name-created field-type-created field-label-hidden28.09.2016/span span class=field field-node--uid field-name-uid field-type-entity-reference field-label-hiddenspan lang= about=/users/michael-lenahan typeof=schema:Person property=schema:name datatype=Michael Lenahan/span/span div class=field field-node--body field-name-body field-type-text-with-summary field-label-visually_hidden div class=field-label visually-hiddenBody:nbsp;/div h2Getting off the island/h2 pAs a back-end developer, one of the surprising and fun things about this Drupalcon is how much I have learned about front-end and theming in Drupal. This has been my way of getting off the island and learning about things a little outside my normal comfort-zone./p pimg src=https://erdfisch.de/sites/default/files/styles/medium/public/IMG_5323.JPG?itok=qy_GQDXM //p h2The kitchen table track at Drupalcon Dublin/h2 pThere were two things that were the impetus for this. Firstly, I came to Dublin with Pascal a href=https://www.drupal.org/u/hydrahttps://www.drupal.org/u/hydra/a who works with us at erdfisch as our front-end development expert. I spent the weekend learning (and documenting) our approach to rendering content in flexible ways to achieve more sophisticated output of content than Drupal usually allows. In a nutshell, this allows us to provide very sophisticated front-end design./p pThe module driving this is called seem. We were working on it this morning at the kitchen table./p pimg src=https://erdfisch.de/sites/default/files/styles/medium/public/IMG_5299.JPG?itok=X_DZHXx8 //p h2Exam time/h2 pThe second thing that happened was that Stefan a href=https://www.drupal.org/u/sanduhrshttps://www.drupal.org/u/sanduhrs/a and I decided to jump in and take the Drupal 8 Acquia Certified Developer Exams. Stefan has passed the two Drupal 8 Exams this week (Acquia Certified Drupal 8 Site Builder and Acquia Certified Developer Drupal 8 Front-end Specialist)./p pimg src=https://erdfisch.de/sites/default/files/styles/medium/public/IMG_5321.JPG?itok=xS-ovLNx //p pI passed the Acquia Certified Drupal 8 Site Builder and am taking the Front-End Specialist exam tomorrow morning. Wish me luck!/p pimg src=https://erdfisch.de/sites/default/files/styles/medium/public/IMG_5326.JPG?itok=hPCXngnb //p pAll this has, of course, given me lots of motivation to go to sessions related to front-end and theming this Drupalcon. More to come on that in another blog post./p /div div class=field field-node--field-blog-tags field-name-field-blog-tags field-type-taxonomy-term-reference field-label-visually_hidden div class=field-label visually-hiddenSchlagworte/Tags:nbsp;/div a href=/blog/taxonomy/term/345/0planet/a a href=/blog/drupalcondrupalcon/a a href=/blog/dublindublin/a /div section class=field field-node--field-comments field-name-field-comments field-type-comment field-label-above comment-wrapper div class=comment-form-area div class=comment-form-area--container form class=comment-comment-form comment-form action=/comment/reply/node/360/field_comments method=post id=comment-form accept-charset=UTF-8 div class=form-item form-type-textfield form-item-name label for=edit-nameIhr Name/label input data-drupal-default-value=Anonymous type=text id=edit-name name=name value=Anonymous size=30 maxlength=60 class=form-text / /div input type=hidden name=form_build_id value=form-ftWvKCIHngmtip15k6fIOs5KtFsDIUpzr6gxVLH5KsI / input type=hidden name=form_id value=comment_comment_form / input type=hidden name=honeypot_time value=1475099540 / div class=field-type-text-long field-name-comment-body field-widget-text-textarea form-wrapper id=edit-comment-body-wrapper div class=text-format-wrapper form-item div class=form-item form-type-textarea form-item-comment-body-0-value label for=edit-comment-body-0-value class=form-requiredKommentar/Comment/label div class=form-textarea-wrappertextarea class=text-full form-textarea required resize-vertical id=edit-comment-body-0-value name=comment_body[0][value] rows=5 cols=60 placeholder= required=required aria-required=true/textarea/div /div /div /div div class=form-actions form-wrapper id=edit-actionsbutton type=submit id=edit-submit name=op value=Kommentar hinzufügen/Add comment class=button button--primary form-submitspanKommentar hinzufügen/Add comment/span/button /div div class=url-textfielddiv class=form-item form-type-textfield form-item-url label for=edit-urlLeave this field blank/label input autocomplete=off type=text id=edit-url name=url value= size=20 maxlength=128 class=form-text / /div /div /form /div /div /section

OSTraining: New Drupal 8 Ideas in Dries' Dublin Keynote

Wed, 09/28/2016 - 18:01
div class=ost-intro-imageimg src=https://www.ostraining.com/images/drupal8/drupal-8-day.jpg alt=DrupalCon Dublin Keynote width=200 height=134 //div pThis week is DrupalCon Dublin. And as always, Dries gave the keynote address on the first morning of the event./p pThis year's keynote was broken into two sections: Drupal 8 Update and The Why./p pIn Drupal 8 Update, Dries talks about the technical side of Drupal. From minute 27 to minute 42, Dries talks about what's new in Drupal 8.2, which arrives on October 5th. We've covered those new features in a href=https://www.ostraining.com/blog/drupal/drupal-82previous/a a href=https://www.ostraining.com/blog/drupal/82-featuresposts/a. Then, from minute 42 to 48, Dries discusses features may arrive in future Drupal versions. If you're short on time, watch those 6 minutes. Scroll down in this post, and we'll covernbsp;those 6 minutes in detail./p pIn The Why, starting at minute 40, there's a much broader focus on the larger purpose of Drupal. This section of personal anecdotes and stories of Drupal in action./p

Deeson: The DrupalCon Dublin 2016 Wrap-Up - A View from the Floor

Wed, 09/28/2016 - 13:33
img src=https://d3suqxyr95ccqd.cloudfront.net/sites/default/files/styles/image_400_width/public/lead_image/drupalcon_banner_twitter_3-01_0.png?itok=7piULqFG width=400 height=142 alt=DrupalCon 2016 /pAs a former tech journalist I am well experienced in attending conferences all around the world, so I was very excited to a href=https://www.deeson.co.uk/blog/drupalcon-dublin-2016attend DrupalCon Dublin/a on the behalf of Deeson./p pWith DrupalCon, it was a great opportunity to learn more about Drupal straight from the mouths of a thriving community. But with the ‘Future of Work’ approach being one of a number of reasons I decided to join the company, it was a great opportunity to share our message and the way people can thrive at Deeson with its a href=https://www.deeson.co.uk/blog/notes-day-creating-better-officevibeopenness,/a a href=https://twitter.com/deesonlabs/status/780664689369964544autonomy/a, a href=https://www.deeson.co.uk/labs/join-deeson-and-work-futureflexible working/a, a href=https://www.deeson.co.uk/blog/taking-sabbaticalpaid sabbaticals/a and a href=https://www.deeson.co.uk/labs/get-paid-time-contribute-open-source-projectspaid time to contribute to the community. /a/p pDrupalCon Europe was very different to the conferences that I’ve experienced in the past in that instead of the slickness of a warm-up act with sales patter and a costly presentation, I was presented with fun and games from the Drupal community, including a singalong, viking claps, and some Irish dancing. Already I could tell this would be different experience to the tech events I’ve been used to./p blockquote class=twitter-tweet data-lang=enp lang=en dir=ltr xml:lang=enAn early morning Irish jig to get us ready for the a href=https://twitter.com/hashtag/DrupalCon?src=hash#DrupalCon/a Dublin sessions today. a href=https://twitter.com/hashtag/morningexercise?src=hash#morningexercise/a a href=https://t.co/r0gQWlCOUQpic.twitter.com/r0gQWlCOUQ/a/p— Asavin Wattanajantra (@Asavin) a href=https://twitter.com/Asavin/status/780670590537596928September 27, 2016/a/blockquote pThis was great preparation for the day, and the first presentation I saw was a powerful keynote by the founder and lead developer of Drupal Dries Buyteart about how wide and far the community stretched, and how it gave opportunities in terms of a career around the world./p pBelow is a video of the keynote, and is certainly inspiring for anybody thinking of getting into Drupal, whether it’s as a developer or non-technical person like me as a marketer, a project manager, or business developer./p p/p p /p pThis is how the a href=https://www.deeson.co.uk/blog/drupalcon-dublin-2016rest of the week will shape up./a/p

Amazee Labs: A day at DrupalCon with Sebastian

Wed, 09/28/2016 - 12:36
spanA day at DrupalCon with Sebastian/span div class=field field-node--field-lead field-name-field-lead field-type-text-long field-label-hidden div class=field-items div class=field-itempIt is on! DrupalCon Dublin has officially started and it's going to be epic./p/div /div /div spana href=/en/sebastian-siemssen title=View user profile. lang= about=/en/sebastian-siemssen typeof=schema:Person property=schema:name datatype= class=usernameSebastian Siemssen/a/span spanWed, 09/28/2016 - 12:36/span div class=field field-node--body field-name-body field-type-text-with-summary field-label-hidden div class=field-items div class=field-itemp dir=ltrThe second day at DrupalCon started early with the in-famous prenote. After a long first day setting up our gorgeous booth, exploring the convention center, meeting new and old friends, a lot of hugs and a fabulous finish at the Amazee Storyteller and Gravedigger bus tour the early timeslot of the prenote was a challenge for many. If you missed the prenote, you can watch the recording on a href=https://www.youtube.com/watch?v=FEklYAeQ0nUYoutube/a. Look out for the Pot of Gold!/p p dir=ltrimg alt=The room was packed for the Pre- and Keynote. data-entity-type=file data-entity-uuid=c8a56cfd-5cef-4d82-ba5d-93882d17595c src=https://www.amazeelabs.com/sites/default/files/inline-images/29962194185_fbddffbcde_k.jpg //p p dir=ltrAs usual, the Prenote was followed by the Keynote aka the “Driesnote”, in which a href=https://en.wikipedia.org/wiki/Dries_BuytaertDries Buytaert/a, the founder of Drupal, gave an overview of the state of Drupal and its outlook for the future. You can watch the Keynote on a href=https://www.youtube.com/watch?v=eQLzrlMeySUYoutube /atoo./p p dir=ltrimg alt=Dries giving the Keynote. data-entity-type=file data-entity-uuid=e18b4505-d42e-4459-bb00-fe94a9a48c48 src=https://www.amazeelabs.com/sites/default/files/inline-images/29668575770_e425a4956a_k.jpg //p p dir=ltrFor me, the rest of the morning was packed with interesting discussions and code sprints around GraphQL for Drupal. If you are interested to hear more about that or get involved, find me at our booth or in the sprints room./p p dir=ltrimg alt=Sprinting with the Drupal community. data-entity-type=file data-entity-uuid=c9fd32f1-bff5-429f-b529-4175d34794be src=https://www.amazeelabs.com/sites/default/files/inline-images/29685728600_27358df041_k.jpg //p p dir=ltrI fueled my sugar addiction with an unhealthy amount of Amazee lollipops at our gorgeous booth during the breaks. If you want one too, come by our booth and find one of our lollipop dealers./p p dir=ltrIn the afternoon the sprinting continued and I got to show off our Microsoft HoloLens to a couple of people./p pimg alt=Showing off the HoloLens to our friends. data-entity-type=file data-entity-uuid=eb3e671b-7922-4ed1-b606-6d0cde54b44c src=https://www.amazeelabs.com/sites/default/files/inline-images/Slack%20for%20iOS%20Upload.jpg //p pIf you are interested and want to give it a try, come by our booth. It's fun, I promise!/p p dir=ltr /p/div /div /div

MD Systems blog: We are striving to invest 20% of every project’s value back into the community

Wed, 09/28/2016 - 10:48
It is probably no secret that we are one of the bigger contributors to Drupal (definitely the biggest when company size is taken into consideration). Contribution is part of our daily routine. Every time when we run into a problem that can be resolved in a general/community way we try to do that. Our developers are active in the issue queues on a daily basis. Working in the drupal.org issue queue is as common as checking new messages on our company’s Mattermost channels.br /

Dries Buytaert: The transformation of Drupal 8 for continuous innovation

Wed, 09/28/2016 - 10:46
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpIn the past, after every major release of Drupal, most innovation would shift to two areas: (1) contributed modules for the current release, and (2) core development work on the next major release of Drupal. This innovation model was the direct result of several long-standing policies, including a href=http://buytaert.net/backward-compatibilityour culture of breaking backward compatibility/a between major releases./p pIn many ways, this approach served us really well. It put strong emphasis on big architectural changes, for a cleaner, more modern, and more flexible codebase. The downsides were lengthy release cycles, a costly upgrade path, and low incentive for core contributors (as it could take years for their contribution to be available in production). Drupal 8's development was a great example of this; the a href=http://buytaert.net/why-the-big-architectural-changes-in-drupal-8architectural changes in Drupal 8/a really propelled Drupal's codebase to be more modern and flexible, but also came at the cost of four and a half years of development and a complex upgrade path./p pAs Drupal grows — in lines of code, number of contributed modules, and market adoption — it becomes harder and harder to rely purely on backward compatibility breaks for innovation. As a result, we decided to evolve our philosophy starting after the release of Drupal 8./p pThe only way to stay competitive is to have the best product and to help people adopt it more seamlessly. This means that we have to continue to be able to reinvent ourselves, but that we need to make the resulting changes less scary and easier to absorb. We decided that we wanted more frequent releases of Drupal, with new features, API additions, and an easy upgrade path./p pTo achieve these goals, we adopted three new practices: ol lia href=http://semver.org/Semantic versioning/a: a emmajor.minor.patch/em versioning scheme that allows us to add significant, backwards-compatible improvements in minor releases like Drupal 8.1.0 and 8.2.0./li lia href=https://www.drupal.org/core/release-cycle-overviewScheduled releases/a: new minor releases are timed twice a year for predictability. To ensure quality, each of these minor releases gets its own beta releases and release candidates with strict guidelines on allowed changes./li lia href=https://www.drupal.org/core/experimentalExperimental modules in core/a: optional alpha-stability modules shipped with the core package, which allow us to distribute new functionality, gather feedback, and iterate faster on the modules' planned path to stability./li /ol/p pNow that Drupal 8 has been released for about 10 months and Drupal 8.2 is scheduled to be released next week, we can look back at how this new process worked. Drupal 8.1 introduced two new experimental modules (the a href=http://buytaert.net/bigpipe-no-longer-just-for-the-top-50-websitesBigPipe module/a and a user interface for data migration), various API additions, and usability improvements like spell checking in CKEditor. Drupal 8.2 further stabilizes the migration system and introduces numerous experimental alpha features, including a href=http://buytaert.net/drupal-8-2-now-with-more-outside-insignificant usability improvements/a (i.e. a href=https://www.youtube.com/watch?v=Osbegr_d_GYblock placement/a and a href=https://www.youtube.com/watch?v=yqmAvOA8MS0block configuration/a), date range support, and advanced content moderation — among a long list of other stable and experimental improvements./p pIt's clear that these regular feature updates help us innovate faster — we can now add new capabilities to Drupal that previously would have required a new major version. With experimental modules, we can get features in users' hands early, get feedback quickly, and validate that we are implementing the right things. And with the scheduled release cycle, we can deliver these improvements more frequently and more predictably. In aggregate, this enables us to innovate continuously; we can bring more value to our users in less time in a sustainable manner, and we can engage more developers to contribute to core./p pIt is exciting to see how Drupal 8 transformed our capabilities to continually innovate with core, and I'm looking forward to seeing what we accomplish next! It also raises questions about what this means for Drupal 9 — I'll cover that in a future blog post./p/div/div/div

Drupal Blog: The transformation of Drupal 8 for continuous innovation

Wed, 09/28/2016 - 09:00
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpema href=http://buytaert.net/the-transformation-of-drupal-8-for-continuous-innovation rel=nofollowRepublished from buytaert.net/a./em/p pIn the past, after every major release of Drupal, most innovation would shift to two areas: (1) contributed modules for the current release, and (2) core development work on the next major release of Drupal. This innovation model was the direct result of several long-standing policies, including a href=http://buytaert.net/backward-compatibility rel=nofollowour culture of breaking backward compatibility/a between major releases./p pIn many ways, this approach served us really well. It put strong emphasis on big architectural changes, for a cleaner, more modern, and more flexible codebase. The downsides were lengthy release cycles, a costly upgrade path, and low incentive for core contributors (as it could take years for their contribution to be available in production). Drupal 8's development was a great example of this; the a href=http://buytaert.net/why-the-big-architectural-changes-in-drupal-8 rel=nofollowarchitectural changes in Drupal 8/a really propelled Drupal's codebase to be more modern and flexible, but also came at the cost of four and a half years of development and a complex upgrade path./p pAs Drupal grows — in lines of code, number of contributed modules, and market adoption — it becomes harder and harder to rely purely on backward compatibility breaks for innovation. As a result, we decided to evolve our philosophy starting after the release of Drupal 8./p pThe only way to stay competitive is to have the best product and to help people adopt it more seamlessly. This means that we have to continue to be able to reinvent ourselves, but that we need to make the resulting changes less scary and easier to absorb. We decided that we wanted more frequent releases of Drupal, with new features, API additions, and an easy upgrade path./p pTo achieve these goals, we adopted three new practices:/p ollia href=http://semver.org/ rel=nofollowSemantic versioning/a: a emmajor.minor.patch/em versioning scheme that allows us to add significant, backwards-compatible improvements in minor releases like Drupal 8.1.0 and 8.2.0./li lia href=https://www.drupal.org/core/release-cycle-overview rel=nofollowScheduled releases/a: new minor releases are timed twice a year for predictability. To ensure quality, each of these minor releases gets its own beta releases and release candidates with strict guidelines on allowed changes./li lia href=https://www.drupal.org/core/experimental rel=nofollowExperimental modules in core/a: optional alpha-stability modules shipped with the core package, which allow us to distribute new functionality, gather feedback, and iterate faster on the modules' planned path to stability./li /olpNow that Drupal 8 has been released for about 10 months and Drupal 8.2 is scheduled to be released next week, we can look back at how this new process worked. Drupal 8.1 introduced two new experimental modules (the a href=http://buytaert.net/bigpipe-no-longer-just-for-the-top-50-websites rel=nofollowBigPipe module/a and a user interface for data migration), various API additions, and usability improvements like spell checking in CKEditor. Drupal 8.2 further stabilizes the migration system and introduces numerous experimental alpha features, including a href=http://buytaert.net/drupal-8-2-now-with-more-outside-in rel=nofollowsignificant usability improvements/a (i.e. a href=https://www.youtube.com/watch?v=Osbegr_d_GY rel=nofollowblock placement/a and a href=https://www.youtube.com/watch?v=yqmAvOA8MS0 rel=nofollowblock configuration/a), date range support, and advanced content moderation — among a long list of other stable and experimental improvements./p pIt's clear that these regular feature updates help us innovate faster — we can now add new capabilities to Drupal that previously would have required a new major version. With experimental modules, we can get features in users' hands early, get feedback quickly, and validate that we are implementing the right things. And with the scheduled release cycle, we can deliver these improvements more frequently and more predictably. In aggregate, this enables us to innovate continuously; we can bring more value to our users in less time in a sustainable manner, and we can engage more developers to contribute to core./p pIt is exciting to see how Drupal 8 transformed our capabilities to continually innovate with core, and I'm looking forward to seeing what we accomplish next! It also raises questions about what this means for Drupal 9 — I'll cover that in a future blog post./p/div/div/div

groups.drupal.org frontpage posts: Chris McCafferty (cilefen) as provisional committer

Wed, 09/28/2016 - 07:46
pWith Drupal 8 now adding a href=https://www.drupal.org/node/2785735new features/a on a a href=https://www.drupal.org/core/release-cycle-overviewregular release cycle/a, the Drupal 8 committers identified the need for additional release management. Today I am announcing that a href=https://www.drupal.org/u/cilefenChris McCafferty (cilefen)/a has accepted my invitation to be a href=https://www.drupal.org/contribute/core/maintainers#faq-provisionalprovisional Drupal 8 committer/a./p pChris is a United States-based web programmer at the a href=https://www.ias.eduInstitute for Advanced Study/a who has worked with Drupal and the Symfony framework for over four years. He is also a a href=https://groups.drupal.org/mentoringcore mentoring coordinator/a who has put in uncounted hours mentoring contributors in person and on IRC and has lead a href=https://www.drupal.org/node/2474049major issue triage/a sprints at DrupalCons in a href=http://xjmdrupal.org/blog/getting-d8-done-drupalcon-laLos Angeles/a and New Orleans. In addition, Chris spreads the word about Drupal by mentoring at other events, such as a href=http://princeton.openhatch.orgOpenHatch Princeton/a./p pChris makes significant contributions to a wide variety of Drupal core issues. If you have worked in the issue queue in the last few years, you have probably interacted with Chris on topics ranging from front-end to the testing frameworks. He has the attitude and skills needed to foster collaboration among the talented contributors in the Drupal community and to continue releasing Drupal on time. Please join me in welcoming Chris./p

PreviousNext: Why project managers need to lose control

Wed, 09/28/2016 - 03:39
pBeing accountable for the planning, execution, and delivery of a project is demanding. Managing people, facilitating communication, resolving conflict, and mitigating risk are prerequisites to completing on schedule, and within an agreed budget. Add to this the often unpredictable nature of these factors and it's little wonder that project managers feel a great burden of responsibility./p span property=dc:title content=Why project managers need to lose control class=rdf-meta element-hidden/span

KnackForge: Drupal form's #tree option

Tue, 09/27/2016 - 19:08
div class=blog_posts-item itemprop=blogPost itemscope=itemscope itemtype=http://schema.org/BlogPosting article class=post is-excerpt post_excerptdiv class=post-row post_excerpt_cover-wrapper div class=post_cover is-excerpt post_excerpt_cover img src=https://knackforge.com/themes/custom/knackforge_d8_v1/img/blog-header.jpg alt=knackforge blog class=post_cover-image post-cover-image-default /span class=post_excerpt_cover-content span class=post_avatar itemprop=image article typeof=schema:Person about=https://knackforge.com/vannia class=profilediv class=field field--name-user-picture field--type-image field--label-hidden field__item a href=https://knackforge.com/vanniaimg src=https://knackforge.com/sites/default/files/styles/thumbnail/public/pictures/picture-5-1437977585.jpg?itok=secROf9E width=100 height=100 alt=Profile picture for user vannia typeof=foaf:Image class=image-style-thumbnail //a /div /article/spanspan class=post_cover-info/span /span span class=post_excerpt_cover-triangle/span /div /div div class=post-row has-padding has-no_bottom_padding h2 class=post-title itemprop=name headlinea href=https://knackforge.com/blog/vannia/drupal-forms-tree-optionspan class=field field--name-title field--type-string field--label-hiddenDrupal form's #tree option/span /a/h2 div class=post_meta div class=post_meta-author itemprop=author itemscope= itemtype=http://schema.org/Person pby strongspan class=kf-blue itemprop=name span class=field field--name-uid field--type-entity-reference field--label-hiddena title=View blogs by vannia. href=https://knackforge.com/blog/vannia lang= about=https://knackforge.com/vannia typeof=schema:Person property=schema:name datatype= itemprop=url rel=author class=username xml:lang=vannia/a/span /span/strong - time itemprop=datePublished Sep 27, 2016 span class=comment_counti class=fa fa-comments/i 0 Comments /span /time/p /div /div /div div class=post-row post-tags list-inline itemprop=tags div class=field field--name-field-blog-tag field--type-entity-reference field--label-above div class=field__labelTag(s)/div div class=field__items div class=field__itema href=https://knackforge.com/tags/form-api hreflang=enForm API/a/div div class=field__itema href=https://knackforge.com/tags/drupal-planet hreflang=enDrupal planet/a/div /div /div /div div class=kf-clear-both/div article class=post_excerpt_contentdiv class=content_body is-small itemprop=articleBody p /pdiv class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itempThere may be a need to name the form elements in an array structure how the form is built. You can see this in Ubercart checkout pane form's input elements. This is very useful when one has a large multi-part form which can be grouped easily by their POST content's array format./p pre Eg: panes[delivery][delivery_first_name]/pre pA simple flag on you $form construct array will do the trick. It's the #tree option. For whichever elements you set this #tree option, the element's children will be named with full reference to its parents./p/div a href=https://knackforge.com/blog/vannia/drupal-forms-tree-option class=continue-reading kf-blueContinue reading →/a /div /article/article/div

Nuvole: Configuration Management: Theory and Practice

Tue, 09/27/2016 - 18:23
div class=field field-name-field-blog-subtitle field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item evenOur presentation at DrupalCon Dublin 2016/div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpDevelopers often want to use Configuration Management outside its intended use case. New workflows and practices have to be established./p pWe've just presented a gallery of problems and solutions at DrupalCon Dublin 2016./p pThe room was packed, and many people were denied admission for security reasons. For them, and for those who didn't manage to come to this DrupalCon, we are making the full presentation available here:/p ullia href=http://nuvole.org/sites/default/files/Configuration-Management-Theory-and-Practice.pdfPDF slides/a for download/li lia href=https://www.youtube.com/watch?v=57t_CS2wbHIFull video of the presentation/a/li /uldiv align=center iframe width=640 height=360 src=https://www.youtube.com/embed/57t_CS2wbHI frameborder=0 allowfullscreen=/iframe /div /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 evenDrupal Planet/divdiv class=field-item oddDrupal 8/divdiv class=field-item evenDrupalCon/div/div/divdiv class=field field-name-field-blog-attachments field-type-file field-label-abovediv class=field-labelAttachments:nbsp;/divdiv class=field-itemsdiv class=field-item evenspan class=fileimg class=file-icon alt= title=application/pdf src=/modules/file/icons/application-pdf.png / a href=http://nuvole.org/sites/default/files/Configuration-Management-Theory-and-Practice.pdf type=application/pdf; length=2530235Configuration-Management-Theory-and-Practice.pdf/a/span/div/div/div

Chromatic: Drupal Code Standards: The t() Function

Tue, 09/27/2016 - 16:16
pThis is the fifth post in a series about coding standards. In this post we’ll talk about how to use translation functions in both Drupal 7 and 8. This is so essential that it deserves its own post!/p pOther posts in this series:/p ollia href=https://chromatichq.com/blog/code-standards-what-are-theyDrupal Code Standards: What Are They?/a/li lia href=https://chromatichq.com/blog/code-standards-how-do-we-implement-themDrupal Code Standards: How Do We Implement Them?/a/li lia href=https://chromatichq.com/blog/code-standards-formattingDrupal Code Standards: Formatting/a/li lia href=https://chromatichq.com/blog/code-standards-documentationDrupal Code Standards: Documentation/a/li lia href=https://chromatichq.com/blog/drupal-code-standards-t-functionDrupal Code Standards: The t() function/a/li liDrupal Code Standards: Object Oriented Coding Drupal 8/li liDrupal Code Standards: Twig in Drupal 8/li /olh3What is the t() function?/h3 pThe codet()/code function allows for localization and translates a given string to a given language at run-time. When coding, you wrap your user-facing strings in this function so that they can be translated./p h3When do I use it?/h3 pIn just about every user-facing string. This ensures that your site can be localized! When in doubt, translate everything. You might be thinking oh, this string will never need to be translated, but 2 years later, when you’re trying to find this string that’s showing up untranslated on the site, and your shareholders want it changed, you’ll be much happier if it’s already ready to translate. I may be speaking from a href=https://chromatichq.com/blog/theatermania-lessons-learned-localizationexperience/a here./p h3What does it do?/h3 pFirstly, codet()/code translates text at runtime if you have more than one language enabled. Depending on which placeholder you use, it runs different sanitization functions./p pThe t() function takes 3 parameters, 2 of which are optional. The first is the string to be translated, the second is the array of replacements, if any. The third is an array of options. From Drupal.org:/p blockquote p$options: An associative array of additional options, with the following elements: * 'langcode' (defaults to the current language): The language code to translate to a language other than what is used to display the page. * 'context' (defaults to the empty context): A string giving the context that the source string belongs to./p /blockquote pString context (or translation context) is a way to organize translations when words have 1 to many translations. From the handbook page:/p blockquote pstrongWhat is string context?/strong/p pWhen translating Drupal’s user interface to other languages, each original (English) string can have only one translation. This is a problem when one English word has several meanings, like Order, which can mean the order of elements in a list, to order something in a shop, or an order someone has placed in a shop. For many languages, the string Order needs a different translation for each of these meanings./p /blockquote pYou can read more about string context a href=https://www.drupal.org/node/1369936here/a./p h3Using Placeholders/h3 pPlaceholders come from the a href=https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/format_string/7.xcodeformat_string/code function/a, which is called by codet()/code./p pThe most common placeholder is probably code@variable/code. This placeholder runs a href=https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/check_plain/7.xcodecheck_plain()/code/a on the text before replacing it. Never pass a variable through codet()/code directly - only string literals. The short explanation for this is that the string to be translated needs to be available at runtime, and a variable may not be available and may change its value. You can find an in-depth explanation a href=http://drupal.stackexchange.com/questions/9362/is-it-always-bad-to-pass-a-variable-through-there/a./p pYou use a placeholder to insert a value into the translated text, like in this example from the a href=https://www.drupal.org/project/advanced_forumAdvanced Forum contrib module/a:/p precode$block-title = t( 'Most active poster in @forum', array('@forum' = $forum-name) ); /code/pre pYou may also use code%variable/code, which runs a href=https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/drupal_placeholder/7.xcodedrupal_placeholder()/code/a on the text, which both escapes the text and formats it as emphasized text./p pIn Drupal 7, code!variable/code inserts your value exactly as is, without running any sanitization functions, so you would never want to use this on user-entered text, and only on text that has already been properly escaped./p pIn Drupal 8, code!variable/code is deprecated, replaced by code:variable/code./p pIn Drupal 8, code:variable/code is escaped with a href=https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Component%21Utility%21Html.php/function/Html%3A%3Aescape/8.2.xcode\Drupal\Component\Utility\Html::escape()/code/a and filtered for dangerous protocols using a href=https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Component%21Utility%21UrlHelper.php/function/UrlHelper%3A%3AstripDangerousProtocols/8.2.xcodeUrlHelper::stripDangerousProtocols()/code/a./p pSo now you might be wondering what to do in Drupal 8 if you do not want to escape your text at all, now that the code!variable/code placeholder is gone. There is a way! In the a href=https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Component%21Render%21FormattableMarkup.php/function/FormattableMarkup%3A%3AplaceholderFormat/8.2.xcodeplaceholderFormat()/code/a function, there’s a default case. Let’s take a look at the code:/p precodedefault: // We do not trigger an error for placeholder that start with an // alphabetic character. if (!ctype_alpha($key[0])) { // We trigger an error as we may want to introduce new placeholders // in the future without breaking backward compatibility. trigger_error('Invalid placeholder (' . $key . ') in string: ' . $string, E_USER_ERROR); } break; } /code/pre pSo if we use a placeholder that starts with an alphabetic character, it won’t trigger an error, but it also won’t trigger any actions. You can use any alphabetic character(s) you like for your dummy placeholder. Something easily identifiable, like codeTT/code is a good idea - and comment your code!/p h3When don’t I use it?/h3 pIn Drupal 7, there are some instances where codet()/code is not available./p pDuring the installation phase, codet()/code isn’t available, so you must use a href=https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/get_t/7.xcodeget_t()/code/a. You can do something like this:/p precode$t = get_t(); $t(‘my string’); /code/pre pTranslation is also not used inside of codehook_schema()/code or codehook_menu()/code./p pIn Drupal 8, a href=https://www.drupal.org/node/2021435codet()/code is always available/a, so you can always use it./p h3t() and links/h3 pThere are a lot of times that you may want to translate the text in a link - there are lots of ways to do this, and most of them aren’t the best. Here are some bad examples, and a good (and simple!) one./p pBad:/p pre code class=code-smell $do_not_do_this = t('Do not ').a href=https://api.drupal.org . t('link ') . /a .t('to something like this.'); /code /pre pre code class=code-smell $bad = t('This is not a good way to make a @link.', array('@link' = 'a href=https://api.drupal.org'. t('link') .'/a')); /code /pre pre code class=code-smell $dreadful = t('This is a dreadful way to make a link pointing to the a href=https://api.drupal.orgDrupal API t() documentation/a.'); /code /pre pre code class=code-smell $awful = t('This may seem good, but it’s an awful way to link to this @doc.', array('@doc = l(t(‘documentation'), 'https://api.drupal.org')); /code /pre pGood:/p precode$good = t('Read about the t() function a href=@apihere/a.', array('@api' = 'https://api.drupal.org')); /code/pre pHere’s an example from Drupal 8 Core, in the function a href=https://api.drupal.org/api/drupal/core%21includes%21install.core.inc/function/install_check_translations/8.2.xcodeinstall_check_translations()/code/a in codeinstall.core.inc/code:/p precode// If the translations directory is not readable, throw an error. if (!$readable) { $requirements['translations directory readable'] = array( 'title' = t('Translations directory'), 'value' = t('The translations directory is not readable.'), 'severity' = REQUIREMENT_ERROR, 'description' = t('The installer requires read permissions to %translations_directory at all times. The a href=:handbook_urlwebhosting issues/a documentation section offers help on this and other topics.', array('%translations_directory' = $translations_directory, ':handbook_url' = 'https://www.drupal.org/server-permissions')), ); } /code/pre pIn this code you can see that the codea href/code tags are inside the codet()/code function, and the url is escaped using the code:variable/code placeholder./p pIt’s okay to put a little html in your t() function to simplify like this. The element can easily be moved around if the translation requires it, without needing to know any code other than which word is being linked. Our next section will talk more about keeping your text translatable./p h3Translation Best Practices/h3 pWriting your code and content to be translatable isn’t just a best practice, it may very well be used to actually translate your site, so sometimes you need to think from the point of view of a translator. Try not to abstract out pieces of content too much. Here’s an example. In English, you may have a blog title Bob’s Homepage. You could want to abstract that into the following:/p pre code class=code-smell $username . ‘s . t(‘Homepage.’); /code /pre pWhat’s the problem here? In other languages, this phrase may be re-arranged. For example, in French or Spanish, it would be Homepage de Bob. The above example would require a translator to change code. We don’t want that. So we write this:/p precodet(‘@user’s Homepage.’, array(‘@username’ = ‘Bob’)); /code/pre pNow, this string can easily be changed to:/p precodet(‘Homepage de @user.’, array(‘@username’ = ‘Bob’)); /code/pre h3Concatenation Dos and Don’ts/h3 pIn the example in the previous section, we showed where concatenating a translated string with another string can make trouble. There are some other things you want to avoid./p pDon’t concatenate strings within codet()/code. For example, don’t do this:/p pre code class=code-smell t(‘Don’t try to join’ . ‘ ‘ . @num . ‘ ‘ . ‘strings.’, array(‘@num’ = ‘multiple’)); /code /pre pEven if you think you have to, there is a better way./p pAnd don’t concatenate codet()/code strings and variables - you don’t need to!/p pDon’t do this:/p pre code class=code-smell t(‘This is a complicated way to join ’) . $mystring . t(‘ and translated strings’); /code /pre pAdditionally, the above would give you a codesniffer error because you should not have leading or trailing whitespace in a translatable string./p pDo this:/p precodet(‘This is a simple way to join @mystring and translated strings’, array(‘@mystring’ = ‘whatever my string is’)); /code/pre pThis is how the codet()/code function is designed to be used! Going around it defeats the purpose of using it at all./p h3Drupal 8 Twig/h3 pIn Drupal 8, the essential function and its use are the same. Wrap text in your module code in codet(‘’)/code, with the same optional placeholder and options arrays. As noted in the placeholders section, code!variable/code has been deprecated and replaced with code:variable/code./p pWith Drupal 8, we have the introduction of the Twig templating engine, and with that, new ways format our text for translation./p pThe simplest way is to pipe your text through code|t/code. Here’s an example from the a href=https://www.drupal.org/project/develDevel contrib module/a:/p precodethead tr th{{ 'Name'|t }}/th th{{ 'Path'|t }}/th th{{ 'Info file'|t }}/th /tr /thead /code/pre pIn the above code, we can see the text in the table headers piped into the translation function, just as it would be passed through codet()/code in Drupal 7. You can also use code|trans/code interchangeably with code|t/code. You can use a code{% trans %}/code block to translate a larger chunk of text or use placeholders. These blocks can also handle logic for plurals. Here’s an example from Drupal 8 Core:/p precodeh3 class=views-ui-view-title data-drupal-selector=views-table-filter-text-source{{ view.label }}/h3 div class=views-ui-view-displays {% if displays %} {% trans %} Display {% plural displays %} Displays {% endtrans %}: em{{ displays|safe_join(', ') }}/em {% else %} {{ 'None'|t }} {% endif %} /div /code/pre pHere we can see that the template appropriately shows the translated text for “Display” or the plural, “Displays.”/p pa href=https://www.drupal.org/developing/api/8/localizationFrom Drupal.org/a:/p blockquote pValues are escaped by default. The 'passthrough' filter can be used to skip escaping. The 'placeholder' filter can be used to form a placeholder. The default behavior is equivalent to @ in t(), while 'passthrough' matches ! and 'placeholder' matches %./p /blockquote pThis comes from Twig, and is not yet commonly used in Drupal, but its usage with placeholders is similar to codet()/code. Here’s an example from Drupal 8 Core:/p precode {% set includes = includes|join(', ') %} {% if disabled %} {{ 'Includes:'|t }} ul li {% trans %} Enabled: {{ includes|placeholder }} {% endtrans %} /li li {% set disabled = disabled|join(', ') %} {% trans %} Disabled: {{ disabled|placeholder }} {% endtrans %} /li /ul {% else %} {% trans %} Includes: {{ includes|placeholder }} {% endtrans %} {% endif %} /div /code/pre pIn the above code, we can see the use of the placeholder in Twig. The codeset/code lines set the placeholders to be used later in the code. The code|placeholder/code filter indicates that a replacement is to be made./p h3Wrapping Up/h3 pThis post has a lot of what emnot/em to do, but you’ll run into a lot of creatively incorrect code when it comes to translation, and now you’ll know it when you see it. Simple is best. Remember that this function exists to give translators a list of strings to translate, and you’ll be in the right frame of mind when assembling these strings to keep them flexible and translatable!/p pHave some questions/comments/concerns? Experience you’d like to share? Talk to us on Twitter: a href=https://twitter.com/ChromaticHQ@ChromaticHQ/a!/p pKeep an eye out for our next post in our Drupal Code Standards series, on Object Oriented programming in Drupal 8!/p

Acquia Developer Center Blog: How to Get Behind the Great Firewall of China

Tue, 09/27/2016 - 16:10
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/china_0.jpg?itok=v6v9yLkV width=140 height=85 alt=photo of earth title=photo of earth //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:encodedpWhether you’re outside China and trying to get in, or inside China and trying to get out, a well-known barrier sits between the Chinese internal network and the wider internet. The Great Firewall of China (防火长城) acts as a giant filter between the two networks, restricting access to external sites considered unsavory by the Chinese government./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

CTI Digital: DrupalCon Dublin 2016

Tue, 09/27/2016 - 14:36
div class=hs-featured-image-wrapper a href=https://www.ctidigital.com/blog/drupalcon-dublin-2016 title= class=hs-featured-image-link img src=http://cdn2.hubspot.net/hubfs/375563/SnakesandLadders-FloorGame.png alt=DrupalCon Dublin 2016 class=hs-featured-image style=width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0; /a /div pspan style=font-weight: 400;As always CTI Digital are sponsors of DrupalCon. Following the popularity of our huge Tag Cloud floor covering at Barcelona celebrating those who made Drupal 8 contributions, this time we’ve created a larger than life version of Snakes amp; Ladders./span/p img src=http://track.hubspot.com/__ptq.gif?a=375563amp;k=14amp;r=https%3A%2F%2Fwww.ctidigital.com%2Fblog%2Fdrupalcon-dublin-2016amp;bu=https%253A%252F%252Fwww.ctidigital.com%252Fblogamp;bvt=rss alt= width=1 height=1 style=min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important

Third Grove: SRI relaunches with new site design and content architecture to drive content marketing and lead generation

Tue, 09/27/2016 - 14:33
span property=schema:nameSRI relaunches with new site design and content architecture to drive content marketing and lead generation/span span rel=schema:authorspan lang= about=https://www.thirdandgrove.com/user/10 typeof=schema:Person property=schema:name datatype= xml:lang=tony/span/span span property=schema:dateCreated content=2016-09-27T12:33:56+00:00Tue, 09/27/2016 - 08:33/span

Attiks: Drupal and polymer

Tue, 09/27/2016 - 13:42
div class=field field-name-titleh2a href=/blog/drupal-and-polymerDrupal and polymer/a/h2/divdiv class=field field-name-post-date27-09 2016/divdiv class=field field-name-field-authora href=/peter-droogmansPeter Droogmans/a/divdiv class=field field-name-field-intropWhat if there were polymer elements for custom Drupal functionality/p /divdiv class=field field-name-node-linka href=/blog/drupal-and-polymer class=Read more/a/divdiv class=field field-name-field-imagesa href=/blog/drupal-and-polymerimg src=https://attiks.com/sites/attiks.com/files/styles/blog_800/public/blog/drupal_polymer.png width=800 height=451 alt= //a/div