Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 3 min 58 sec ago

Web Wash: Control Context Using Context Entity Field in Drupal 7

Mon, 04/21/2014 - 23:27
div class=field field-name-field-ww-summary field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item evenpWhen you need to dynamically display a block within a region, nothing can really beat the a href= module. It allows you to define a set of conditions, that when met, executes a set of reactions. For example, you could create a context rule which adds a block to the sidebar second region (reaction) when a user is viewing an Article content type (condition)./p pA lot of what Context does can also be achieved using a href= But if you're new to Drupal, and never used Panels than Context will be easier to use./p pIf you're new to Context then I would highly recommend you watch the two introductory videos below:/p ul lia href= 7 Context module - Daily Dose of Drupal episode 72/a by a href= Thomas/a/li lia href= Tutorials #63 - Intro to Context - Adding Blocks With Context/a by a href= /ul pRecently I've discovered a powerful module called a href= entity field/a. It allows you to define a condition that checks the value of a field on an entity./p /div/div/div

Drupal core announcements: This week (or two or three) in Drupal Core

Mon, 04/21/2014 - 22:02
h2 id=newWhat's new with Drupal 8?/h2 h3Configuration system changes/h3 pOver the past month, a lot of work has gone into the configuration system. With the addition of a href= separate module install/uninstall step for the config import process/a, it's finally possible to properly synchronize configuration changes with module installations or uninstallations. You can now transform a site installed with the Minimum install profile into a site using the Standard install profile by importing configuration (the case we've long said will be our indicator that CMI works). (a href= this screencast to see it in action!/a)/p pAdditionally, after thorough discussion, the active storage for the configuration management system has been a href= into the database by default/a. This means existing Drupal 8 sites will likely need to be reinstalled (or otherwise migrate the active configuration). Read the a href= record on active configuration in the database/a for details on why this decision was made./p pNow is the time to start emreally/em testing CMI deployments. Spin up a dev site, make a copy of it, and test synchronizing complex configuration system changes between the two. See if the system behaves as you expect (and report the problems you find!) For an overview of the outstanding work being done on the configuration system, see a href= [meta] CMI path to beta/a./p h3NYC Camp at the United Nations/h3 pimg src= alt=Camp attendees line up outside the UN, under the flags of many nations. /br / The third annual a href= Camp/a was held at the United Nations. (Yes, emthat/em United Nations, with the flags.) In addition to numerous sessions about Drupal 8 (check out fmitchell's session on a href= Drupal 8 API functions you should already know/a), we held several days of Drupal 8 core sprints. Media contributors also sprinted on Media for Drupal 8; check out their a href= status report/a for more information. Finally, Drupal Association executive director Holly Ross worked on a Drupal 8 patch a href= her first Drupal core commit credit/a! Are you next? :)/p h2 id=releaseWhere's Drupal 8 at in terms of release?/h2 pWe're in the last stretch of Drupal 8's alpha phase. We've fixed over 130 beta-blocking issues, including 9 in the last week, plus written more than 70 missing change records. The a href=;status%5B%5D=13amp;status%5B%5D=8amp;status%5B%5D=14amp;status%5B%5D=4amp;version%5B%5D=8.xamp;issue_tags_op=%3Damp;issue_tags=beta+blockerlast 28 beta blockers/a include some difficult issues, but consider some of what we've already accomplished since the beginning of 2014:/p ul liThe removal of the variable subsystem after 18 months./li liThe rearchitecture of configuration synchronization to support the minimum viable usecase after 16 months./li liThe removal of the legacy menu router after nearly a year./li liThe removal of widely used cache-breaking functions including drupal_set_title(), drupal_add_css(), drupal_add_js(), and theme()./li liThe removal of all stale hook_update_N() implementations and the modification of update.php to require Migrate for major version upgrades instead./li /ul p(And of course so much more.)/p h2 id=helpWhere can I help?/h2 h3 id=topTop criticals to hit this week/h3 pEach week, we check with core maintainers and contributors for the extra critical criticals that are blocking other work. These issues are often tough problems with a long history. If you're familiar with the problem space of one of these issues and have the time to dig in, help drive it forward by reviewing, improving, and testing its patch, and by making sure the issue's summary is up to date and any API changes are documented with a a href= change record/a./p ul li pa href= Unified repository of field definitions (cache + API)/a converts remaining usages of the deprecated field info API to use methods from the entity manager, and is therefore critical to stabilizing the Entity Field API for the beta release. This significant (~150 KB) patch needs thorough code review from contributors familiar with Drupal 8's entity and field systems./p /li li pa href= Make ContentEntityDatabaseStorage generate static database schemas for content entities/a is an even larger (~250 KB) beta-blocking patch for the entity system that allows the entity system to automatically create the necessary database tables for entities, resolving numerous different issues. This is another significant change and needs emlots/em of thorough review from as many people as possible./p /li li pa href= Make deleted fields work with config synch/a needs review of the patch's architecture and functionality. Deleting a field is a significant operation, because the site has to go on to purge all the field instance data for entities that have the field while leaving those entities intact. Drupal 7 includes a lot of code to support this functionality, and in Drupal 8, there's additional complexity since this purge needs to happen when a deleted field is staged and synchronized to another environment. /p/li li pa href= [meta] Stop using request attributes as a storage mechanism for other services/a covers a collection of issues to improve the developer experience around Drupal 8's use of Symfony's request attributes (a public property on the request object that can be used for context-specific information about the request). This context information is not easily discoverable for contributed module developers, and, in some cases, using it adds to the apparent verbosity and complexity (e.g. in the replacements for the common D7 functions codemenu_get_object()/code and codemenu_get_item()/code). The numerous sub-issues for this meta issue are intended to weed out misuses of the request attributes and provide clear public APIs for others. Help discuss the developer experience and architecture in the numerous child issues for this meta./p /li /ul h3More ways to help/h3 ul li pWe've put together a list of a href= beta blocker and beta target issues/a from the tasks remaining after our two back-to-back sprints on the beta at Szeged and NYC Camp./p /li li pa href= Entity labels are not in-place editable on full entity page (prime example: node title)/a is a critical regression in Drupal 8's new in-place editing feature. The patch to resolve the issue needs JavaScript code review./p /li li pAs always, if you're new to contributing to core, check out a href= contribution mentoring hours/a. Twice per week, you can log into IRC and helpful Drupal core mentors will get you set up with answers to any of your questions, plus provide some useful issues to work on./p /li /ul h2 id=commitsNotable Commits/h2 pThe best of codegit log --after=2014-04-02 --pretty=oneline/code (207 commits in total):/p h3Configuration management/h3 pAs we described above, it's been another couple weeks of fantastic progress in getting the configuration management system solid for beta. Notably:/p ul liIssue #2161591 by pwolanin, beejeebus, sun: Change default active config from file storage to DB storage./li liIssue #1808248 by alexpott, beejeebus, tayzlor, Nitesh Sethia: Add a separate module install/uninstall step to the config import process./li liIssue #2124535 by Berdir, alexpott, Désiré, xjm | yched: Prevent secondary configuration creates and deletes from breaking the ConfigImporter./li liIssue #1740378 by xjm, Désiré, alexpott | heyrocker: Implement renames in the import cycle./li /ul pThere is still plenty to help out on in the a href= path to beta/a meta issue if you want to help keep the excellent momentum of the last few weeks going./p h3Entities and fields/h3 pOne of the many accomplishments from Drupal DevDays a few weeks ago, was a href= cute and colorful visualization/a of the long dependency chain of issues remaining to stabilize the Entity and Field APIs for beta. Two of them were committed in the last two weeks:/p ul liIssue #2225739 by killua99, Berdir, andypost, pfrenssen: Remove usage of field_info_instances(), use EntityManager::getFieldDefinitions() instead./li liIssue #2226197 by fago, jessebeach: Introduce FieldStorageDefinitionInterface in the Entity Field API./li /ul pThat has unblocked a href= repository of field definitions/a, which is now making good progress, and when committed, will unblock the next level of the dependency chain./p h3Migration/h3 pWith a Drupal 8 beta approaching, how exciting will it be to start testing it out with content and configuration from an existing Drupal 6 site?! Several issues were committed that pave the way for that, including:/p ul liIssue #2211949 by chx, Berdir, fago, benjy: Support keeping new revision id for migrate./li liIssue #2190561 by chx, pcambra, benjy: Migrate in core: Add a load system for migrate plugins./li /ul pAnd now, there's a href= 600KB patch containing 82 actual migrations/a ready for review./p h3A meta for everyone/h3 pNo matter what part of Drupal you're interested in, there's probably a meta issue available for you to chip away at. Here's just some of the ones that had a commit in the last two weeks./p h4Front-end/h4 ul liWhen creating a theme, just when you thought you overrode everything you needed to to get all your markup exactly how you like it, do you hate having to discover yet another obscure theme function that inserts an unwanted codelt;divgt;/code? Well, the Twig team is cleaning that up as part of a href= theme functions to Twig/a. Congratulations to them for removing a function entirely in: Issue #2151123 by joelpittet | Cottser: Remove theme_system_modules_incompatible()./li liWhat's even better than fewer one-off theme functions to override? How about default markup that's perfect to begin with? There's a a href= issue/a and an a href=;status%5B%5D=Openamp;version%5B%5D=8.xamp;issue_tags_op=%3Damp;issue_tags=dreammarkupissue tag/a for that. Yay for progress on that with: Issue #2226923 by pakmanlh, mandar.harkare, mortendk, galooph: Views: remove wrapper around more link - add class to the link./li liGreat default markup is only half the battle. We need a href= default CSS/a to go along with it. Nice to see another issue completed on that: Issue #1662954 by balis_m, mjonesdinero, kalpaitch, IshaDakota, kerasai, ckrina, BarisW | ZenDoodles: Use less-specific tabledrag selectors./li liAnd let's not forget about Javascript. In Drupal 8, we've incorporated some fantastic JS libraries. It's important that we a href= up with their updates/a, including: Issue #2192383 by tstoeckler: Update jQuery to 2.1.0./li /ul h4Back-end/h4 ul liIssue #2209145 by slashrsm, fgm, chx: Move all path alias SQL queries to a single storage controller: gets us another step closer to making a href= of Drupal's data storage swappable/a./li liIssue #2223631 by znerol: Use request stack in database flood backend.: gets us another step closer to a href= Drupal's request management with the improvements made in Symfony 2.4/a./li liIssue #2228341 by sun, znerol, skipyT, ParisLiakos: Objectify session management functions + remove gets us a large step closer to a fully modern a href= API/a./li liIssue #1987848 by disasm, ocsilalala, kim.pepper, pwieck, Cottser, pratik60, h3rj4n, pfrenssen, InternetDevels, ParisLiakos, rgoodine, tlyngej, vijaycs85, robeano: Convert system_theme_default() to a new style controller.: chips away at a href= every single Drupal controller/a./li liIssue #2225399 by marcvangend, yanniboi, mr.baileys, Wim Leers, visabhishek: Apply formatters and widgets to Feed base fields: only a few more issues left to go before every field of every content entity a href= a swappable formatter and widget and is in-place editable/a./li liIssue #2217749 by Wim Leers, Jalandhar, visabhishek, damiankloip: Entity base class should provide standardized cache tags and built-in invalidation.: another great step towards making sure a href= in Drupal 8 is cacheable and correctly invalidated/a./li liIssue #1399846 by slashrsm, Gábor Hojtsy, Berdir, brantwynn, visabhishek, David_Rothstein, cweagans, martin107, SteffenR, Dave Reid: Make unused file 'cleanup' configurable.: part of a href=;status%5B%5D=Openamp;categories%5B%5D=1amp;categories%5B%5D=2amp;version%5B%5D=8.xamp;issue_tags_op=%3Damp;issue_tags=Media+Initiativeclearing the path for media management modules/a in contrib to do everything they need to do without having to fight core to do it./li /ul pYou can also always check the a href= records for Drupal core/a for the full list of Drupal 8 API changes from Drupal 7./p h2 id=planetDrupal 8 Around the Interwebs/h2 pBlog posts about Drupal 8 and how much it's going to rock your face./p ul liWith Drupal 8 embracing modern PHP patterns and libraries, we have a great opportunity to welcome developers from other frameworks, and even languages, into our community. Larry Garfield writes about a href= Drupal 8 to a C# developer/a and Jeffrey McGuire interviews developers with Symfony and Java backgrounds about a href= thoughts on modern PHP/a and a href= Drupal 8 adoption/a, while DrupalCon Austin extends a href= special invitation to the Symfony community/a./li liAt the same time, we already have a strong community that learned Drupal prior to PHP 5.3 and all the changes to the PHP world that came with that. While we decided to not let that stop us from modernizing, we can at least help each other make the transition. Which is why it's so great to see Chris Eastwood's post on a href= his Simple Dialog module/a and Danny Englander's post on a href= his Gratis theme/a./li liOf course, some people don't want to wait until Drupal 8 to get the benefits of PHP modernization. Christopher Skene published a href= page callbacks for Drupal 7/a, the next installment of a href= Drupal 7 code with an eye towards Drupal 8/a, and Chris Pliakas wrote about a href= Composer Manager to get off the Island Now/a./li liSpeaking of modernizing, now that a href= XP is officially end of life/a, how long will it take for everyone still using IE8 to upgrade? Who knows, but David Corbacho summarizes a href= current situation in relation to Drupal 8/a./li liAnd for the site builders out there, Joe Fender explains how to a href= form fields using Drupal 8's Field UI/a./li /ul h2 id=eventsDrupal 8 in Real Life/h2 ul liFirst off, there are numerous upcoming sprints in a href=, DC/a (April 22), a href= (April 23), a href= (April 26-27), and a href= (May 4), plus a a href= 8 Search API sprint in Zurich/a (April 28-May 2). Try working on a Drupal 8 core or contrib issue at one of these sprints!/li listrongApril 23-25: a href= Mexico/a/strong has several Drupal 8-related sessions and a whole SymfonyDay track!/li listrongApril 25-27: a href= Donetsk/a/strong will include a presentation on Drupal 8 from webchick./li listrongApril 26: a href=https://2014.drupalstl.orgDrupalCamp St. Louis/a/strong also includes a Drupal 8 introduction./li listrongMay 2: a href= in the Netherlands has a session on Drupal 8 patterns (plus maybe a streamed Qamp;A with Dries!)/li listrongMay 2-4: a href= Toronto/a/strong doesn't have a set schedule yet, but there are numerous Drupal 8 session proposals./li listrongMay 31-June 8: a href=https://austin2014.drupal.orgDrupalCon Austin/a and extended sprints./strong This year's North American DrupalCon will include many Drupal 8 sessions, trainings, and sprints. The conference is June 2-6 with the community sprint on Jun 7, and there are plans extended sprints the weekends before and after the conference. See the a href=;usp=drive_web#gid=0signup sheet for Austin's extended sprints/a. Austin will be critical to make progress toward Drupal 8's release, so please plan to participate in the sprints if you can!/li /ul h2 id=wrapWhew! That's a wrap!/h2 pDo you follow a href= Planet/a with devotion, or keep a close eye on the a href= event calendar/a, or codegit pull origin 8.x/code every morning without fail before your coffee? We're looking for more contributors to help compile these posts. You could either take a few hours once every six weeks or so to put together a whole post, or help with one section more regularly. a href= xjm/a if you'd like to help communicate all the interesting happenings in Drupal 8!/p

Janez Urevc: DrupalCamp Alpe-Adria - ticket prices go up in only 4 days!

Mon, 04/21/2014 - 19:22
div class=field field-name-body field-type-text-with-summary field-label-hidden view-mode-rssdiv class=field-itemsdiv class=field-item even property=content:encodedpa href= Alpe-Adria/a will be one of the most scenic Drupal events this spring in Europe. It will take place in a magnificent a href= town Portorož/a, which is conveniently located in the northern part of a href= sea/a./p pCamp will happen on 17th and 18th May with extended sprints happening also on 19th and 20th. We already have some a href= session proposals/a and new ones are coming in almost every day! Are you new to Drupal? No problems! We're preparing some very interesting beginner-level sessions and on-site trainings. For those who prefer to code we have some a href= interesting sprints to offer/a! There will be Drupal 8 core and Drupal 8 media sprints going on. Are you interested in organizing another sprint? Do not hesitate to a href= us immediately/a!/p pEarly bird tickets are available only until 25th April. Don't miss your last chance to get them and start planning your travels well in advance. Portorož is a href= nice for families and children/a so you should really consider bringing your significant others with you and maybe extending Drupal camp into a short spring vacation./p piframe allowfullscreen= frameborder=0 height=360 src=// width=640/iframe/p /div/div/div

Drupal Association News: Continuous Integration Efforts Get Easier with Drupal 8

Mon, 04/21/2014 - 16:20
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpimg class=left src= style=height: 180px; float: left; margin: 10px; //p pemAt MidCamp (Midwest Drupal camp), I found out a really fascinating thing about Drupal 8: Support for PHPUnit is going to be part of the base distribution. This means a great deal to Solutions Architects and Developers at Promet because we have been striving to integrate automated tests into our build. Perhaps you remember from my talks or previous posts, number four of my a href= Principles of Continuous Integration/a is Self-Testing Build. This makes Drupal a much more sought-after platform for shops looking to fully embrace Continuous Integration./em/p h2 What do we do now?/h2 pCurrently, Promet uses PHPUnit for testing purposes. Our team (a href= Krejci/a and a href= Milton/a), have instituted the use of Behavioral Driven Development (BDD) using Travis-CI, Behat, Mink, PhantomJS, and PHPUnit. This provides our requirements, use-cases and a way to easily self-code-review. For those not familiar with a href=, I urge you review it. It's a simple process to write use-cases emin English/em, such that someone can program tests against it. The confidence this has given our team in our quality of code, and the confidence the client has in the outcome is phenomenal./p pMichelle can attest to this being the case. In a project she’s working on now, the tests are actually being used to get sign-off that work is complete. All of the tests were created ahead of time and the scenarios are added as needed; therefore, change orders are obvious because the tests are in version control. There is no question on what scenarios we are supporting, when one was added, or when a piece of work is completed to the specifications./p h2 So how do we improve on BDD?/h2 pThe problem with this workflow is that we have to jump to the Functional Test level to test anything at all. In terms of testability, it’s a tiny improvement compared to the Simple Test workflow Drupal has now. However, we have seen improvement since we’ve moved from Selenium to PhantomJS. As you probably know, PhantomJS and Selenium both do browser testing./p pSelenium is a browser “driver”. Through javascript injection, it hooks into a browser allowing you to emulate a user “doing stuff” on a webpage. However, running those browsers is super slow. The startup time alone for each test is over a second… sometimes up to 5 or 6. Who has that kind of time?/p pIn the case of PhantomJS though, we aren’t testing specific browsers. In fact, PhantomJS is a browser, and a mighty fast one at that. This is fine for Promet where it is less significant whether specific browsers function a certain way. PhantomJS has improved our performance for testing over Selenium by strides./p pBut there is something even better! strongTesting at a Unit Level!/strong/p p /p center img alt=d8pyramide.png src= style=border: none; -webkit-transform: rotate(0rad); width: 633px; height: 465px; //center p /p pDrupal has been nearly impossible until Drupal 8. We had the Simple Test framework that was baked into Drupal, but it did what I like to call the Use a Car to Test Another Car approach. Specifically, you had to have a full instance of Drupal running so that it could make a fake instance of Drupal so that you could test. Additionally, functional code isn't very encapsulated. That is, you can't specifically say, My inputs are xyz, and my outputs are abc.. The lack of encapsulation is mostly due to frequent use of global variables and not being able to group functionality with data like you can with objects in Object Oriented Programming (OOP)./p pFear not. The new object oriented framework gives us easy access to new-fangled Dependency Injection, mocking of objects, and other programming patterns that allow us to consolidate a single unit of code. In our case, a unit is a single function within a class, which is the smallest unit of code that can be tested using PHPUnit./p pThis inspires developers to not only write better, testable a href=, but in smaller testable units that are...(insert drumroll, please) Reusable, not to mention, easier to test./p h2 So how does Unit Testing make things easier?/h2 pIn several situations, we could rid ourselves of functional tests altogether. If every single piece of a component is working as expected, then the sum of those parts would equal a feature that works as expected. Lastly, those tests run a couple of orders of magnitude faster than the PhantomJS tests. This means that the tests can easily be part of the build script and not just something that runs on Travis-CI./p pSpeaking of Travis-CI, now we can integrate Travis-CI directly with Drupal. No more hacking the pieces together to get a testable environment outside the box./p h2 Final Thoughts/h2 pOverall, BDD is still flippin’ awesome and has its place in projects; we will still continue to use it. BDD is great for communicating directly with the client with something testable. However, Unit tests will allow us to build a set of reusable code at a lower cost to maintain. These unit tests allow us to better gauge our quality of code. I think these facts, speaking strictly as a Developer, will improve upon the testing process that we already have in place, particularly for our migrations and more technical projects with APIs and integrations. Looking into the future and our use of Drupal 8, I am excited for the availability of new unit test results to be used as insurance to our clients to backup our claims of a href= Developers happy and clients happy? Yes please! Thank you, Drupal 8./p /div/div/div

Mark Koester: Building Mobile Apps for Drupal Conference Sites

Mon, 04/21/2014 - 16:15
div class=field field-name-field-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item even rel=og:image rdfs:seeAlso resource= typeof=foaf:Image src= width=480 height=180 alt= //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:encodedpI'm excited to announce that we've built our first Drupal-powered apps for a href= and a href= The apps are in the Android and Apple marketplace and are helped to improve one association's yearly technical conference./p pThere are times when apps are overkill and unneeded. Frankly there are already too many apps out there. But as we as a company continue to focus on conference sites, this was an obvious use case where taking the plunge into mobile app development made sense. It’s nearly become standard to have an event app at major conferences around the world./p pAt events, internet connectivity isn't that reliable and attendees, speakers and organizers are able to navigate the event much easier with the right mobile tool. Conference sites provide more media attention for sponsors and also provide various ways for networking./p pIn this post, I'd like to discuss our recent work building two mobile apps---one for Apple iOS and another for Google Android. Specifically in this post we’ll look at what we built, and in a future post, we’ll look at how we built these apps using different technologies (Drupal, iOS and Android) as well as some technical and business takeways we gained from this process of integrating a CMS like Drupal with a mobile device./p pLet's take a look at what we've built./p h3Drupal-Powered Conference Sites/h3 pOne of our main focuses over the last several years has been event and conference sites./p pDrupal handles content, users and commerce with increasing sophistication and flexiblity. In Drupal 6, we used a href=http://usecod.orgCOD/a to build club and simple event management systems. In Drupal 7, we decided to shift away from COD and Ubercart and have been building our own a href= registration system using Panopoly, Drupal Commerce and Registration/a./p pThe first fruit of this work was a href= romance writers conference/a that last year took some 150+ orders in the first 10 minutes for signup. This year the same event was even more rapid fire and took a href= orders in the first 3 minutes after registration opened/a!/p pWe love building Drupal sites for events so much that we are, in fact, also working on our first alpha release for this platform called a href= for Drupal/a./p pAlong with that site, this past year we've gotten the chance to test and refine the system on other projects./p pSeveral months ago, a href=https://sperecycling.orgSPE Environomental Division/a came to us to overhaul their site to better deal with their yearly event, GPEC (Global Plastics Environmental Conference). Specifically, we cleaned up their legacy content and sessions and built a clean flexible design and layout. We organized their content and products around their yearly event and we empowered them to handle their own ecommmerce needs and registrations./p pAlong with a full upgrade to handle registration and paid sponsorship, we overhauled their session and awards submissions processes. Potential speakers could submit their abstracts months before the event and admin could manage it from approval to scheduling and room assignment. This allowed them to create a href= dynamic schedule/a and, most importantly for their app, to make their content available for mobile distribution./p pSo, with the content exposed via an API, what did we build?/p pa href= typeof=foaf:Image src= alt= style=width: 100%; height: auto;/a/p h3What We Built: A Conference App with a Drupal Backend/h3 pTo be honest, it's not that uncommon to see conference apps these days. It's one of the easier mobile use cases to build for. (There are even several companies that provide a platform for generating your own apps for events, like Guidebook.)/p pMost conference or event apps provide the following features: event schedule, session and speaker info, venue maps and various about pages as well as perhaps a facebook or twitter feed./p pWe wanted to have all of this along with one key additional change: it needed to be dynamic. In particularly, we wanted a dynamic my schedule functionality; a way that the user could mark sessions they wanted to go to and a dynamic my schedule display. This marking attendance needed to be available and synced on either the site or app. This would then allow the my schedule page to be seen on the app, in the site or even in an exportable and printable format./p pIn the Drupal world, there are also several conference apps. There is nearly a new app for each DrupalCon. These apps provide attendees with the schedule and other event info. While these Drupal apps are quite helpful, they are in most cases static. The event content (sessions, rooms, speakers, etc) was exported and simply built into a page-by-page functionality. Some do provide data pulls but I didn't see any that went far into the functionality we wanted, like login and “flagging” sessions to attend./p pIn many cases this static format is enough, but we felt that these apps missed out on providing a more dynamic and interactive experience. In big events with dozens or hundreds of sessions, a conference without a personalized user schedule is not that helpful. Many attendees end up using a paper version for the simple ability to circle and markup the sessions they want to go to./p pAs such, we took the more dramatic choice to build a dynamic app integrated into the website's backend./p pThis approach allowed us to provide a way for attendees to download the most up to date session info (meaning you didn't have to wait to download a revised version of the app itself, just the content). Event administrators could change the session info even minutes before the event and users could update and see it./p pThe method also allowed attendees to create and manage their own schedule. Users could mark sessions they wanted to attend either via the site or one of the apps. They could then view their personalized schedule both before and during the conference. From a user perspective this was a huge success./p pFrom administrative side, since the attendence data was synced with the site, it also gave the event organizers some rough total attendence numbers for different sessions BEFORE the actual start. Sessions that appeared to have higher demand could be moved to bigger rooms accordingly./p pLike most conference apps, we also chose to put various bits of static info in the app. As I had to explain to different organizers, you can't just extend an existing site into a mobile app. Unlike a CMS like Drupal, each dynamic app functionality takes longer to develop, so where the content was likely to stay static, we built it into the app as static. As such, we elected to keep our about pages, organizer pages and sponsor lists as embedded content./p pa href= typeof=foaf:Image src= alt= style=width: 100%; height: auto;/a/p h3Conclusion:/h3 pFrom a technical perspective, building Mobile Apps with Android and iOS wasn't that easy. It's also not without additional time and cost. Many times a responsive, mobile design is enough since it allows users to have a reasonably good experience on whatever device they use./p pFrom my personal builder and developer perspective, it wasn't quite as hard as I imagined it could have been either. Neither easy nor hard, this approach carried various challenges./p pFor iOS, we were fortunate to have a preexisting library that made developing an iOS onto of an existing Drupal Site: a iOS SDK/a from Kyle Browning. This library significantly helped in creating our iOS app. Specifically, this library abstracted out several common features like logins, pulling node data, etc as well provided an add-on library for integrating flags./p pLike a lot of US-based development, we started with iOS and then built the Android app after. There was no doubt though that we were going to build for both platforms. Unfortunately there wasn’t a preexisting library to use but the basics and structures in the iOS library helped clarify what we needed for the Android version./p pIn conclusion, mobile apps are the more recent and current tech wave. In some cases mobile apps are superfluous. But for Drupal-powered conference sites, a mobile app can be a good fit to improve the user experience and interaction before, during and after you event./p /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 even rel=dc:subjecta href=/tags/drupal-conference typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal Conference/a/divdiv class=field-item odd rel=dc:subjecta href=/tags/conferences typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=conferences/a/divdiv class=field-item even rel=dc:subjecta href=/tags/mobile-apps typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=mobile apps/a/divdiv class=field-item odd rel=dc:subjecta href=/tags/ios typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=iOS/a/divdiv class=field-item even rel=dc:subjecta href=/tags/android typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Android/a/divdiv class=field-item odd rel=dc:subjecta href=/tags/drupal-planet typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal Planet/a/divdiv class=field-item even rel=dc:subjecta href=/tags/planet-drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Planet Drupal/a/divdiv class=field-item odd rel=dc:subjecta href=/tags/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupal/a/divdiv class=field-item even rel=dc:subjecta href=/tags/drupal-commerce typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal Commerce/a/div/div/divdiv class=view view-author view-id-author view-display-id-entity_view_1 view-dom-id-f6eef1806d9900875aa4d8cb399ebb1d div class=view-content div class=views-row views-row-1 views-row-odd views-row-first views-row-last div class=views-field views-field-nothing span class=field-contentdiv class=author_block div class=user_image img typeof=foaf:Image src= width=180 height=180 alt= / /div div class=user_details span class=nameMark Koester/span span class=twitter_handlea href= target=_blank@markwkoester/a/span span class=job_titleMark has worked on Drupal since the early days of D6. He is passionate about open source as well as entrepreneurship. When he isn#039;t building, he enjoys traveling and speaking one of his many foreign languages. /span span class=locationChengdu, China/span /div /div/span /div /div /div /div ul class=links inlineli class=sharethis first lastspan class=sharethis-buttonsdiv class=sharethis-wrapperspan st_url= st_title=Building Mobile Apps for Drupal Conference Sites class=st_facebook_large displaytext=facebook/span span st_url= st_title=Building Mobile Apps for Drupal Conference Sites class=st_twitter_large displaytext=twitter/span span st_url= st_title=Building Mobile Apps for Drupal Conference Sites class=st_googleplus_large displaytext=googleplus/span span st_url= st_title=Building Mobile Apps for Drupal Conference Sites class=st_email_large displaytext=email/span span st_url= st_title=Building Mobile Apps for Drupal Conference Sites class=st_sharethis_large displaytext=sharethis/span script type='text/javascript'var switchTo5x=true;/scriptscript type='text/javascript' src=''/scriptscript type='text/javascript'stLight.options({publisher:'dr-8d62520e-c444-86e2-d911-ab27da97627b'});/script/div/span/li/ul

Unimity Solutions Drupal Blog: Building an Apache Solr Custom Index in Drupal

Mon, 04/21/2014 - 15:28
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedp dir=ltr id=docs-internal-guid-a9f5c550-8300-7fb3-4d3a-9eda02cdf985span id=docs-internal-guid-a9f5c550-6f04-1c18-eb9d-e580369e9498a href= target=_bllt;/bodygt;lt;/htmlgt;/a/span/p/div/div/div

Phase2: DevNation’s Hack Night Champs: Building A Drupal Hosting Dashboard On OpenShift

Mon, 04/21/2014 - 15:18
p dir=ltrThis past Wednesday night, I participated in the a href= Hack Night/a in conjunction with a href= Hat Summit/a. I was joined by Phase2’s CTO a href= Febbraro/a and a href= Caccavano/a, our CMO. Here at Phase2 we are big fans of OpenShift, RedHat’s open source Platform-as-a-Service (PaaS) offering, and we see a huge opportunity for Drupal in this space. In order to make Drupal a first class citizen on OpenShift, we helped develop a href= 7 and 8 quickstart packages for Openshift/a in addition to building the official a href= Origin community site/a using a href= Atrium/a, our Drupal social collaboration distribution./p p dir=ltrSome of the benefits of using a PaaS like OpenShift is the ability to have a uniform environment, security, and automatic deployments with the Git distributed version control system. PaaS also gives you an API to spin up applications the same way Infrastructure as a Service (cloud computing) providers give you an API to spin up compute resources./p p dir=ltrWith our enthusiasm for OpenShift and Drupal, we decided to develop our own Drupal-based PaaS on top of OpenShift as a proof of concept at DevNation’s Hack Night. In just under two and half hours, we were able to create an application to host an OpenShift Origin set up on Google compute engine, and build a Drupal based PaaS on top of this./p p dir=ltrIn order to create a Drupal-based PaaS that can be used like other cloud hosting providers, we developed an application that runs on OpenShift that communicates with the OpenShift API to quickly spin up new applications. Our application was built with node.js and Angular and works alongside another application we built with PHP to help set up Drush-based automation for Drupal sites. With these applications running on OpenShift, you can have your dev, stage and live site all together with the ability to pull a database from stage to dev or promote a database from stage to live./p p dir=ltrHere is a demo I have recorded to show the MVP we put together in 2.5 hours during the hack night.  We had a blast building this Drupal hosting dashboard with OpenShift and I#8217;m happy to say that our team won first prize. Earlier during the conference, we also contributed a number of improvements to a a title=Our fork of the node.js OpenShift Client href= OpenShift Client/a./p piframe width=500 height=313 src=// frameborder=0 webkitallowfullscreen= mozallowfullscreen= allowfullscreen=/iframe/p pa href= Screencast/a from a href= on a href=https://vimeo.comVimeo/a./p p dir=ltr pThis project really shows the power of OpenShift Rest API’s: if you have access to any language that can consume REST web services, you can fully automate your application lifecycle. I’m looking forward to continuing to build, develop, and hack with open source partners like OpenShift./p p style=text-align: center;a href= class= wp-image-6982 aligncenter alt=Frank and Steven win DevNation hack Night! src= width=540 height=405 //a/p

Frederick Giasson: Managing Resource Type Entities (Screencast)

Mon, 04/21/2014 - 14:53
span class=Z3988 title=ctx_ver=Z39.88-2004amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adcamp;;rft.title=Managing Resource Type Entities (Screencast)amp;rft.aulast=Giassonamp;rft.aufirst=Frederickamp;rft.subject=Open Semantic Frameworkamp;rft.subject=OSF Academyamp;rft.subject=OSF for Drupalamp;rft.subject=Planet Drupalamp;rft.subject=Structured Dynamicsamp;rft.source=Frederick Giasson#8217;s Weblogamp;;rft.type=blogPostamp;rft.format=textamp;rft.identifier=;rft.language=English/span pIn this screencast, you will discover how you can use the a href= for Drupal/a user interface toa href= browse, filter and search for codeResource/code entities/a that have been indexed in a href= Semantic Framework/a (OSF) datasets. You will see how you can use it to manage what you want to expose on your Drupal portal./p pThen you will see how you can a href=, a href=, a href= and a href= codeResource/code entities using Drupal./p pFinally you will discover the a href= system/a, and the a href= user interface/a that is available to the Drupal administrators./p pcenterbr / a href= style=margin:10px;overflow:hidden;display:table;line-height:0;text-align:center;width:400px; class=aligncenterimg class=shadow_curl wp-image-2396 size-full src= alt=tut_9_blog_400 width=400 height=223 style=padding:0 !important; margin:0 !important; max-width:100% !important;br/img src= class=shadow_img style=margin:0 !important;height:10px;width:100%;/div/a/center/p

Metal Toad: Pond Life Ep.3

Mon, 04/21/2014 - 09:15
pWelcome once more to the pond! Last week we touched on SASS and it's importance to the developer workflow. We also walked through an introduction of a href= and a href= Both of those tools are key environment tools for anya href= href= configuration./p ul class=links inlineli class=0 first lasta href= rel=tag title=Pond Life Ep.3Read more/a/li /ul

ThinkShout: Desire Paths, Part 1: Retracing Your Audience's Steps

Mon, 04/21/2014 - 09:00
pimg src=/assets/images/blog/desire_path.jpg alt=/p h3emWhy do people visit your organization’s website?/em/h3 pIt’s such a basic question, I’d hesitate to posit it – if it weren’t so fundamental to the work of making the world, and the Web, a better place./p pIf your first thought was something along the lines of “To support our work, of course”, note that the question is not “Why strongemshould/em/strong people visit” but “Why strongemdo/em/strong they”./p pNonprofit organizations often approach communications and outreach assuming that everyone should just get it. Because you spend so much time organizing around complex issues, you may assume a shared vocabulary with the broader world when that vocabulary really only resonates within your organization./p pThis is further complicated because nonprofit departments often have competing priorities: Development wants donors, Program wants event participants, Communications wants names for the email marketing list./p pI can pretty much guarantee that very few people arrive at your website thinking, “You know what would be great? Giving you my email address.”/p pThe truth is, the motivations of your visitors are often very different from your organizational goals. This is further complicated because, to paraphrase Jeanne Bliss from a href= Customer Officer/a, “The nonprofit often does not live in rapport with its constituents because they don’t experience the nonprofit through its departments. The constituent experiences a nonprofit horizontally, across its departmental silos.”/p pTo improve the efficacy of your website by making your users happy, you must resolve the dichotomy between “Desire Paths” and “the desired path.”/p pa href=“Desire path”/a is a term of art in the urban planning world describing the shortest path between an origin and a destination, particularly those that weren’t planned. You’ve seen them: a dirt trail between two sidewalks, a cut corner, a hole in the fence. Desire paths exist in defiance of all the thought that goes into a made environment, the creation of what planners consider the right way to move through a space. An architect might think, “The staircase will give this hill some gravitas.” The college students may think, “Ehn, I’d rather just walk up the hill,” the resulting path eroding that gravitas./p pYou can see the parallels to your website, I’m sure. We spend hours thinking about the information architecture most likely to move visitors into a funnel that will lead them to donate or volunteer – only for them to pop up on that blog post mentioning Channing Tatum, liking it, and closing the tab./p pIf Channing Tatum resonates with a core audience segment, you need to find a way to tap into that. The magic of the Internet, the work of the user experience engineer, is to find the intersection of the desire path – the motivation driving someone to visit your site – with the strongemdesired/em/strong path, or any of the potential actions you hope a visitor will take to support your organizational goals./p pTo begin, understanding how they arrive at your website will give you clues about what motivated them to check you out./p h3Search/h3 pThere’s no greater shortcut to your content than a href= Google/a. In the 7 years since analytics guru Avinash Kaushik pronounced “a href= pages are dead/a,” we’ve seen search become ever more important./p pAs much as we may complain about web search being a href= ultimate conversation killer/a, these people are coming to your site strongdriven by the desire to know something/strong. Is your website prepared not only to answer the question, but to redirect that motivation into greater engagement?/p pIn a recent audit of some of ThinkShout’s great clients – with monthly traffic ranging from a couple of thousand visits on up to hundreds of thousands – we found:/p ul lipHomepage traffic accounted for less than 20% of the total for 7 of 9 organizations; for 2 of the 9, it’s less than 10%./p/li lipThe percentage of traffic driven by search was more than 40% for 7 of 9; for 5 of them, it’s significantly more than half./p/li lipThe a href= rate/a for search traffic for 6 of the 9 was significantly worse than for the site as a whole./p/li /ul pI do need to toot a little horn for the team here at ThinkShout, because for the 4 sites we can compare year over year, we’ve seen improvements of between 6% and 20% in the bounce rate for search traffic post-redesign. That’s because, as part of our discovery process, we put user motivations first – and you can, too./p pstrongTip: Know Your “Search Terms”/strong/p pSearch traffic is probably the easiest to get real, actionable data for, even if all you have is Google Analytics./p pThis is advice that has been repeated almost endlessly, but Google made it more complicated a few years ago by a href= out search results for anybody logged in to one of their products/a. (You know, almost everybody.) Fortunately, there’s an easy way to approximate that data./p ol lipGo to the organic search terms report at “Acquisition” -gt; “Keywords” -gt; “Organic.” You’ll see most of the terms are “not provided.quot;/p/li lipSet the “Secondary Dimension” to “Behavior” -gt; “Landing Page.” This will show you where that “not provided” traffic is going, which can give you a clue as to the search terms./p/li lipClick the “advanced” link next to the search box and change it to “Include” “Landing Page” “Containing” and the URL of one of your landing pages, then click “Apply.” This will align the “not provided” landing page with all of the returned search terms for that page. Extrapolate from there for each of your highest traffic landing pages to build your list of important search terms./p/li /ol h3Social Media/h3 pSocial media traffic is generally some of the worst quality, in terms of meeting your organizational goals./p pThe metrics for bounce rate, visit duration, and pages per session were significantly worse for social referrals compared to the site as a whole for 6 of the 9 organizations we reviewed. (Interestingly, the redesigned a href= showed significant improvement across the board.) For the most part, they come, they spend a moment, they go back to Facebook./p pSocial traffic can be driven by all sorts of user motivations, from links posted in your own social channels – “I want to keep up with the latest news from one of my favorite organizations” – to something posted on your Wall by your mom – “I’d better know what that is so I can talk about it at our next dinner.” You’re not likely to meet all of them, so your analysis should focus on the highest value interactions. What are the outliers? If you have a few pages that outperform the majority, try to figure out what’s unique about them./p pAgain, pay special attention to landing pages. High bounce rates from a news article about your latest initiative probably won’t be of much concern. Bounces from your donation page should be: what drove traffic there in the first place, if it wasn’t you? Find those influencers!/p pstrongTip: Set up a special Analytics dashboard for social media./strong/p pEven if you can’t afford something like a href=, you can use Google Analytics to do some pretty good analysis of traffic being driven to you by social channels. I find that the default reports provided are actually harder to use than they used to be, but you can aggregate the information most important to your team on a custom dashboard./p ol lipStart with a premade dashboard. Go to “Dashboards” -gt; “New Dashboard” and click “Import from Gallery.”/p/li lipJustin Cutroni’s “Social Media Dashboard” is a great starting point. Click “Import”./p/li lip“Social Media Dashboard” will now be listed as an option under your Dashboards. Modify it to meet your needs!/p/li /ol h3Other Referrals/h3 pIf somebody likes your content enough to post it on their own website, you need to be aware of that, not just because you may have found a new partner, but because analyzing the pages sending traffic to you can tell you more about your own (potential) audience./p pOne of ThinkShout’s clients got significant traffic – roughly 3% of the site total in the first quarter of this year – from a regional magazine, mostly from a single article in which they were mentioned only tangentially; 90% of the visits are new to them. Knowing this opens the opportunity to think about user motivations from several angles:/p ul lipWhat is it about our services that prompted the magazine to mention us? What do they know about their own audience that caused them to try to match them to our own? Are there other opportunities to engage that audience? Could what became a major landing page have been structured better?/p/li lipWhat is it about the service described that prompted all the clickthroughs? These folks had a particular motivation for engaging with the content on the magazine’s site in the first place, which triggered the motivation to look at our offerings. How can we tap into that?/p/li lipWas there any difference in behavior between the new visitors and repeat visitors?/p/li /ul pstrongTip: Look at the actual sites and pages that are referring traffic your way./strong/p ul lipGo to the basic Referrals report in Google Analytics: “Acquisition” -gt; “All Referrals.”/p/li lipClick the domain name of the “Source” that interests you. This will bring up a list of the pages on that site that have referred visitors to you./p/li lipCombine one of the referral pages with the domain of the source. (Side note: I’m sure Google used to provide a direct link to this, but doesn’t seem to anymore. Boo.)/p/li lipSpend some time poking around the site. Think about their audiences and what may have sparked the interest in your own content./p/li /ul h3Campaigns/h3 pYou’re probably running campaigns to drive your current supporters to your website through email, social channels, and web advertising – maybe even billboard, radio, and TV, if you’re blessed with a large advertising budget./p pIf you’re not already a href= tracking codes to better quantify the success of your campaigns/a, you should be. The desire paths here will be much more evident – and likely in line with your organizational goals: you send out a Call to Action (CTA), they respond. The key thing to watch for here is when the CTA doesn’t lead them to take desired action./p pstrongTip: Track your non-digital campaigns./strong/p pJust because you’re not sending a URL to your supporters directly doesn’t mean you can’t put some basic campaign tracking in place./p ol lipFirst, set up the campaign URL, complete with codes./p/li lipThen, redirect to that URL, which Google will pick up./p ul liFor print, you can a href= the long campaign URL in a QR code/a./li liIf you don’t expect your users to have a QR reader, create a simple landing page with a redirect to the tracked URL: is reasonable for somebody to type into a browser, so a href= it with a 301/a./li liOr, use an URL shortener like a href= to create the redirect to the campaign URL for you./li /ul/li /ol h3Direct Traffic/h3 pUh-oh, I was afraid you were going to stick around this long. There’s not much to say about “Direct” traffic, in terms of quantifiable user motivations. Maybe they typed your URL directly into their browser. Maybe somebody chatted the URL to them (the so-called “dark social” network). Maybe your mom’s proud of your work and mentioned it to a friend. Maybe they’ve bookmarked your site. Maybe you sent out an email campaign without a tracking code. Maybe… well, you get the picture./p pDirect traffic does not have a lot of data attached to it that will enable you to figure out why a user arrived at your site beyond examining their landing pages./p pThis is, however, very important traffic: for some reason, almost unbidden, they showed up at your site. We can still apply the concept of desire paths to this segment, we just need to do it a bit differently: by taking a look at how they move through your site itself./p pDetermining “how” users arrive at your site is just the beginning of understanding the “why.” The next question to answer is “what”, as in “What are they doing on our site now?” By combining “how” with “what”, we can build models of behavior that will help us understand what motivates our audiences to seek us out online./p pAnd once we get to the “why”, we be able to create structures that tap into the identified desire paths and subtly redirect them in ways that will help you meet your organizational goals./p pSo, if you’re so motivated, add to ThinkShout’s “direct traffic” report by bookmarking this page and we’ll point you to the next part when it’s available./p

Drupal core announcements: Approachable tasks for Drupal 8 Beta 1

Mon, 04/21/2014 - 03:28
pIf you couldn't make the (nearly) back-to-back sprints on beta-blocking issues at a href= DevDays Szeged/a and a href= Camp/a, don't worry! We still have some leftover sprint tasks that will help with the first Drupal 8 beta release. Many of the a href=;status%5B%5D=13amp;status%5B%5D=8amp;status%5B%5D=14amp;status%5B%5D=4amp;version%5B%5D=8.xamp;issue_tags_op=%3Damp;issue_tags=beta+blocker27 remaining beta blockers/a require deep knowledge of the problem space; however, the tasks listed here (while not necessarily quick or easy) are more approachable and self-contained. Some of these issues are beta-blocking in their own right; others are beta target issues that would ideally be done for a beta release even if they aren't critical enough to block it./p pemIf you're new to core contribution or Drupal 8, check out the a href= Contribution Mentoring/a program instead./em/p pimg src= alt=Sprinters at the beta sprint, wearing bunny ears. //p h3Documenting Critical Drupal 8 APIs/h3 h4a href= Change record: Apply formatters and widgets to rendered entity base fields/a/h4 pEntities in Drupal 7 and 8 have two kinds of field data: base fields (or properties in Drupal 7), like the node author field or the taxonomy term description, and configurable field instances, which can be attached to a given fieldable entity type's bundles through the user interface. Previously, it was not possible to use widgets or formatters for base fields, so they typically use custom form elements and rendering code that are not compatible with Drupal 8's in-place editing functionality. Since December, however, it emis/em possible to use widgets and formatters on base fields -- but there is no strongchange record/strong yet for this improvement./p h4a href= Document in WSCCI change notice or handbook all the menu changes (tasks, actions, contextual links, menu links) from 7 to 8/a/h4 pIn order for contrib developers to make good use of our first beta release, we need good documentation of the new Drupal 8 routing and menu systems. The first step is to thoroughly document exactly how a Drupal 7 module's codehook_menu()/code is upgraded to Drupal 8, and the a href= change record/a is only partially complete. Join the discussion on this issue and help us strongcomplete this critical documentation/strong./p h4a href= Document the internals of the router/a/h4 pWhile not explicitly beta-blocking at this point, more complete API documentation for the routing system overall will be very valuable to contributed module developers using the first beta release. Help strongimprove the routing documentation/strong both in the handbook and in the Druapl 8 codebase./p h4a href= Document how plugin definitions should declare config dependencies/a/h4 pThis is a documentation followup for one small API change that supports the new configuration dependency system. It sits at the intersection of two new (and complicated) Drupal 8 APIs: plugin derivatives and the configuration entity system. Most of the confusing work for this issue is done, and it has resulted in a new a href= page on configuration entity dependencies/a. The remaining task is to strongadd documentation/strong of the codeconfig_dependencies/code key in plugin derivative definitions to the API documentation in the codebase. (See under Calculating dependencies in plugins and their derivatives on the handbook page.) The handbook page, which is about configuration dependencies generally, also needs further work, but that is not blocking for this issue./p h3Configuration system/h3 h4a href= Translation sync should be stored in own storage instead of injected in field instance settings/a/h4 pThis issue for the content translation module changes the way some of the module's configuration is stored. It's an easier change to implement compared to other deep architectural beta blockers for the Configuration system and the Entity Field API, but it still needs some work to resolve. The next step is to strongincorporate the latest feedback/strong in comments #24 through #27 on the issue. This is also a great spot for multilingual initiative contributors to help with the beta./p h4a href= Configuration file name collisions silently ignored for default configuration/a/h4 pThis critical configuration system bug isn't a hard blocker for the beta release, but it can cause significant problems. An in-progress patch on the issue needs strongtest failures resolved/strong, strongupdates for the latest changes/strong in the configuration system, and other improvements./p h3Entity Field API/h3 h4a href= [Meta] Expand Entity Type interfaces to provide methods/a/h4 pDrupal 8 core provides numerous entity types, but the full API for each type is not easily documented or discoverable, since the entity's properties are accessed through magic getters. To improve the developer experience, each entity type interface is being expanded with relevant methods for the specific entity. (For example, codeNodeInterface/code now has methods like codeisPromoted()/code, codeisPublished()/code, codegetTitle()/code, and codesetTitle()/code.) All the methods for content entity types have been added, but only 1/4 of the configuration entity type interfaces are complete. Most issues have a submitted patch, and what is most needed is strongarchitectural review/strong of the proposed interface methods. (For example, see a href= #19 on the FieldConfig issue/a.) If you have experience with one of the subsystems that still has an open child issue, or if you have a sound grasp on OO design generally, we could use your help to strongthoroughly review these patches/strong so that the completed APIs are available for contributed module developers in a beta release./p h4a href= Add $EntityType::load() and loadMultiple() to simplify loading entities/a/h4 pIn a similar vein of improving the entity system's developer experience by making the API more discoverable and removing exposure to internal concepts, this issue adds static methods for loading the entities of each type. The patch needs to be strongrerolled to apply to HEAD/strong, and then needs strongarchitectural review/strong./p h4a href= [META] Apply formatters and widgets to rendered entity base fields/a/h4 pRemember that issue above about a href= and formatters for base fields/a? We also need to convert base fields other than the node title to also use widgets and formatters rather than custom code. This isn't considered beta-blocking, but it will change how contributed module developers interact with these entity types (plus make it so that in-place editing behaves in a more expected fashion). The several child issues of this meta (one per entity type) need either strongfurther work on the patch/strong or strongcode review/strong. If you're somewhat familiar with entities and fields in Drupal 8, this is a good place to help./p h3Views conversions/h3 h4a href= [Meta] Convert core listings to Views/a/h4 pOne of the major benefits of having Views in core is that legacy one-off listings in core can be replaced with user-configurable views. Views is used in numerous places in core already, for example, the user and content administration screens, the promoted node frontpage and RSS feed, and numerous blocks like the Recent content and Who's online blocks. A handful of more complicated legacy core listings still need to be strongconverted to views/strong. These conversions don't block a beta release, but are targeted for the beta since adding them involves removing legacy API functions. In particular, it would be valuable to complete the conversions of the a href= admin page/a and the a href= term pages/a to views for a beta release. Additionally, a href= the content revision table with a view/a is blocked on a a href= views bug related to content revisions/a./p

Hook 42: Hook 42 Presentations at Stanford Drupal Camp

Sun, 04/20/2014 - 23:53
div class=image div class=field-items class=field-items div class=field-item even rel=og:image rdfs:seeAlso resource= class=field-item evenimg typeof=foaf:Image src= width=220 height=245 alt=Stanford Drupal Drop title=Stanford Drupal Drop //div /div /div div class=field field-name-field-display-date field-type-date field-label-hidden field-wrapper div class=field-items class=field-items div class=field-item even class=field-item evenspan class=date-display-start property=dc:date datatype=xsd:dateTime content=2014-04-18T00:00:00-07:00Friday, April 18, 2014/span to span class=date-display-end property=dc:date datatype=xsd:dateTime content=2014-04-19T00:00:00-07:00Saturday, April 19, 2014/span/div /div /div div class=body field div class=field-items class=field-items div class=field-item even property=content:encoded class=field-item evenpThe Hook 42 team had a great time at a href= target=_blankStanford Drupal Camp/a this weekend.  Kristen and Aimee presented two sessions each and four other members of our team attended, Lindsay, K2 (Kristin), Marc, and Marc's 15 year old son Dean.  It was the first Drupal camp experience for the extended team and they enjoyed the great topics, beautiful facilities, and the welcoming community.  Many thanks to the Stanford Drupal community for hosting such a great event!/p pKristen and Aimee presented four sessions.  We normally cover a bunch of detail so we've attached our slides for your reference:/p ulliSite Tune-up, Vroom Vroom! by Kristen Pol (DrupalCon session!) - a href= target=_blankSession Overview/a/li liMigrating from Drupal to Drupal: Using migrate and migrate_d2d by Kristen Pol - a href= target=_blankSession Overview/a/li liZicasso Case Study: The Million Node Migration (Business Emphasis) by Aimee Degnan - a href= target=_blankSession Overview/a/li li(Don't Fear) The Features, Now With More Cowbell by Aimee Degnan - a href= target=_blankSession Overview/a/li /ulpIf you have any questions, a href=http://contactcontact us/a!/p pOther interesting links:/p ulliReusable features by Stanford's Zach Chandler: a href= target=_blank /ul/div /div /div div class=field field-name-field-attachments field-type-file field-label-above field-wrapper div class=field-label class=field-labelAttachmentsnbsp;/div div class=field-items class=field-items div class=field-item even class=field-item evenspan class=fileimg class=file-icon alt= title=application/pdf src=/modules/file/icons/application-pdf.png / a href= type=application/pdf; length=1147707zicasso-case-study-business-pm-hook42-stanford.pdf/a/span/div div class=field-item odd class=field-item even oddspan class=fileimg class=file-icon alt= title=application/pdf src=/modules/file/icons/application-pdf.png / a href= type=application/pdf; length=3556424features-more-cowbell-hook42-stanford.pdf/a/span/div div class=field-item even class=field-item even odd evenspan class=fileimg class=file-icon alt= title=application/pdf src=/modules/file/icons/application-pdf.png / a href= type=application/pdf; length=1685737hook42-drupal-migration-v1.pdf/a/span/div div class=field-item odd class=field-item even odd even oddspan class=fileimg class=file-icon alt= title=application/pdf src=/modules/file/icons/application-pdf.png / a href= type=application/pdf; length=1550029hook42-drupal-site-tuneup-v1.pdf/a/span/div /div /div div class=field field-name-field-display-author field-type-entityreference field-label-hidden field-wrapper div class=field-items class=field-items div class=field-item even class=field-item evenAimee Degnan/div div class=field-item odd class=field-item even oddKristen Pol/div /div /div div class=field field-name-field-topics-tr field-type-taxonomy-term-reference field-label-inline clearfix field-wrapperh2 class=field-labelTopics: /h2ul class=links inlineli class=taxonomy-term-reference-0 class=field-item evena href=/blog/community typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Community/a/lili class=taxonomy-term-reference-1 class=field-item even odda href=/blog/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a/lili class=taxonomy-term-reference-2 class=field-item even odd evena href=/blog/drupal-planet typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal Planet/a/lili class=taxonomy-term-reference-3 class=field-item even odd even odda href=/blog/presentations typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Presentations/a/li/ul/divdiv class=field field-name-field-service-tr field-type-taxonomy-term-reference field-label-inline clearfix field-wrapperh2 class=field-labelServices: /h2ul class=links inlineli class=taxonomy-term-reference-0 class=field-item evena href=/service/business-process-improvement typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Business Process Improvement/a/lili class=taxonomy-term-reference-1 class=field-item even odda href=/service/complex-environments typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Complex Environments/a/lili class=taxonomy-term-reference-2 class=field-item even odd evena href=/service/development typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Development/a/lili class=taxonomy-term-reference-3 class=field-item even odd even odda href=/service/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a/lili class=taxonomy-term-reference-4 class=field-item even odd even odd evena href=/service/integration typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Integration/a/lili class=taxonomy-term-reference-5 class=field-item even odd even odd even odda href=/service/migration typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Migration/a/lili class=taxonomy-term-reference-6 class=field-item even odd even odd even odd evena href=/service/project-management typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Project Management/a/lili class=taxonomy-term-reference-7 class=field-item even odd even odd even odd even odda href=/service/scalability typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Scalability/a/lili class=taxonomy-term-reference-8 class=field-item even odd even odd even odd even odd evena href=/service/upgrade typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Upgrade/a/li/ul/div

Friendly Machine: The Case Against Drupal Base Themes

Sun, 04/20/2014 - 20:34
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpWhen it comes to Drupal base themes, it seems the conversation is often limited to which one you should choose, rather than discussing whether you should be using one at all. As someone who has spent a lot of time a href= the virtues/a of base themes, I thought I'd share the other side of the argument and ask if we should we use contributed base themes in our projects./p pThis discussion is really part of a larger debate that front-end developers are having about CSS and grid frameworks in general (see a href= and a href=, but it seems particularly relevant when discussing Drupal base themes because all of the issues are magnified due to added complexity./p h2 id=why-we-use-base-themesWhy We Use Base Themes/h2 pWhy do so many of us use base themes? The easy answer is that they can save us time and potentially make us more efficient. Sometimes they can also act as common ground for development teams. But I think a more complete answer is that they act as a useful crutch, particularly when first learning Drupal theming or responsive design./p pAt some point we all had to build our first Drupal site or our first responsive site - probably under deadline - and we looked to a base theme or framework for help. It allowed us to get the job done on time and within budget, but perhaps without fully understanding everything that was going on under the hood./p pOver time we probably learned emmost/em of the base theme and developed a deeper understanding of responsive design, but the framework eventually became a comfortable place. We stuck with it, happily soldiering on until one day.../p h2 id=when-the-shortcut-becomes-the-long-wayWhen the Shortcut Becomes the Long Way/h2 pIf you've been working with base themes for a while, the moment has certainly come when you have found yourself fighting with it. By design, base themes and other frameworks are opinionated - they make decisions about how to solve certain problems. Most of the time this is a good thing. It can help you accomplish things more quickly. Until it doesn't, and then your base theme is actually slowing you down and causing problems./p pPart of the reason why this happens is that the developer doesn't have full mastery of the base theme -  or underlying concepts  - and therefore doesn't know why something is happening. This is bound to happen with base themes like Omega and Zen that are complex and have a very granular file structure, lots of hooks, etc. It can take some effort to track issues down./p pOther times it's not mastery as much as the choices being made by the base theme don't match up with the project at hand. You find yourself at cross purposes with the base theme, possibly even trying to sort out incompatibilities between the base theme and a module you want to use./p pAnd all the hacks you add to sort things out? More kilobytes that have to be downloaded by a user on a mobile device./p h2 id=fast-sites-win-the-dayFast Sites Win the Day/h2 pThis leads us to another reason you might not want to use a base theme - it will probably slow down your site vs a theme that is tailored for a specific project. The case has been definitively made that faster sites are more successful sites (see a href= and a href= In most cases, base themes are going to include a lot of stuff that you are not going to need on a given project. The 'extra' stuff is bloat that will end up slowing your site down./p pThis isn't a slam on base themes. Most of them are akin to a Swiss army knife. They have things in them that help accomodate a lot of different scenarios - they're flexible. This can be a big help if you're a beginner, but what if you're a seasoned front-end developer tasked with building a high performance site?/p pIn that case, maybe a base theme isn't the way to go./p h2 id=the-role-for-base-themesThe Role for Base Themes/h2 pSome will sing the praises of a href= or a href= or their favorite lean base theme of choice, insisting it solves all of the issues I've mentioned. I certainly have no quarrel with using those base themes on projects if you've mastered them and find them useful. It can also be helpful to employ Zen or Omega. It really depends on the specific project. This isn't a post bashing base themes./p pMy own thinking on the topic, however, has shifted. I've decided to move away from base themes whenever possible. My decision stems from wanting lean code that helps me build fast, mobile-first sites. It also allows me to understand exactly what is happening with the code because I'm the one who wrote it. Ultimately, I think this practice makes me better at my job as a front-end developer, and importantly, I'm also delivering a better product to my clients. I came to this place after spending so much time hacking apart base themes that they were no longer recognizable. It made more sense to just chuck them entirely and start fresh./p pOf course, I haven't thrown efficiency considerations aside. I have my own starter theme to make my work easier, and this is what I would advise others who are considering a base theme to do as well. Create your own bag of tricks. If there ends up being things in it that don't fit a particular project, you'll know exactly where they are so that you can easily discard them./p pOne last tangential thought on this topic - a fantastic development for Drupal 8 would be for core to add no CSS whatsoever, minimal markup and then let themes in contrib add commonly requested bells and whistles. This is a philosophical approach that would be hugely positive for Drupal as a mobile-first approach takes hold as the standard for front-end development./p pIf you have any comments on this post, you may politely leave them below./p /div/div/div

bojanz's blog: How Devel causes heisenbugs

Sat, 04/19/2014 - 13:52
Here’s what killed my Friday. The story has been edited to remove pain, suffering, prolonged coffee intake. a class=moretag href= Read more.../aimg alt= border=0 src=;blog=13038938#038;post=136#038;subd=bojanz#038;ref=#038;feed=1 width=1 height=1 /

Frederick Giasson: Configuring and Using OSF FieldStorage (Screencast)

Fri, 04/18/2014 - 15:07
span class=Z3988 title=ctx_ver=Z39.88-2004amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adcamp;;rft.title=Configuring and Using OSF FieldStorage (Screencast)amp;rft.aulast=Giassonamp;rft.aufirst=Frederickamp;rft.subject=OSF Academyamp;rft.subject=OSF for Drupalamp;rft.subject=Planet Drupalamp;rft.subject=Structured Dynamicsamp;rft.source=Frederick Giasson#8217;s Weblogamp;;rft.type=blogPostamp;rft.format=textamp;rft.identifier=;rft.language=English/span pThis screencast introduces you to another one of the most important a href= for Drupal/code/a connector: the a href= FieldStorage module/a. What this module does is to create a new codeFieldStorage/code type for Drupal7. It enables Drupal7 to save the values of its codeContent Types/code fields into another storage system than the default one (i.e MySQL in most of the cases)./p pBecause of the way that the codeField/code system has been designed in codeDrupal7/code, it is possible to save the values of different fields that compose the same codeContent Type/code bundle into different field storage system. For example, if your codeContent Type bundle/code is composed of 10 fields, then 4 of them could be saved into MySQL and 6 of them into codeOSF/code./p pThe main purpose of the OSF FieldStorage module is to be able to save Drupal local codeContent Type/code information into OSF. What that means is that all your Drupal7 local content then become accessible, manageable and manipulatable using the 27 a href=http://opensemanticframework.orgOpen Semantic Framework (OSF)/a web services endpoints. Your local Drupal content can then be shared with other Drupal instances that could use codeOSF for Drupal/code to connect to that same OSF instance and seamlessly republish/re-purpose that local content from the other Drupal portal./p pa href= is the documentation/a of the architecture of this connector module./p pThis is the power of the OSF FieldStorage connector module. It supports the following Drupal features:/p ol liFull FieldStorage API/li liEntities caching/li lia href= lia href= lia href= field widgets/a/li lia href= feature in 6 formats/a/li /ol pIn this screencast, you will be introduced to Drupal7#8242;s Field system. Then you will see how the OSF FieldStorage module creates a new FieldStorage type for Drupal7 and how it can be used. Then you will see how to configure the OSF FieldStorage module: to creating new Content Type fields that uses this codeosf_fieldstorage/code type, how to map these fields to codeRDF/code, how to use one of the 29 supported field widgets, etc./p pFinally, you will see how you can synchronize strongexisting/strong Content Type pages (that was created before codeOSF for Drupal/code was installed on your Drupal instance) into a OSF instance./p pnbsp;/p pcenterbr / a href= style=margin:10px;overflow:hidden;display:table;line-height:0;text-align:center;width:400px; class=aligncenterimg class=shadow_curl wp-image-2389 size-full src= alt=tut_8_blog_400 width=400 height=224 style=padding:0 !important; margin:0 !important; max-width:100% !important;br/img src= class=shadow_img style=margin:0 !important;height:10px;width:100%;/div/a/center/p

Drupalize.Me: Hiding form fields in Drupal 8

Fri, 04/18/2014 - 15: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 evenpIf you have worked with the Field UI in Drupal 7 you will know that you are able to prevent fields from being displayed when viewing entities (e.g. content, users etc). It was fairly simple, you would go to the Manage Display tab of an entity and move the field to the ‘Hidden’ region as shown in the screenshot below./p pimg alt= height=869 src= style=font-size: 0.923em; line-height: 1.5em; width=1073 //p pSo you could hide a fields output from being displayed when viewing that entity. But what about when editing that entity? There was no way in the Drupal 7 Field UI to hide a field on a form. You would have to write some form of stronghook_form_alter()/strong in a custom module and manually force the field to be hidden, like shown in a href= example/a./p/div/div/div

InternetDevels: Drupal and high-load projects. Myth or reality?

Fri, 04/18/2014 - 14:03
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenp dir=ltr style=text-align: justify;One of spring days 2012 brought us a new project. One of our regular customers recommended our company to a very ambitious and engaged Moscow businessman. After reading the specifications we were at a loss… after 5 years of active web-development! HiConversion project demanded the following:/p a href= more/a/div/div/div

.VDMi/Blog: Paragraphs: content editing reinvented

Fri, 04/18/2014 - 09:50
div class=field field-name-field-afbeelding field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/blog/paragraphs-content-editing-reinventedimg style=max-width: 40%; height: auto; float: left; margin-right: 1em; align=left hspace=10 src= width=167 height=167 alt=Paragraphs: content editing reinvented //a/div/div/divdiv class=field field-name-field-samenvatting1 field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item evenThe biggest problem of the modern web is that non-tech-savvy users have to manage the content. Those people can quite mess up your responsive layout with their way too big tables, inline images and text marked up with Word. That#039;s why we invented Paragraphs, less to mess up, but still the flexibility of WYSIWYG./div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpLet's face it, the web has evolved. But what about content editors? Dit they evolve with the web?/ppMost of them still like to paste everything they can find into a big WYSIWYG texarea. That's not a viable option when you want to build responsive website. It gets even hard when you want to use cool technologies like a href= target=_blankresponsive images/a. Wouldn't it be awesome if you had all those pictures in image fields, or maybe even better, in a href= target=_blankScald/a? Behold: a href= target=_blankParagraphs/a!/ppWe developed Paragraphs to be a full blown replacement of the default body field. It's comparable with Inline Entity Form, except that you can use different types of bundles in the same field. It also comes with content editing features like having your paragraphs collapsed by default. More features are on the way!/ppSome examples of Paragraph Bundles that we have created in the past:/pulliSlideshow - A simple slideshow in your content:br /- Create a slideshow Paragraph /- Add a multi-value image /- Use a slideshow formatter./liliYoutube embed - A Youtube embed between your text blocks:br /- Create a Youtube Paragraph /- Add a simple a href= field. br /- Tweak the formatter settings to fit your needs./liliCustomer Quote - Add a personal quote/review from your customer in your content:br /- Add a author, text and optional email /- Theme it to your style, with bundles-specific templates./li/ulpThe bundles above are use-case-specific, we often start with the following bundles:/pulliText: a simple WYSIWYG textfield with the basis buttons enabled, like bold and italic./liliText Left, Image Right: same as above, but with an image on the right of the text./liliText Right, Image Left: same as above, but with the image on the left./liliFullwidth image: an image that takes the full width of the content./li/ulpAll paragraph bundles have their own display settings and view modes, just like nodes! Because of that, every paragraph item also has it's own theme suggestion./ppBecause of the seperation of content, it's great for a responsive site. For example: Just add a wrapper around your slider paragraphs that hides the slider on mobile, or makes it smaller on tablets./ppExcited already? a href= target=_blankTry it out!/abr /Want to know more? a href= the project page./a/ppNote: Paragraphs is also useful if you want to build a a href= site/a with Parallax scrolling. More on that later!/p/div/div/div

NYC Camp News Announcements: NYC Camp Keynote by Atefeh Riazi (UN CITO, ASG)

Fri, 04/18/2014 - 00:37
a href=/news/nyc-camp-keynote-atefeh-riazi-un-cito-asgimg src= width=620 height=400 //a pLast Saturday afternoon, we werenbsp;very fortunate to havenbsp;a href= target=_blank rel=nofollowAtefeh Riazi/a, UN CITO and Assistant Secretary General (ASG),nbsp;deliver a keynote presentation to the 500+ Drupalists in attendance./p pSalem Avan delivered the introductionnbsp;to the keynote, and spoke about emwe the people/emnbsp;and ournbsp;inherited collective responsibility to help advance the UN's goals of furtheringnbsp;peace and security, international development, and human rights./p pMs. Riazi then delivered a riveting keynote that was a call to action for the Drupal community to help use technology to better the world. She emphasized thenbsp;importance of leveraging innovation, collaboration and partnerships in order to solve thenbsp;global challenges we face, and to respondnbsp;to this call to actionnbsp;in a coordinated manner through partnerships that bring all of our best resources to bear./p pHer exciting keynote address was followed-up with a stirringnbsp;panel on nbsp;Women amp;nbsp;Technology Leadership, that featured Mr. Riazi,nbsp;a href= target=_blank rel=nofollowHolly Ross/anbsp;(Executive Director or the Drupal Association), andnbsp;a href= target=_blank rel=nofollowAngie Byron/anbsp;(webchick). The panelist explored the pivotal importancenbsp;of furthering female leadership is technology circles, and particularly the Drupal community.nbsp;/p pYou can watch the full keynote here onnbsp;stronga href= target=_blank rel=nofollowUN WebTV/a/strong./p pYou can also view thenbsp;a href= target=_blank rel=nofollowFlickr photo album/anbsp;from the Keynotenbsp;a href= target=_blank rel=nofollowhere/anbsp;and the Panel Discussionnbsp;a href= target=_blank rel=nofollowhere/a/p pThanks again to the UN Office of Information Communications Technology (OICT) for their generous support of NYC Camp and the Drupal NYC Community. You can find our more about thenbsp;a href= target=_blank rel=nofollowUN OICT/anbsp;at theirnbsp;a href= target=_blank rel=nofollowwebsite/a,nbsp;a href= target=_blank rel=nofollowFacebook page/anbsp;and by following them onnbsp;a href= target=_blank rel=nofollowTwitter/a./p Featured Case Studies: The Woodhouse Day Spa

Fri, 04/18/2014 - 00:28
div class=field field-name-field-mainimage field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg src= width=588 height=306 alt=The Woodhouse Day Spa Home Page //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.woodhousespas.com class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpUnleashed Technologies developed an enterprise platform that easily scales to accommodate The Woodhouse Day Spa’s explosive growth, as they take the company from 30 to more than 200 franchises. The Woodhouse Day Spa can now instantly create franchise sites that are consistent in branding and content, yet managed and updated by the franchisee. All sites for The Woodhouse Day Spa are fully integrated into spa management systems to provide a seamless experience to visitors. The Drupal platform developed for The Woodhouse Day Spa brings usability and control to its franchisees in order to increase engagement and improve ROI./p pThe Woodhouse Day Spa website won the 2013 Blue Drop Award for a href= rel=nofollowDrupal Site of the Year/a./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/drupalservicejsDrupal services JS/a/divdiv class=field-item odda href=/project/field_permissionsField Permissions/a/divdiv class=field-item evena href=/project/taxonomy_accessTaxonomy Access Control/a/divdiv class=field-item odda href=/project/ubercartUbercart/a/divdiv class=field-item evena href=/project/featuresFeatures/a/divdiv class=field-item odda href=/project/ultimate_cronUltimate Cron/a/divdiv class=field-item evena href=/sandbox/dereine/1824558Views Bulk Operations (D8)/a/divdiv class=field-item odda href=/project/nodequeueNodequeue/a/div/div/div