Stanford Drupal Camp - Development https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development en Managing Projects Through Install Profiles https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/managing-projects-through-install-profiles <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>At the Stanford Graduate School of Business we manage a website that has a lot of different functionality.  It was important that when we migrated from our old platform that we were able to compartementalize the functionality into maintainable pieces.  By leveraging install profiles and Features we are able to accomplish this and we are able to better understand where to fix bugs when problems arise.  This talk will go over how we have designed our development workflow and lessons we have learned that could improve it.</p> </div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Advanced</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">redndahead</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Friday, April 18, 2014 - 11:00 to 11:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div></div></div> Thu, 27 Mar 2014 20:49:33 +0000 redndahead 233 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/managing-projects-through-install-profiles#comments Drupal Site Tuneup - Vroom Vroom! https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/drupal-site-tuneup-vroom-vroom <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><h3>Beep beep!</h3> <p>During the development process, your site goes through many changes as you figure out which modules to use, solidify your content types and views, configure features, and deal with bugs in core, community and custom modules. Along the way, content, files, modules, and data can get outdated without you even realizing what happened. This is even more likely with a larger development team and when development is going fast.</p> <p>At some point, you need to slow down and make time to do a site tuneup to get rid of old cruft and keep the site humming along. Ideally, this would happen before launch. Realistically, this might not happen until post-launch after the frenzy has died down and more routine maintenance mode has kicked in. But… it needs to happen, and it needs to happen regularly. How regularly depends on how much change happens on the site.</p> <h3>Come for a ride and we’ll talk about...</h3> <p><strong>Tuning strategy</strong> - What types of things might need tuning over time, a strategy for managing and tracking these changes, and dealing with dev =&gt; stage =&gt; prod and features.</p> <p><strong>Tuning users</strong> - Finding and removing spam users.</p> <p><strong>Tuning content and content types</strong> - Identifying unpublished or duplicate content. Finding and removing fields not being used and identifying fields that could be removed. Analyzing content types for consolidation and changing node type on nodes.</p> <p><strong>Tuning modules and code</strong> - Handling unneeded modules that haven’t been disabled or were disabled and not uninstalled properly. Identifying modules that could be eliminated by removing or replacing functionality. Core and module updates, checking for hacks to core and community modules, and seeing if patches are still relevant.</p> <p><strong>Tuning views</strong> - Finding and removing unused views and identifying views for consolidation.</p> <p><strong>Tuning data</strong> - Safely finding and removing old variables, fields, and tables that weren’t removed properly by the system.</p> <p><strong>Tips to minimize tuneups</strong> - To make tuning easier going forward, we’ll talk about being more careful during the development cycle to introduce less “stuff” that might need cleanup later.</p> <h3>Vroom vroom!</h3> <h3>About the driver/speaker:</h3> <p>Kristen has been working with Drupal since 2004 as a developer and architect, specializing in multilingual, migrations, and SEO. She has presented at <a href="https://portland2013.drupal.org/session/multilingual-module-madness-which-i18n-modules-do-you-really-need" rel="nofollow">DrupalCon Portland</a>, several <a href="http://2013.badcamp.net/" rel="nofollow">BADCamps</a>, several <a href="https://drupalcamp.stanford.edu/">Stanford camps</a>, and other Drupal camps and user group meetings. Check out her <a href="//drupal.org/user/8389”" rel="nofollow">drupal.org page</a> for a partial list of presentations and check out more info at <a href="//www.hook42.com/team/kristen-pol”" rel="nofollow">http://www.hook42.com/team/kristen-pol</a>.</p> </div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Intermediate</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">Kristen Pol</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Saturday, April 19, 2014 - 15:00 to 15:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div><div class="field-item odd"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/site-building">Site Building</a></div></div></div> Thu, 27 Mar 2014 19:48:38 +0000 Kristen Pol 231 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/drupal-site-tuneup-vroom-vroom#comments Drupal and CAP https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/drupal-and-cap <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Community Academic Profiles (CAP) is a system developed by Stanford as a way of consolidating faculty information into a single location. Beyond basic personal profiles, the system also collects information about publications, research and academic interests, presenting a rich and comprehensive view of the academic community and their pursuits.</p> <p><span>In early 2014, a Drupal module was released for integrating with CAP. This module offers schools at Stanford a robust and efficient way to present content about faculty in their websites, and also to keep that information up-to-date using CAP's RESTful API. Beyond simple imports of single faculty members, the module is capable of maintaining information about an entire school, and also integrates with workgroups and SUNet IDs to provide meaningful collections of content.</span></p> <p>This session focuses on the practical use of the CAP module. Participants will learn how to work with faculty profiles, and how to carry out the following advanced topics:</p> <ul><li>How to select profiles for import</li> <li>How profiles are kept in sync over time</li> <li>How to control the appearance of profiles using drag-and-drop tools in Drupal's administrative interface</li> <li>How to create faculty listings</li> <li>How to create lists of publications and research</li> </ul><p>This session will be conducted by Michael Haggerty, one of the lead developers of the CAP module for Drupal. </p> <p> </p> </div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Intermediate</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">techsoldaten</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Friday, April 18, 2014 - 13:00 to 13:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div><div class="field-item odd"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/stanford-specific">Stanford Specific</a></div></div></div> Fri, 21 Mar 2014 03:40:35 +0000 techsoldaten 215 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/drupal-and-cap#comments "Accessibilizing" Drupal https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/accessibilizing-drupal <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Want to make sure your Drupal site is accessible to everyone? Learn to maximize the accessibility features built into Drupal - and the additional features built into Open Framework and Stanford Sites - and assure those features stay intact when you make changes. See the value of testing keyboard navigation and focus, adding alternative text to images, and assuring that assistive technology presents page content in the order you expect.</p> <h2>Resources:</h2> <p>We posted some of these resources before the session, but we have updated this section to include additional information that was discussed during the session.</p> <h3>Checking Color Contrast</h3> <ul><li><a href="http://blog.tanaguru.com/2013/12/04/introducing-tanaguru-contrast-finder-0-1" rel="nofollow">Introducing Tanaguru Contrast Finder</a></li> <li><a href="http://www.paciellogroup.com/resources/contrastAnalyser" rel="nofollow">Contrast Analyser</a></li> <li><a href="http://www.inpixelitrust.fr/blog/en/tips-create-accessible-color-palette/" rel="nofollow">Tips to Create an Accessible and Contrasted Color Palette</a></li> </ul><h3>Keyboard-only Testing</h3> <ul><li><a href="http://www.456bereastreet.com/archive/200906/enabling_keyboard_navigation_in_mac_os_x_web_browsers/" rel="nofollow">Enabling keyboard navigation in Mac OS X Web browsers 456 Berea Street</a></li> <li><a href="http://www.nngroup.com/articles/keyboard-accessibility/" rel="nofollow">Keyboard-Only Navigation for Improved Accessibility</a></li> </ul><h3>The Importance of Focus Indication</h3> <ul><li><a href="http://www.nomensa.com/blog/2013/why-the-focus-indicator-is-important/" rel="nofollow">Why the focus indicator is important</a></li> <li><a href="http://www.sitepoint.com/learning-to-focus/" rel="nofollow">Learning to focus</a></li> </ul><h3>A Few Links about Carousels</h3> <ul><li><a href="http://shouldiuseacarousel.com" rel="nofollow">Should I use a carousel?</a></li> <li><a href="https://github.com/SU-SWS/stanford_carousel" rel="nofollow">Stanford Carousel module</a></li> </ul><h3>Drupal Testing Tools</h3> <ul><li><a href="https://drupal.org/project/quail_api" rel="nofollow">Quail API</a></li> <li><a href="https://drupal.org/project/pa11y_integration" rel="nofollow">PA11Y Integration module</a></li> </ul><h3>Video and Captioning</h3> <ul><li><a href="http://captioning.stanford.edu/">Stanford Captioning Service</a> <ul><li><a href="http://captiontool.stanford.edu">Caption Tool</a></li> </ul></li> <li><a href="https://github.com/SU-SWS/stanford_video" rel="nofollow">Stanford Web Video module</a></li> </ul><h3>Miscellaneous Resources</h3> <ul><li><a href="http://soap.stanford.edu">Stanford Online Accessibility Program</a></li> <li><a href="http://wave.webaim.org" rel="nofollow">WAVE (testing tool) from WebAIM</a></li> <li><a href="https://developers.google.com/chrome-developer-tools/" rel="nofollow">Chrome DevTools</a></li> <li><a href="http://www.nvaccess.org/" rel="nofollow">NVDA (free PC-based screen reader)</a></li> <li><a href="https://www.apple.com/voiceover/info/guide/" rel="nofollow">VoiceOver (screen reader built into the Mac)</a></li> <li><a href="http://www.4syllables.com.au/2010/12/text-alternatives-decision-tree/" rel="nofollow">Text Alternative Decision Tree</a></li> <li><a href="http://blog.paciellogroup.com/2013/01/using-the-html-title-attribute-updated/" rel="nofollow">Using the HTML title attribute - updated</a></li> </ul></div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Intermediate</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">JSutton</div><div class="field-item odd">John Bickar</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Friday, April 18, 2014 - 14:00 to 14:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div><div class="field-item odd"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/stanford-specific">Stanford Specific</a></div></div></div> Wed, 19 Mar 2014 13:51:06 +0000 John Bickar 197 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/accessibilizing-drupal#comments A Perfect Launch, Every Time https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/session/perfect-launch-every-time <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p><span>Launches are tough on a new developer. Everyone remembers the lump in their throats around launch time; the rush to finish content, make final theme tweaks, adjust for sudden browser weirdness. As momentum picks up, the odd change request always appears, databases are slingshot hither and yon, while everyone scrambles to resolve merge conflicts like a Tokyo train at rush hour.</span></p> <p><span>We emerge scarred but smarter, intent on making the next launch less painful. But with different teams launching different sites, it can be hard to establish an iterative process. Especially as new work accumulates in the backlog, we reap what we sow in technical debt from rushed launches, quick &amp; dirty choices made under the gun, and unimplemented ideas from retrospectives.</span></p> <p><span>Pantheon, however, has the same Customer Success team launching several enterprise sites per week, while assisting hundreds of self serve customers when they need a hand. Because we need to work effectively, we have developed the tools and process to ensure:</span></p> <ul><li><span>Great Site Performance - On Day One</span></li> <li><span>Less problems over the long run</span></li> <li><span>Clear Expectations from Informed Stakeholders</span></li> </ul><p><span>The session will cover other key areas:</span></p> <ol><li><span>Preparing For Launch for the PM, Stakeholder, Developer &amp; Sys Admin</span></li> <li><span>Auditing the Site for landmines, carniverous acid pool islands, and deadweight</span></li> <li><span>Load Testing to obliterate surprises with actionable results</span></li> </ol><p><span>This session is Platform Agnostic; whether you use PAAS, shared hosting, or wield your own hardware, PMs, developers, and clients will leave with new tools in their belt to launch with less agita. We will share some of our challenges and how we overcame them, and hopefully hear from you about how you overcame yours!</span></p> </div></div></div><div class="field field-name-field-slides field-type-file field-label-above"><div class="field-label">Slides:&nbsp;</div><div class="field-items"><div class="field-item even"><span class="file"><img class="file-icon" alt="" title="application/pdf" src="/group/drupal/cgi-bin/2014drupalcamp/modules/file/icons/application-pdf.png" /> <a href="https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/sites/default/files/slides/stanford_drupalcamp_2014_-_a_perfect_launch_every_time.pdf" type="application/pdf; length=3527822">stanford_drupalcamp_2014_-_a_perfect_launch_every_time.pdf</a></span></div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Intermediate</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">suzanne.aldrich</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Saturday, April 19, 2014 - 14:00 to 14:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div></div></div> Wed, 19 Mar 2014 00:00:22 +0000 suzanne.aldrich 193 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/session/perfect-launch-every-time#comments Stanford+Connects: Building Custom User Experience on a Solid Drupal Platform https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/stanfordconnects-building-custom-user-experience-solid-drupal <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Last year, the Stanford Alumni Association began a series of events to connect Stanford Alumni around the world with a rich and engaging program, including informal Q&amp;A sessions with President Hennessy, micro-lectures, collaborative seminars, and an extensive interactive component. The website for this series of events began with the most basic needs of event registration, and evolved over time into a highly customized experience that mirrors these unique events.</p> <p>The process of planning, designing, and building the <a href="https://stanfordconnects.stanford.edu/">Stanford+Connects</a> site is an excellent demonstration of Drupal's capabilities, both in providing a solid base of functionality and as a framework for extensive customization. We will walk through this process and highlight how Drupal allowed it to succeed at each point along the way, from the earliest planning to the ongoing iterations.</p> <p> </p> </div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Beginner</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">sreynen</div><div class="field-item odd">juaneclark</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Friday, April 18, 2014 - 15:00 to 15:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div><div class="field-item odd"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/stanford-specific">Stanford Specific</a></div></div></div> Tue, 18 Mar 2014 20:33:56 +0000 sreynen 185 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/stanfordconnects-building-custom-user-experience-solid-drupal#comments Beginning Module Development https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/beginning-module-development <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Maybe you're a Drupal site-builder or frontend developer looking to get into Drupal backend development, or perhaps you're already a PHP developer and looking to get familiar with Drupal. If so, this session is for you.</p> <p><span>Overview</span></p> <p><span>Instead of the first obligatory "Hello World" example code, we will create a new Drupal 7 module that improves the UI of a popular contrib module.</span></p> <p><span>We will build a fully-working module from scratch in 40 minutes. </span><span>This session will discuss best practices prior to building a module, how to organize your custom modules, tackle a real-world problem, troubleshoot, and step through the process from inception to completion of a new module.</span></p> <p>Audience</p> <p><span>PHP developers new to Drupal, and site builders that are interested in development. Assumes basic knowledge of PHP and CSS.</span><br /><br /><span>Topics Covered</span></p> <ul><li><span>Hooks overview.</span></li> <li><span>Research before creating a module.</span></li> <li><span>Best practices for development in Drupal.</span></li> <li><span>Common troubleshooting tasks.</span></li> <li><span>How to organize your modules.</span></li> <li><span>Creating a module.</span></li> <li><span>Drupal-specific functions.</span></li> <li><span>Brief overview of the Drupal developer's toolbox.</span></li> </ul></div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Beginner</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">jcrespo</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Saturday, April 19, 2014 - 14:00 to 14:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div></div></div> Tue, 18 Mar 2014 19:53:59 +0000 jcrespo 183 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/beginning-module-development#comments Module Testing Made Simple https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/module-testing-made-simple <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Drupal has a module called SimpleTest for setting up automated tests. Despite its name it is not simple to use effectively. This sessions aims to remove some of the mystery around SimpleTest and Unit Testing in general.</p> <p>I will start by introducing the concepts of automated testing frameworks and how to get started with SimpleTest.</p> <p>I will then cover solutions to the three big problems people tend to have with SimpleTest in Drupal 7:</p> <ul><li> Understanding the principles of SimpleTest</li> <li>Understanding how to make unit testing work for you, not against you</li> <li>Understanding the constraints of the Drupal environment. Drupal and PHP make unit  testing a little harder than it is in C++, C# or Java.</li> </ul><p>I will finish the session with some discussion about testing in Drupal 8, where structuring your unit testing well becomes even more important.</p> <p>This session assumes basic knowledge of PHP and Drupal 7 modules.</p> </div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Beginner</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">rablack</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Saturday, April 19, 2014 - 15:00 to 15:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div></div></div> Mon, 17 Mar 2014 21:08:07 +0000 rablack 177 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/module-testing-made-simple#comments Web Developers' Summit https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/web-developers-summit <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>John Bickar and Marco Wise from Stanford IT Services will facilitate a roundtable discussion among web developers, to share tips, tools, tricks, and best practices. Attend this session to learn and share about:</p> <ul><li>Git</li> <li>Drush</li> <li>IDEs</li> <li>Development and staging workflows</li> <li>Best practices</li> </ul><p>We speak PHP, MySQL, bash, tcsh, and mod_rewrite here.</p> <p> </p> <h2>Session Notes</h2> <h3>Some of Our Favorite Tools (in no particular order)</h3> <ul><li><a href="http://docs.seleniumhq.org/download/" rel="nofollow">Selenium IDE</a> - (with a drupal-specific pugin js file user extension)</li> <li><a href="http://jenkins-ci.org/" rel="nofollow">Jenkins</a></li> <li><a href="http://livereload.com/" rel="nofollow">Live reload</a></li> <li><a href="http://gruntjs.com/" rel="nofollow">grunt</a> - Javascript task runner</li> <li><a href="http://bundler.io/" rel="nofollow">bundler</a></li> <li><a href="https://github.com/guard/guard" rel="nofollow">guard</a></li> <li><a href="https://drupal.org/project/live_css" rel="nofollow">live css</a></li> <li><a href="http://www.sublimetext.com/" rel="nofollow">sublime</a> (text editor)</li> <li>Fun with git! (our favorite git commands) <ul><li>git blame</li> <li>git cherry-pick</li> <li>git log -s</li> <li>git bisect</li> </ul></li> <li>New Relic</li> <li><a href="http://www.jetbrains.com/phpstorm/" rel="nofollow">PHPStorm</a> - IDE for make glorious Drupal</li> <li><a href="http://xdebug.org/" rel="nofollow">xdebug</a></li> <li><a href="https://drupal.org/project/XHProf" rel="nofollow">xhprof</a></li> <li><a href="http://komodoide.com/" rel="nofollow">komodo</a></li> <li>vagrant <ul><li><a href="https://puphpet.com/" rel="nofollow">PuPHPet</a></li> <li><a href="http://www.vagrantbox.es/" rel="nofollow">VagrantBox</a></li> <li><a href="https://vagrantcloud.com/" rel="nofollow">Vagrant Cloud</a></li> </ul></li> <li><a href="https://www.acquia.com/products-services/dev-desktop" rel="nofollow">aquia dev desktop</a></li> <li><a href="http://www.softpanorama.org/Utilities/pushd_popd_and_dirs.shtml" rel="nofollow">pushd</a></li> <li><a href="http://www.obdev.at/products/launchbar/index.html" rel="nofollow">launchbar</a></li> <li><a href="http://www.alfredapp.com/" rel="nofollow">alfred</a></li> <li>quicksilver</li> <li><a href="https://saucelabs.com/" rel="nofollow">sauce labs</a></li> <li>c-scope</li> <li>Features</li> <li>jmeter</li> <li>loader.io</li> <li>ab</li> <li>pound</li> <li>varnish</li> <li>memcache</li> </ul><h3>Pain Points</h3> <ul><li>drush make integration w/ hosting</li> <li>css tool -&gt; live reload /omega 4 screencast, code kit</li> <li>RAM</li> <li>puppet</li> <li>github orgs</li> <li>github vs d.o.</li> <li>selenium -&gt; jenkins</li> <li>drush rsync as root</li> <li>web hosting </li> <li>sysadmin + access</li> </ul></div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Intermediate</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">mistermarco</div><div class="field-item odd">John Bickar</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Friday, April 18, 2014 - 15:00 to 15:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div></div></div> Mon, 17 Mar 2014 17:48:18 +0000 John Bickar 137 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/web-developers-summit#comments Migrating from Drupal to Drupal: Using migrate and migrate_d2d https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/migrating-drupal-drupal-using-migrate-and-migrated2d <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p><a href="https://drupal.org/drupal-8.0" rel="nofollow">Drupal 8</a> is coming soon (well, <a href="http://xjm.drupalgardens.com/blog/when-its-ready" rel="nofollow">when it’s ready</a> ;) <a href="https://drupal.org/drupal-7.0" rel="nofollow">Drupal 7</a> is mature and has some years in it left. But, there are plenty of <a href="https://drupal.org/drupal-6.0" rel="nofollow">Drupal 6</a> and, <em>gasp</em>, <a href="https://drupal.org/drupal-5.0" rel="nofollow">Drupal 5</a> (and maybe even <a href="https://drupal.org/drupal-4.7.4" rel="nofollow">Drupal 4</a>) sites out in the wild. In Drupal 7 and earlier, you could use the “<a href="https://drupal.org/upgrade" rel="nofollow">upgrade</a>” path for moving a site from an older (major) version of Drupal to a new version… like Drupal 5 to Drupal 6 or Drupal 6 to Drupal 7. Not that this was necessarily simple to do though. When skipping versions (e.g. Drupal 5 to 7), when doing a redesign, or due to other factors like a hacked codebase, the “upgrade” path doesn’t make sense or isn't feasible.</p> <h3>Enter the migrate module</h3> <p>The <a href="http://www.drupal.org/project/migrate" rel="nofollow">migrate module</a> provides a framework for migrating any site into Drupal and the <a href="http://www.drupal.org/project/migrate_d2d" rel="nofollow">migrate_d2d module</a> makes this even easier for migrating from Drupal site to Drupal site. These modules provide base classes and helper functionality for mapping between entities, maintaining relationships between data, testing migrations in small batches, rolling back failed migrations, and more.</p> <h3>This session will cover</h3> <ul><li>Planning for a migration including entity mapping</li> <li>High-level overview of migrate architecture</li> <li>Dependencies and order of execution</li> <li>Handling managed files</li> <li>Consolidating content types and migrating nodes to other entities</li> <li>Custom code in preImport, postImport, prepare, prepareRow, and complete functions</li> <li>Using drush for testing and real migrations</li> </ul><h3>About the speaker</h3> <p>Kristen has been working with Drupal since 2004 as a developer and architect, specializing in multilingual, migrations, and SEO. She has presented at <a href="https://portland2013.drupal.org/session/multilingual-module-madness-which-i18n-modules-do-you-really-need" rel="nofollow">DrupalCon Portland</a>, several <a href="http://2013.badcamp.net/" rel="nofollow">BADCamps</a>, several <a href="https://drupalcamp.stanford.edu/">Stanford camps</a>, and other Drupal camps and user group meetings. Checkout her <a href="//drupal.org/user/8389”" rel="nofollow">drupal.org page</a> for a partial list of presentations and check out more info at <a href="//www.hook42.com/team/kristen-pol”" rel="nofollow">http://www.hook42.com/team/kristen-pol</a>.</p> </div></div></div><div class="field field-name-field-experience field-type-list-text field-label-above"><div class="field-label">Experience level:&nbsp;</div><div class="field-items"><div class="field-item even">Intermediate</div></div></div><div class="field field-name-field-accepted field-type-list-integer field-label-inline clearfix"><div class="field-label">Status:&nbsp;</div><div class="field-items"><div class="field-item even">Accepted</div></div></div><div class="field field-name-field-speakers field-type-entityreference field-label-above"><div class="field-label">Speaker(s):&nbsp;</div><div class="field-items"><div class="field-item even">Kristen Pol</div></div></div><div class="field field-name-field-session-timeslot field-type-entityreference field-label-above"><div class="field-label">Session Time Slot(s):&nbsp;</div><div class="field-items"><div class="field-item even"><div class="entity entity-field-collection-item field-collection-item-field-room-slots-types-allowed clearfix"> <div class="content"> <div class="field field-name-field-slot-types-time-slot field-type-entityreference field-label-hidden"><div class="field-items"><div class="field-item even">Saturday, April 19, 2014 - 14:00 to 14:45</div></div></div> </div> </div> </div></div></div><div class="field field-name-field-session-track field-type-taxonomy-term-reference field-label-above"><div class="field-label">Track:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/group/drupal/cgi-bin/2014drupalcamp/session-tracks/development">Development</a></div></div></div> Tue, 11 Mar 2014 00:54:01 +0000 Kristen Pol 117 at https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp https://web.stanford.edu/group/drupal/cgi-bin/2014drupalcamp/2014-stanford-drupal-camp/session/migrating-drupal-drupal-using-migrate-and-migrated2d#comments