Planet Drupal

Syndicate content
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 29 min ago

Mediacurrent: UX - Above the Fold amp; Scrolling

Wed, 08/20/2014 - 22:51
img typeof=foaf:Image src=http://www.mediacurrent.com/sites/default/files/styles/thumb_blog_spotlight/public/ux-scrolling-v1.3.png?itok=SJP554ti width=200 height=152 / pMore and more often I am asked, when putting together a a href=http://www.mediacurrent.com/ebooks/preparing-drupal-website-redesigndesign Drupal for a website/a, what is the importance of designing above the fold and whether or not that today’s users will scroll to read content./p

Drupal Association News: Drupal Association Values

Wed, 08/20/2014 - 19:54
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpimg alt= src=https://assoc.drupal.org/files/9289616655_cf49b90575_m.jpg style=width: 240px; height: 179px; border-width: 0px; border-style: solid; margin: 10px; float: left; /In my experience as an organization leader one of the most important tools in my toolbox has always been my personal values. It's been my experience that even when data points in one direction, and best practices say you should approach the problem in this way, it's always been my values that help me make the best decisions as an individual. And the truth is, there are very rarely any decisions that are 100% clear cut. In almost every decision, some amount of judegment is required. /p pThat's why I believe so strongly in defining values for the organizations I work for. When everyone is working from a shared sense of values, we're making decisions - even big giant judgement calls - from the same perspective. To that end, we spent some time this year working with the board and staff to develop a values statement for the Drupal Association./p pWe started in a board retreat, brainstorming the implicit (though not documented) values of the Association and the larger Drupal Community. The board ranked their favorites, and then we created a committee of board and staff to draft some language. Those initial values statements were vetted by both the entire Association staff and the full board, and then additional edits were made. Here's the result of that process:/p pThe Drupal Association shares the values of our community, our staff, and open source projects:/p ulli strongTEAMWORK: /strongWe add value to the Drupal community by helping each other solve problems to create quality human and digital experiences./li li strongCOMMUNICATION:/strong We value communication. We seek community participation. We are open and transparent./li li strongACTION:/strong We act decisively and proactively, embracing what we learn from both our successes and our mistakes./li li strongRESPECT: /strongWe respect and value inclusivity in our global community and strive to recognize, understand, and respond to its needs./li li strongFUN:/strong We create environments that embrace humor resulting in fun, positive, supportive and safe interactions./li /ulpTo be clear, these are the values we're defining for our staff. We're not trying to impose these values on the larger community. However, we do hope they reflect the values you feel are important in the larger Drupal community as well. We also want to recognize that writing down the words is one thing, and living up to them is something else. We intend to live these values in all our work. /p pNow it's your turn. The values are set by the board and staff, but we want to make sure we know what you think./p pemFlickr photo: a href=https://www.flickr.com/photos/howardlake/9289616655/in/photolist-f9THop-68wJ8d-5ZSvJo-7wMLPp-aS5Nt6-fmpfDQ-4Ekx8d-7jTmr5-ckkMrE-8S4XnF-boJWq1-8UkC4u-7VHvh8-5EdJi3-CQU9c-7rPiMM-fAkRJ4-cYiF8W-7KYYbt-hcTYDP-4N5j7o-iPLzh1-eHtEYr-7rPjDx-hcSJB4-o2E6H-iPJPd9-8foV8J-iPGQ8R-6Viu44-9Em9tU-73APuw-jMZfai-8EqL2E-fmphAN-8VN8kH-eouxKn-iPJ7B8-eHzTA5-7AUsoL-3TjtGY-fAkQVP-eaNZdQ-fcwjsA-oCLuwf-iPHYie-eb5XQe-by8t9b-hbiEoq-fma5UpHoward Lake/a/em/p /div/div/div

Nuvole: Git workflow for managing Drupal 8 configuration

Wed, 08/20/2014 - 19:30
div class=field field-name-field-blog-subtitle field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item evenThe D8 way to replace quot;features-updatequot; and quot;features-revert-allquot;./div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpemThis is a preview of Nuvole's training at DrupalCon Amsterdam: a href=https://amsterdam2014.drupal.org/node/2808An Effective Development Workflow in Drupal 8/a./em/p pOne of the new key features of Drupal 8 is the possibility to a href=http://nuvole.org/blog/2014/jun/06/configuration-management-drupal-7-drupal-8deal with configuration in code/a. Since configuration is now in text files, we want to put it under version control in Git to enjoy the many advantages this brings: comparing configuration states, keeping a history of configuration changes and even moving configuration between sites./p h2Setup/h2 pWe will assume that you have a development version of Drupal 8, git and drush available on your system. You can set up your Drupal git repository in several ways. One of them is outlined in a href=https://www.drupal.org/node/803746Building a Drupal site with Git/a on drupal.org. The document is written for Drupal 7, but can easily be adapted for Drupal 8.br / Another, probably simpler method is to simply download a Drupal 8 (alpha) release and initialise a new repository with it./p pIn either case you should copy codeexample.gitignore/code to code.gitignore/code and adapt it to your needs to prevent codesettings.php/code and the files directory from being versioned./p pThe next step is to make sure that a configuration directory is versionable. By default Drupal 8 will place the staging directory under codesites/default/files/code and it is considered a good practice to not version that location, but an alternative location can easily be specified in codesettings.php/code:/p div class=codeblockcodespan style=color: #000000span style=color: #0000BBlt;?phpbr /$config_directories/spanspan style=color: #007700[/spanspan style=color: #DD0000'staging'/spanspan style=color: #007700] = /spanspan style=color: #DD0000'config/staging'/spanspan style=color: #007700;br //spanspan style=color: #0000BB?gt;/span/span/code/div pIt is also possible and even advisable to specify a directory outside of the web root of course. In that case you would put the parent directory of your web root where drupal is under version control and use code../config/staging/code. We will later see that it is also possible to add more directories and keys to the code$config_directories/code variable./p pBecause the configuration management of Drupal 8 only works between different instances of the strongsame/strong site, the different instances of the site need to be cloned. Cloning a Drupal 8 site is done the same way as cloning a Drupal 7 site. Just dump the database of the site to clone and import it in the other environment./p h2Development/h2 pAfter cloning your site you can go ahead and start configuring your site.br / Once the part of the configuration you were working on is done the whole configuration of the site needs to be exported./p div class=codeblockcodelocal$ drush config-export stagingbr /The current contents of your export directory (config/staging) will be deleted. (y/n): ybr /Configuration successfully exported to config/staging./code/div pNext, you need to merge the work of other developers. In some cases it may be enough to simply use codegit pull/code, otherwise the configuration has to be merged after it has been committed:/p ullipAdd all configuration to git and commit it./p/li lipUse git pull (or git fetch and git merge) and resolve any conflicts if necessary./p/li /ulpGit can merge changes in text files quite well, but git does not know about Drupal and its yaml format for configuration. It is, therefore, important to verify that the merged configuration makes sense and is valid. In most cases it will probably not be an issue and just work, but it is always better to be vigilant and be on the safe side. So, after merging, you should always run:/p div class=codeblockcodelocal$ drush config-import staging/code/div pIf the import went smooth you can push the configuration to the remote repository. Otherwise the configuration needs to be fixed first./p h2Deployment/h2 pThe simplest case is when the configuration on the production site has not been changed. There is an interesting a href=https://www.drupal.org/project/config_readonlyConfiguration Read-only mode/a module that can enforce this./p pIf the configuration did not change deploying the new configuration is simply:/p div class=codeblockcoderemote$ git pullbr /remote$ drush config-import staging/code/div pIf the configuration changes on the production site, it is best to frequently export the live configuration into a dedicated directory.br / Add a new config directory in codesettings.php/code:/p div class=codeblockcodespan style=color: #000000span style=color: #0000BBlt;?phpbr /$config_directories/spanspan style=color: #007700[/spanspan style=color: #DD0000'to_dev'/spanspan style=color: #007700] = /spanspan style=color: #DD0000'config/to_dev'/spanspan style=color: #007700;br //spanspan style=color: #0000BB?gt;/span/span/code/div div class=codeblockcoderemote$ drush config-export to_dev -y/code/div pAdd, commit and push it to the production branch so that the developers can deal with it and integrate the changes into the configuration which will be deployed next. Exporting the configuration into a dedicated directory rather than the staging directory avoids the danger that merge conflicts happen on the production site. The deployment to the production site should be kept hassle free, so it should always be safe to pull from git and import the configuration without the risk of a conflict./p h2Important notes/h2 pIt is important to emfirst/em strongexport/strong the configuration changes and emthen/em strongpull/strong changes from collaborators because the exporting action wipes the directory and re-populates it with the active configuration. Since everything is in git, you can recover from such a mistake without much difficulty but why make your life complicated./p pstrongImport/strong the configuration embefore/em strongpushing/strong it to the remote repository. Broken configuration breaks the site, be a nice co-worker./p pemGit doesn't solve everything!/em Imagine Alice and Bob start with the same site, it has one content type and among others an attachment field. Alice deletes the attachment field, exports the configuration and pushes it to git. In the meantime, Bob creates a new content type and adds the attachment field to it. Bob exports his configuration, merges Alice's configuration changes without a problem (the changes are separate files) and imports the merged configuration. The attentive reader sees where this leads. The commit of Alice deletes the field storage for the attachment field, but Bob added a field instance which depends on the field storage. The exported configuration now contains a field instance that can't be imported.br / At the time of writing, drush will signal a successful import but doesn't actually import it while the UI is more helpful and complains that the attachment field instance was not imported due to the missing field storage./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 evenDrupal Planet, Drupal 8, Code Driven Development/div/div/divdiv class=field field-name-field-blog-image field-type-image field-label-abovediv class=field-labelImage:nbsp;/divdiv class=field-itemsdiv class=field-item evenimg src=http://nuvole.org/sites/default/files/default_images/nuvole-square-logo.png alt= //div/div/div

Acquia: Drupal 8 Empowerment through Drupal

Wed, 08/20/2014 - 09:35
div class=field field-name-body field-type-text-with-summary field-label-hidden div class=field-items div property=content:encoded class=field-item evenpPart 1 of a 2-part conversation with a href=/about-us/team/angela-byronAngie Byron/a in front of the cameras at NYC Camp 2014. In this part of our conversation we go over some of the inspiring and thought-provoking ideas we encountered there, and then jump to some of the benefits to users of the technical improvements built into Drupal 8./p /div /div /div span property=dc:title content=Drupal 8 amp; Empowerment through Drupal class=rdf-meta/span

Kristian Polso: How to create Drupal Commerce products programmatically

Wed, 08/20/2014 - 08:00
Sometimes you just need to get your hands dirty and start adding Drupal Commerce products programmatically. Luckily that is not that hard of an thing to do.

Modules Unraveled: 115 Drupal Core Gittip Team with Jennifer Hodgdon, Bojhan Somers Alex Pott and Cathy Theys - Modules Unraveled Podcast

Wed, 08/20/2014 - 07:00
div class=field field--name-field-image field--type-image field--label-hiddendiv class=field__itemsdiv class=field__item evenimg typeof=foaf:Image src=http://modulesunraveled.com/sites/default/files/styles/podcast_default/public/podcast/image/Episode%20115%20Guests.png?itok=lajPtv9I width=350 height=350 alt= //div/div/divspan class=submitted-byPublished: Wed, 08/20/14/spandiv class=field field--name-field-podcast-file field--type-file field--label-hiddendiv class=field__itemsdiv class=field__item evendiv class=mediaelement-audioaudio src=http://traffic.libsyn.com/modulesunraveled/115_Drupal_Core_Gittip_Team_with_Jennifer_Hodgdon_Bojhan_Somers_Alex_Pott_and_Cathy_Theys_-_Modules_Unraveled_Podcast.mp3 class=mediaelement-formatter-identifier-1408519635-0 controls=controls /audiodiv class=mediaelement-download-linka href=http://traffic.libsyn.com/modulesunraveled/115_Drupal_Core_Gittip_Team_with_Jennifer_Hodgdon_Bojhan_Somers_Alex_Pott_and_Cathy_Theys_-_Modules_Unraveled_Podcast.mp3Download this episode/a/div/div/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:encodedh2GitTip/h2 ulli pWhat is GitTip? How does it work?/p /li li pWhat is a GitTip team?/p /li /ulh2Drupal Core GitTip Team/h2 ulli pHow did the Drupal Core team come about? What prompted it’s genesis?/p /li li pWho is the organizer of the Drupal Core team, and who is benefiting from it?br / 19 members, Alex and Cathy are administering the group, a couple are on vacation.br / 16 others are taking money./p /li li pOn the GitTip page it says your goal is $5,000 US/week. What would that cover?br / Cathy: This week is the first week that we will not be able to fund the modest goal of giving people $64/week. The past few weeks we have been paying out $700. We have now eaten all our balance and have only $350 coming in this week.br / The $5k goal is what a guess at funding 6 people about ¼ time./p /li li pWhat have you all been working on lately as a result of this funding?br / Cathy: tips are for work already done, so… I'm not sure. Maybe it motivates future work, or planning to be able to do future work? Jen? Bojhan?br / What has this funding enabled you to do?/p /li /ul/div/div/divdiv class=field field--name-field-items-mentioned field--type-link-field field--label-abovediv class=field__labelEpisode Links:nbsp;/divdiv class=field__itemsdiv class=field__item evena href=https://www.gittip.com/DrupalCoreGittipTeam/ rel=nofollow target=_blankGitTip Team Page/a/divdiv class=field__item odda href=https://www.gittip.com/DrupalCoreGittipTeam/members/ rel=nofollow target=_blankGitTip Members/a/divdiv class=field__item evena href=http://yesct.net/drupal-core-gittip-team rel=nofollow target=_blankDrupal Core Gittip Team FAQ/a/divdiv class=field__item odda href=https://www.drupal.org/user/87969 rel=nofollow target=_blankBojhan on drupal.org/a/divdiv class=field__item evena href=http://twitter.com/bojhan rel=nofollow target=_blankBojhan on Twitter/a/divdiv class=field__item odda href=https://www.drupal.org/u/jhodgdon rel=nofollow target=_blankJennifer on drupal.org/a/divdiv class=field__item evena href=http://twitter.com/poplarware rel=nofollow target=_blankJennifer on Twitter/a/divdiv class=field__item odda href=http://poplarware.com rel=nofollow target=_blankJennifer’s company site/a/divdiv class=field__item evena href=https://www.drupal.org/u/yesct rel=nofollow target=_blankCathy on drupal.org/a/divdiv class=field__item odda href=https://twitter.com/YesCT rel=nofollow target=_blankCathy on Twitter/a/divdiv class=field__item evena href=https://www.drupal.org/u/alexpott rel=nofollow target=_blankAlex on drupal.org/a/divdiv class=field__item odda href=https://twitter.com/alexpott rel=nofollow target=_blankAlex on Twitter/a/divdiv class=field__item evena href=https://amsterdam2014.drupal.org/session/funding-drupal-core rel=nofollow target=_blankCore Conversation at Amsterdam/a/divdiv class=field__item odda href=https://www.drupal.org/governance/drupalorg-working-groups rel=nofollow target=_blankDrupal.org Working Groups/a/divdiv class=field__item evena href=http://buytaert.net/the-investment-case-for-employing-a-drupal-core-contributor rel=nofollow target=_blankDries call for many separate companies to hire core developers/a/divdiv class=field__item odda href=http://poplarware.com/news/freelancer-contrib rel=nofollow target=_blankJennifer’s case for core developers on staff at small shops/a/divdiv class=field__item evena href=http://chapterthree.com/blog/joining-chapter-three rel=nofollow target=_blankAlex Pott hired by Chapter Three/a/divdiv class=field__item odda href=http://yesct.net/blackmesh rel=nofollow target=_blankCathy hired by BlackMesh/a/divdiv class=field__item evena href=https://github.com/gittip/www.gittip.com/issues/1660 rel=nofollow target=_blankGittip issue to change how team funds are split/a/div/div/divdiv class=field field--name-field-tags field--type-taxonomy-term-reference field--label-abovediv class=field__labelTags:nbsp;/divdiv class=field__itemsdiv class=field__item evena href=/tags/drupal-8 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal 8/a/divdiv class=field__item odda href=/tags/drupal-core typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal Core/a/divdiv class=field__item evena href=/planet-drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=planet-drupal/a/div/div/div

PreviousNext: Drupal 8 Now: PHPUnit tests in Drupal 7

Wed, 08/20/2014 - 06:10
div class=field field-name-field-summary field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item even pDrupal 8 comes with built-in support for PHP Unit for unit-testing, the industry standard for unit-tests./p pBut that doesn't mean you can't use PHP Unit for your testing and CI in Drupal 7, if you structure your code well./p pRead on to find out what you need to do to use PHP Unit in Drupal 7./p /div/div/divspan property=dc:title content=Drupal 8 Now: PHPUnit tests in Drupal 7 class=rdf-meta/span

Phase2: Profiling Drupal Performance with PHPStorm and Xdebug

Tue, 08/19/2014 - 22:34
pProfiling is about measuring the performance of PHP code, at least when we are talking about Drupal and a href=http://xdebug.org/Xdebug/a. You might need to profile your site or app if you work at a firm where performance is highly scrutinized, or if you are having problems getting a migration to complete. Whatever the reason, if you have been tasked with analyzing the performance of your Drupal codebase, profiling is one great way of doing so. Note that Xdebug’s profiler does not track memory usage. If you want to know more about memory performance tracking you should check out Xdebug’s a href=http://xdebug.org/docs/execution_traceexecution trace features/a./p h3emAlright then lets get started! /em/h3 pWhoa there cowboy! First you need to know that the act of profiling your code is itself taking resources to accomplish. The more work your code does, the more information that the profiler stores; file sizes for these logs can get very big very quickly. You have been warned. To get going with profiling Drupal in PHPStorm and Xdebug you need:/p ul lia title=PHPStorm href=http://www.jetbrains.com/phpstorm/ target=_blankPHPStorm/a/li liPHP with the a title=Xdebug href=http://xdebug.org/ target=_blankXdebug/a extension/li liA website running on Drupal./li /ul pTo setup your environment, edit your php.ini file and add the following lines:/ppre class=crayon-plain-tagxdebug.profiler_output_dir=/tmp/profiler/ xdebug.profiler_enable=on xdebug.profiler_trigger=on xdebug.profiler_append=on/prepDepending on what you are testing and how, you may want to adjust the settings for your site. For instance, if you are using Drush to run a migration, you can’t start the profiler on-demand, and that affects the profiler_trigger setting. For my dev site I used the php.ini config you see above and simply added a URL parameter “XDEBUG_PROFILE=on” to my site’s url; this starts Xdebug profiling from the browser./p pTo give you an idea of what is possible, lets profile the work required to view a simple Drupal node. To profile the node view I visited span style=text-decoration: underline;http://profiler.loc/node/48581?XDEBUG_PROFILE=on in my browser/span. I didn#8217;t see any flashing lights or hear bells and whistles, but I should have a binary file that PHPStorm can inspect, located in the path I setup in my php.ini profiler_output_dir directive./p p style=text-align: center;a href=http://www.phase2technology.com/wp-content/uploads/2015/08/profiler_url.pngimg class=wp-image-8401 aligncenter alt=profiler_url src=http://www.phase2technology.com/wp-content/uploads/2015/08/profiler_url-1024x100.png width=608 height=59 //a/p pFinally lets look at all of our hard work! In PHPStorm navigate to Tools-gt;Analyze Xdebug Profile Snapshot. Browse to your profiler output directory and you should see at least one cachgrind.out.%p file (%p refers to the process id the script used). Open the file with the largest process id appended to the end of the filename./p p style=text-align: center;img class=size-medium wp-image-8390 aligncenter alt=PHPStorm Cachgrind Picker src=http://www.phase2technology.com/wp-content/uploads/2015/08/Screen-Shot-2014-08-18-at-6.44.44-PM-266x300.png width=266 height=300 //p pWe are then greeted with a new tab showing the results of the profiler./p p style=text-align: center;a href=http://www.phase2technology.com/wp-content/uploads/2015/08/Screen-Shot-2014-08-18-at-6.46.02-PM.pngimg class=wp-image-8391 aligncenter alt=PHPStorm Xdebug Profiler src=http://www.phase2technology.com/wp-content/uploads/2015/08/Screen-Shot-2014-08-18-at-6.46.02-PM-1024x560.png width=655 height=358 //a/p p style=text-align: center; p style=text-align: left;The output shows us the functions called, how many times they were called, and the amount of execution time each function took. Additionally, you can see the hierarchy of all function calls and follow potential bottlenecks down to their roots./p p style=text-align: left;There you have it! Go wild and profile all the things! Just kidding, don’t do that./p

Phase2: Profiling Drupal Performance with PHPStorm and Xdebug

Tue, 08/19/2014 - 22:00
pProfiling is about measuring the performance of PHP code, at least when we are talking about Drupal and a href=http://xdebug.org/Xdebug/a. You might need to profile your site or app if you work at a firm where performance is highly scrutinized, or if you are having problems getting a migration to complete. Whatever the reason, if you have been tasked with analyzing the performance of your Drupal codebase, profiling is one great way of doing so. Note that Xdebug’s profiler does not track memory usage. If you want to know more about memory performance tracking you should check out Xdebug’s a href=http://xdebug.org/docs/execution_traceexecution trace features/a./p h3emAlright then lets get started! /em/h3 pWhoa there cowboy! First you need to know that the act of profiling your code is itself taking resources to accomplish. The more work your code does, the more information that the profiler stores; file sizes for these logs can get very big very quickly. You have been warned. To get going with profiling Drupal in PHPStorm and Xdebug you need:/p ul lia title=PHPStorm href=http://www.jetbrains.com/phpstorm/ target=_blankPHPStorm/a/li liPHP with the a title=Xdebug href=http://xdebug.org/ target=_blankXdebug/a extension/li liA website running on Drupal./li /ul pTo setup your environment, edit your php.ini file and add the following lines:/ppre class=crayon-plain-tagxdebug.profiler_output_dir=/tmp/profiler/ xdebug.profiler_enable=on xdebug.profiler_trigger=on xdebug.profiler_append=on/prepDepending on what you are testing and how, you may want to adjust the settings for your site. For instance, if you are using Drush to run a migration, you can’t start the profiler on-demand, and that affects the profiler_trigger setting. For my dev site I used the php.ini config you see above and simply added a URL parameter “XDEBUG_PROFILE=on” to my site’s url; this starts Xdebug profiling from the browser./p pTo give you an idea of what is possible, lets profile the work required to view a simple Drupal node. To profile the node view I visited http://profiler.loc/node/48581?XDEBUG_PROFILE=on in my browser. I didn#8217;t see any flashing lights or hear bells and whistles, but I should have a binary file that PHPStorm can inspect, located in the path I setup in my php.ini profiler_output_dir directive./p pa href=http://www.phase2technology.com/wp-content/uploads/2015/08/profiler_url.pngimg alt=profiler_url src=http://www.phase2technology.com/wp-content/uploads/2015/08/profiler_url-1024x100.png width=608 height=59 //a/p pFinally lets look at all of our hard work! In PHPStorm navigate to Tools-gt;Analyze Xdebug Profile Snapshot. Browse to your profiler output directory and you should see at least one cachgrind.out.%p file (%p refers to the process id the script used). Open the file with the largest process id appended to the end of the filename./p pimg alt=PHPStorm Cachgrind Picker src=http://www.phase2technology.com/wp-content/uploads/2015/08/Screen-Shot-2014-08-18-at-6.44.44-PM-266x300.png width=266 height=300 //p pWe are then greeted with a new tab showing the results of the profiler./p pa href=http://www.phase2technology.com/wp-content/uploads/2015/08/Screen-Shot-2014-08-18-at-6.46.02-PM.pngimg alt=PHPStorm Xdebug Profiler src=http://www.phase2technology.com/wp-content/uploads/2015/08/Screen-Shot-2014-08-18-at-6.46.02-PM-1024x560.png width=655 height=358 //a/p pnbsp;/p pThe output shows us the functions called, how many times they were called, and the amount of execution time each function took. Additionally, you can see the hierarchy of all function calls and follow potential bottlenecks down to their roots./p pThere you have it! Go wild and profile all the things! Just kidding, don’t do that./p

DrupalCon Amsterdam: Schedules, BOFS, Training in Amsterdam

Tue, 08/19/2014 - 20:20
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenpa href=https://amsterdam2014.drupal.org/scheduleThe schedule for DrupalCon Amsterdam is live/a, which means that you can start planning out every detail of your Amsterdam experience. You can start the hard work of choosing the sessions, BOFs, and social events you want to attend, and a href=https://amsterdam2014.drupal.org/schedulebuild your own schedule/a right on the DrupalCon Amsterdam site./p h3BOF scheduling is live/h3 pSpeaking of a href=https://amsterdam2014.drupal.org/birds-of-a-featherBOFs/a, you don’t have to wait until DrupalCon Amsterdam to claim yours: you can start using the a href=https://amsterdam2014.drupal.org/bofs/tuesdayonline booking feature/a today to schedule your BOFs. Be sure you do it soon, though— BOF rooms go fast!/p h3Register for training before 5 September/h3 pLastly, we need more people to a href=https://amsterdam2014.drupal.org/trainingregister to attend training/a at DrupalCon Amsterdam. Show us you're interested in these topics! Book before strong5 September/strong to make sure the course you want to attend runs. We know it's difficult to make a decision this early out, but classes which do not meet the minimum to run will be cancelled!/p pa href=https://amsterdam2014.drupal.org/trainingThe training options are all fantastic/a and a great opportunity to learn more about Drupal, so register today./p pSee you in Amsterdam!/p /div/div/div

Drupalize.Me: Upgrading Drush to work with Drupal 8

Tue, 08/19/2014 - 16:00
div class=field field-name-body field-type-text-with-summary field-label-hidden text-content text-secondarydiv class=field-itemsdiv class=field-item evenpWhen I first started learning Drupal, I remember the process of enabling and disabling modules on the Modules page and it took for-ev-er. My laptop was in serious danger of getting hurled across the room, due to my frustration. Then I discovered drush, and downloading and enabling modules was now performed with ease instead of pain and suffering. Of course there's a lot more you can do with drush than just download and enable modules, this is just one example./p pI've been using Drush 6.x on my local machine for quite some time now. Poking around Drupal 8's UI and seeing what's new, I haven't missed drush too much...until it was time to test drive a new contrib module for Drupal 8. When I typed into my Terminal window codedrush dl page_manager/code, I got quite the error message:/p img src=https://drupalize.me/sites/default/files/blog_post_images/drush-error-d8.png width=889 height=275 alt=Drush 6.1.0 does not support Drupal 8. /pDrush 6.x only works with Drupal 6 or 7. If I wanted to use Drush on my Drupal 8 site, I would need to upgrade to Drush 7.x./p/div/div/divdiv id=comment-wrapper-nid-1748/div

Drupalize.Me: Upgrading Drush to work with Drupal 8

Tue, 08/19/2014 - 16:00
div class=field field-name-body field-type-text-with-summary field-label-hidden text-content text-secondarydiv class=field-itemsdiv class=field-item evenpWhen I first started learning Drupal, I remember the process of enabling and disabling modules on the Modules page and it took for-ev-er. My laptop was in serious danger of getting hurled across the room, due to my frustration. Then I discovered drush, and downloading and enabling modules was now performed with ease instead of pain and suffering. Of course there's a lot more you can do with drush than just download and enable modules, this is just one example./p pI've been using Drush 6.x on my local machine for quite some time now. Poking around Drupal 8's UI and seeing what's new, I haven't missed drush too much...until it was time to test drive a new contrib module for Drupal 8. When I typed into my Terminal window codedrush dl page_manager/code, I got quite the error message:/p img src=http://drupalize.me/sites/default/files/blog_post_images/drush-error-d8.png width=889 height=275 alt=Drush 6.1.0 does not support Drupal 8. /pDrush 6.x only works with Drupal 6 or 7. If I wanted to use Drush on my Drupal 8 site, I would need to upgrade to Drush 7.x./p/div/div/divdiv id=comment-wrapper-nid-1748/div

ComputerMinds.co.uk: Language lessons: What are you translating?

Tue, 08/19/2014 - 14:00
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=schema:articleBody content:encodedh2Content (node-level) translation or entity (field-level) translation?/h2 pIt seems an obvious question to ask, but emwhat are you translating?/em/p pThe tools exist to translate just about anything in Drupal 7*, but in many different ways, so you need to know exactly what you're translating. Language is 'a first-class citizen', in the sense that any piece of text is inherently written by someone on some language, which Drupal 7 is built to recognise. Sometimes you want to translate each amp; every individual piece of text (e.g. at the sentence or paragraph level). Other times you want to translate a whole page or section that is made up of multiple pieces of text./p/div/div/divspan rel=schema:url resource=/drupal-code/language-lessons-what-are-you-translating class=rdf-meta/spanspan property=schema:name content=Language lessons: What are you translating? class=rdf-meta/span

Joachim's blog: Getting Module Builder ready for Drupal 8

Tue, 08/19/2014 - 10:12
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpI've just made a commit to a href=https://www.drupal.org/project/module_builderModule Builder/a that adds unit tests. This is a big deal, because having these frees me up to start making the big changes that are needed for supporting Drupal 8's new structures: routes, plugins, forms, and so on./p pThe biggest challenge is going to be the interface. Currently, you give Module Builder just a module name and a list of hook names, and it does the necessary. On the command line it's nice and simple:/p pdiv class=codeblockcodedrush mb mymodule install schema node_insert form_alter views_data_alter/code/div/p pThe first parameter is the module name, and everything that follows is a hook name. Now we add to the mix requests such as a form called MyModuleCakeToppingForm, or an entity type plugin, or a route bake_my_cake and its page controller. How to elegantly specify all that over the command line, without making it horribly unwieldy and impossible to remember how to use?/p pIt's also going to be an interesting exercise in reading my own documentation and seeing how much sense it makes after something like 7 months away from the code./p pFrom what I recall, Module Builder uses a hierarchy of component generators to build your module. Taking our example above, the first thing that happens is that the Module generator class kicks in. 'So, you want a module, do you?' it asks, 'You'll need some of these.' And it begins to assemble a list of further generators, for the components it needs: an info file, and the hooks generator. The hooks generator does the actual job of examining your list of requested hooks, and decides based on that that you need three code files: a .module, a .install, and a .views.inc. So by now we have a tree of generators like this:/p pre - Module -- Info file -- Hooks --- Code file: .module --- Code file: .install --- Code file: .views.inc /prep This is not a class hierarchy; this is a tree of objects where each generator has a list of the generators beneath it, and is responsible for collecting data from them. Once we have the tree, we iteratively have each generator assemble the data it wants to contribute, starting with the Module generator at the top./p pThe original plan when I wrote this system was to make the smallest granularity be a file. The leaves of the generator tree would assemble the text for their file's contents, and the Module generator would collect the files up and return them to the caller for output (either in the UI, or to write them directly)./p pHowever, while the original intention of this system was that it could be generalised to base components other than modules (so profiles and themes, which are both supported to some extend but lack the UI, see above!), it's also proven to be extendable downwards to smaller components, and to be worthwhile to do so./p pEnter the Form generator. Once we have a generic Function generator (and its child class the HookImplementation), we can create a Form generator. Given a form machine name, 'foo_form', it simply knows to add three copies of the Function generator: 'foo_form', 'foo_form_validate', 'foo_form_submit', along with the correct parameters and some boiler plate code./p pAnd we can specialize this further: the AdminSettingsForm simply extends the Form generator, and adds a menu item component, which itself ensures hook_menu() is requested./p pAt this point it starts to get a bit complicated, as we have components that request other components that are in totally different parts of the component tree. That's the point at which I think I was when I realized I needed tests so that I can refactor and clean up the messy bits of this, and enhance and extend it, without breaking what's already there./p pSo that's the current state of Module Builder: not yet ready for Drupal 8, but has lots of potential. At this point, I'd really welcome input on the Drush interface, as that's the big quandary. And any input on new Drupal 8 component generators would be great too; there are a few open issues in the queue. And finally, Module Builder is a complex beast; should anyone looking at the code find it baffling and impenetrable, do please file a documentation issue to highlight the problem and request clarification./p /div/div/div

Daniel Pocock: Is WebRTC private?

Mon, 08/18/2014 - 21:55
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpWith the a href=https://lists.debian.org/debian-devel-announce/2014/08/msg00007.htmlexciting developments/a at a href=https://rtc.debian.orgrtc.debian.org/a, many people are starting to look more closely at browser-based real-time communications./p pSome have dared to ask: does it solve the privacy problems of existing solutions?/p h3Privacy is a relative term/h3 pPerfect privacy and its technical manifestations are hard to define. I had a go at it in a blog a href=http://danielpocock.com/the-gold-standard-in-free-communications-technologyon the Gold Standard for free communications technology/a on 5 June 2013. By pure co-incidence, a few hours later, a href=http://www.theguardian.com/world/2013/jun/23/edward-snowden-nsa-files-timelinethe first Snowden leaks appeared/a and this particular human right was suddenly thrust into the spotlight./p h3WebRTC and ICE privacy risk/h3 pWebRTC does not give you perfect privacy./p pAt least one astute observer at a href=http://france.debian.net/events/minidebconf2014/my session at Paris mini-DebConf 2014/a questioned the privacy of a href=http://tools.ietf.org/html/rfc5245Interactive Connectivity Establishment (ICE, RFC 5245)/a./p pIn its most basic form, ICE scans all the local IP addresses on your machine and NAT gateway and sends them to the person calling you so that their phone can find the optimal path to contact you. This clearly has privacy implications as a caller can work out which ISP you are connected to and some rough details of your network topology at any given moment in time./p h3What WebRTC does bring to the table/h3 pSome of this can be mitigated though: an ICE implementation can be tuned so that it only advertises the IP address of a dedicated relay host. If you can afford a little latency, your privacy is safe again. This privacy protecting initiative could be made by a browser vendor such as a href=http://www.mozilla.orgMozilla/a or it can be done in JavaScript by a softphone such as a href=http://jscommunicator.orgJSCommunicator/a./p pMany individuals are now using a proprietary softphone to talk to family and friends around the world. The softphone in question has properties like a virus, siphoning away your private information. This proprietary softphone is also an insidious threat to open source and free operating systems on the desktop. WebRTC is a positive step back from the brink. It gives people a choice./p pWebRTC is a particularly relevant choice for business. Can you imagine going to a business and asking them to make all their email communication through hotmail? When a business starts using a particular proprietary softphone, how is it any different? WebRTC offers a solution that is actually easier for the user and can be secured back to the business network using TLS./p pWebRTC is based on open standards, particularly HTML5. Leading implementations, such as the a href=https://www.resiprocate.org/WebRTC_and_SIP_Over_WebSocketsSIP over WebSocket support in reSIProcate/a, a href=http://jscommunicator.orgJSCommunicator/a and the a href=http://www.drucall.orgDruCall module for Drupal/a are fully open source. Not only is it great to be free, it is possible to extend and customize any of these components./p h3What is missing/h3 pThere are some things that are not quite there yet and require a serious effort from the browser vendors. At the top of the list for privacy:/p ullia href=http://www.lumicall.org/encryptionZRTP support/a - browsers currently support a href=http://tools.ietf.org/html/rfc5764DTLS-SRTP/a, which is based on X.509. ZRTP is more like a href=http://en.wikipedia.org/wiki/Pretty_Good_PrivacyPGP/a, a democratic and distributed peer-to-peer privacy solution without needing to trust some central certificate authority./li lia href=http://tools.ietf.org/html/rfc6091TLS with PGP/a - the TLS protocol used to secure the WebSocket signalling channel is also based on X.509 with the risk of a central certificate authority. There is increasing chatter about the need for TLS to use a href=http://en.wikipedia.org/wiki/Pretty_Good_PrivacyPGP/a instead of X.509 and WebRTC would be a big winner if this were to eventuate and be combined with ZRTP./li /ulpYou may think I'll believe it when I see it. Each of these features, including WebRTC itself, is a piece of the puzzle and even solving one piece at a time brings people further out of danger from the proprietary mess the world lives with today./p /div/div/div

Drupal.org Featured Case Studies: Viraland

Mon, 08/18/2014 - 20:27
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/Viraland1.jpg?itok=Ka4eFh63 width=588 height=306 alt=Viraland - Homepage //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=http://www.viraland.gr/http://www.viraland.gr//a/div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpViraland is a strongGreek/strong online community where you can find the latest viral messages from around the world. Users participate in the community by posting new content and sharing it through social channels. Strange, meaningful and popular messages that go viral are posted daily in Viraland, reflecting the interests of its users./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/viewsViews/a/divdiv class=field-item odda href=/project/panelsPanels/a/divdiv class=field-item evena href=/project/zenZen/a/divdiv class=field-item odda href=/project/mediaMedia/a/divdiv class=field-item evena href=/project/rpxJanrain Social Login/a/divdiv class=field-item odda href=/project/rulesRules/a/divdiv class=field-item evena href=/project/i18nInternationalization/a/divdiv class=field-item odda href=/project/field_permissionsField Permissions/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=/user/2287190highvrahos/a/div/div/div

SitePoint PHP Drupal: Fine Tuning Drupal Themes with Patterns, Arg and Types

Mon, 08/18/2014 - 18:00
pIn this article, we’ll discuss how you can leverage various Drupal API functions to achieve more fine grained theming. We’ll cover template preprocessing and alter hooks using path patterns, types and args(). We’ll use the arg() function which returns parts of a current Drupal URL path and some pattern matching for instances when you want [#8230;]/ppemContinue reading %a rel=nofollow href=http://www.sitepoint.com/fine-tuning-drupal-themes-patterns-arg-types/Fine Tuning Drupal Themes with Patterns, Arg and Types/a%/em/p

Zivtech: Creating Parallax Scrolling with CSS

Mon, 08/18/2014 - 16:58
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even pHere at Zivtech, we are obsessed with creating immersive experiences for mobile and the web using cutting-edge design and Open Source Software like Drupal and Angular.js. One of the web design techniques that we've had on our radar is Parallax Scrolling, which gives depth to a page by scrolling two dimensions of the site at different rates (for example, text in the front would scroll faster than the image behind it). Parallax Scrolling is most often associated with 2D video game development, but has been becoming more and more prevalent on the web (for some live examples see Creative Bloq's post a href=http://www.creativebloq.com/web-design/parallax-scrolling-1131762 target=_blank46 Great Examples of Parallax Scrolling/a).nbsp;/p pspan style=line-height: 1.538em;While we find this technique engaging, we never adopted it for our designs/spanspan style=line-height: 1.538em;nbsp;due to the fact that it relied heavily on Javascript tools and techniques that we found caused performance issues, and especially due to problems with making it work within a responsive web design. However, that may be about to change.nbsp;/spanspan style=line-height: 1.538em;In a recent post on his blog, Keith Clark wrote about an exciting new way to create Parallax Scrolling through CSS rather than Javascript, making for more mobile-friendly and responsive Parallax Scrolling effects. Clark writes:/span/p blockquotepDeferring the parallax effect to CSS removes all these issues and allows the browser to leverage hardware acceleration resulting in almost all the heavy lifting being handled directly by the compositor./p /blockquote pThis technique, which removes the bulk of the work off the browser, creates the illusion of 3D without bogging pages down. Now, with CSS, we can maintain the same effect without creating a disjointed experience across multiple platforms.nbsp;span style=line-height: 1.538em;Check out Keith's post on /spana href=http://blog.keithclark.co.uk/pure-css-parallax-websites/ style=line-height: 1.538em; target=_blankpure CSS parallax scrolling/aspan style=line-height: 1.538em; websites for code snippets and samples./span/p p!--break--/p /div/div/divdiv class=field field-name-taxonomy-vocabulary-2 field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTerms:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/terms/drupal-planetDrupal Planet/a/divdiv class=field-item odda href=/terms/parallax-scrollingParallax Scrolling/a/divdiv class=field-item evena href=/terms/cssCSS/a/divdiv class=field-item odda href=/terms/javascriptJavaScript/a/divdiv class=field-item evena href=/terms/drupalDrupal/a/divdiv class=field-item odda href=/terms/angularjsAngular.js/a/divdiv class=field-item evena href=/terms/designDesign/a/divdiv class=field-item odda href=/terms/web-designWeb Design/a/divdiv class=field-item evena href=/terms/responsive-web-designresponsive web design/a/div/div/div

Appnovation Technologies: Different Point of Views

Mon, 08/18/2014 - 16:25
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encoded pThe a href=http://www.appnovation.com/content-tags/drupal-0 target=_blankDrupal/a Views module is an amazing tool. It certainly has contributed significantly to the widespread adoption of Drupal./p/div/div/divdiv class=field field-name-field-blog-header-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/blog/different-point-viewsimg typeof=foaf:Image src=http://www.appnovation.com/sites/default/files/styles/blog_listing_page_header/public/differentpointofviews.jpg?itok=GJ337jnX width=680 height=200 alt= //a/div/div/divdiv class=sharethis-buttonsdiv class=sharethis-wrapperspan st_url=http://www.appnovation.com/blog/different-point-views st_title=Different Point of Views class=st_facebook/span span st_url=http://www.appnovation.com/blog/different-point-views st_title=Different Point of Views class=st_twitter/span span st_url=http://www.appnovation.com/blog/different-point-views st_title=Different Point of Views class=st_sharethis/span script type='text/javascript'var switchTo5x = false;/scriptscript type='text/javascript' src='http://w.sharethis.com/button/buttons.js'/scriptscript type='text/javascript'stLight.options({publisher:dr-75626d0b-d9b4-2fdb-6d29-1a20f61d683});/script/div/div

Gábor Hojtsy: Moving Drupal forward at Europe's biggest warm water lake

Mon, 08/18/2014 - 16:08
div class=field field-name-body field-type-text-with-summary field-label-hidden view-mode-rssdiv class=field-itemsdiv class=field-item evenpa href=http://2014.drupalaton.hu/Drupalaton 2014/a was amazing. I got involved pretty late in the organization when we added sprinting capacity on all four days, but I must say doing that was well worth it. While the pre-planned schedule of the event focused on longer full day and half day workshops on business English, automation, rules, commerce, multilingual, etc. the sprint was thriving with backend developer luminaries such as Wim Leers, dawehner, fago, swentel, pfrennsen, dasjo as well as sizable frontend crew such as mortendk, lewisnyman, rteijeiro, emmamaria, etc. This setup allowed us to work on a very wide range of issues./p pa href=https://www.drupal.org/project/issues/search?issue_tags=Drupalaton%202014The list of 70+ issues we worked on/a shows our work on the drupal.org infrastructure, numerous frontend issues to clean up Drupal's markup, important performance problems, several release critical issues and significant work on all three non-postponed beta blockers at the time./p div style=text-align: center;img src=http://hojtsy.hu/files/14874949612_1aed1136a3_z.jpg /br /Drupalers shipped from port to port; a href=https://www.flickr.com/groups/2704663@N23/pool/Photo by TCPhoto/a/div pOur coordinated timing with a href=http://2014.tcdrupal.org/sprintsthe TCDrupal sprints/a really helped in working on some of the same issues together. We successfully closed one of the beta blockers shortly after the sprint thanks to coordinated efforts between the two events./p pOur list of issues also shows the success of the Rules training on the first day in bringing new people in to porting Rules components, as well as work on other important contributed modules: fixing issues with the Git deploy module's Drupal 8 port and work on the Drupal 8 version of CAPTCHA./p pThanks to the organizers, a href=http://2014.drupalaton.hu/sponsorsthe sponsors of the event/a including a href=https://assoc.drupal.org/grantsthe Drupal Association Community Cultivation Grants program/a for enabling us to have some of the most important Drupal developers work together on pressing issues, eat healthy and have fun on the way./p pemPs. There is never a lack of opportunity to work with these amazing people. a href=https://groups.drupal.org/node/427578Several days of sprints are coming up around DrupalCon Amsterdam/a in a little over a month! The weekend sprint locations before/after the DrupalCon days are also really cool! See you there!/em/p /div/div/div