DrupalCampLA Homepage The Drupal community is alive with meetups, user groups, and camps. However, there isn't a published formula on using Drupal to accomplish the needs of a large meetup, camp, or convention. This By Them worked with LA Drupal organizers to design and develop what we hope will be a useful camp formula for others, available for download under the GPL.

DrupalCampLA.com was built on Drupal 6 using core & contributed modules to handle event registration, sponsorship management, featured speakers, user bio's, and session proposals. The website features an attendee driven event schedule where members propose sessions and only registered members pick which sessions they'd like to see (in the BarCamp style). Planning the schedule for the day of events has been made flexible enough to allow organizers to maintain a master schedule with ease. Not to mention that all attendees get their own schedule view with the sessions they pick.

Website:  http://2009.DrupalCampLA.com

Project Time Line: 2.5 weeks

Design and Development: This By Them

LA Drupal Event Organizers: Chris Charlton, Christefano, Mike Stewart, Nicole Bluto, Rain Breaw

Introduction

This By Them (TxT) is a boutique Drupal design and development shop located in Orange County, CA, just south of Los Angeles.  TxT team is active in both the local and global Drupal community and is responsible for a variety of contributed Drupal modules, including the Services Module, Search Ranking Module, Fuzzy Search Module, and the Ubercart Coupon Module.   Based in the desire to contribute to the local Drupal community and upon learning of plans for the third annual DrupalCampLA, TxT emailed the organizers of the LA Drupal users group and proposed to design, build, and ultimately host the web site to support the event. Mike Stewart, one of the LA Drupal organizers, skeptical of such an amazing offer replied with a wish-list of features, including features to remove many of the scheduling hurdles that are common pitfalls for organizers, as well as attendees, of these events. TxT accepted the challenge! Mike, Blake, and John Romine met the next week at the OC/PHP meetup (organizers of Orange County Drupal meetups) to work out some of the details.

Motivations & Goals For the Event

  • Attendance should be free to cheap.
  • Encourage new people from outside of the Drupal community to participate and learn.
  • Self-organizing.
  • Transparent and open planning process.
  • Attendee driven schedule (BarCamp-style).
  • Interactive & Fun.
  • Provide valuable sessions and networking opportunities.
  • Provide value to sponsors by connecting them members within and outside the community.  The organizers feel it behooves the community as a whole, and attendees in particular, to be aware of the companies that are enabling a valuable and free learning & networking event.  Especially when considering our current economy.
  • Encourage a strong Drupalchix participation.

Site Requirements

  • Encourage easy and (mostly) self-organization of lots of people and easy interaction to help maintain a small event feel.
  • Help spread best practices by utilizing modules that are configurable to varying requirements, and use techniques that are easy to extend.
  • Address perceived shortcomings of similar event sites (primarily scheduling: both master schedule & personalization).
  • Release the code under GPL and make it available to others to build on.
  • Highlight the sponsors & people that helped make the event a reality.

Original goals included: the ability to highlight session presenters, emphasize a Drupalchix track, highlight sponsors, the people that help make this possible! Plus, detailed scheduling needs.

The importance of improving our ad-hoc scheduling became apparent after LA Drupal organized DrupalCampLA 2008, with over 450 registered attendees at the LA Convention center.  The 2008 camp was successful, but scheduling was tedious and manually intensive.  The goal for 2009 was to attempt to recapture the intimacy of DrupalCampLA 2007; where scheduling took place on the wall of a hallway with a bunch of post-its and people raised their hands to indicate what session they were interested in attending.  To that end, we defined requirements to capture useful information we could act on, reduce the complexity of scheduling, and enable attendees to drive the feel of the camp.  Here is a list of the goals:

  • Help users to openly drive the session selection process, reminiscent of smaller BarCamp meetups; even if the event is much larger.
  • Help organizers understand which sessions will be attended allowing them to utilize the capacity of the venue
  • Provide a master event schedule with multiple tracks available on the site
  • Provide personalized scheduling viewable as a user logged into the site, or via a personalized iCalendar feed.  The lack of this feature at other conferences is a personal peeve of Mike's. Apparently too many missed sessions at other conferences due to schedule changes and difficulty keeping the schedule up to date in a calendar. Seriously, what's the point of walking around with a wireless device that can sync with an iCal feed if the technology is not being taken advantage of?
  • Combined, these features allow organizers to easily make schedule changes during the event itself, all while keeping attendees informed of the changes to their picked sessions.
  • These features also imply a certain self-organizing aspect that help make the camp more manageable and hopefully help the attendees to feel more in control of what the camp will be.

Process

During any site build process we generally try to stick to the following process because it allows us to communicate expectations and explore possibilities visually before a bulk of the work is done.  This is important when time line and budget are a major factor... because when are they not?

Planning

Site planning includes gathering site requirements by determining what is the purpose of the website, who are the users of the website, who are the administrators of the website, etc.  In addition we find that it is also helpful to do some background research on the methods that may be needed to deliver on the requirements.  This would include setting up a basic Drupal installation with a few modules and putting together a proof of concept.

After the basic planning discussion has happened we like to put together a wire frame description document.  It lists of each the pages of the site along with each of the major features and calls to action that we'd like on those pages.  This document is done using text and usually goes through a few revisions as each of the stake holders reviews and visualizes the site in their own minds.  Below is a sample of the wireframe descriptions we put together for this project:

First you'll note that some of the items didn't make it to the end site result.  They were removed during the wireframe and design phase for streamlining the user interface.  Download the entire document here.

Creating the Wireframe

The goal of wireframing is to deliver a low resolution site map where each page of the site has the blocks of content with the visual cues and calls to action present. Download the complete wireframes here.

Design Compositions

Based on the wireframes a design composition is usually created for the homepage and any number of the internal pages.  For this particular project we did one comp for the homepage and one comp for an internal content page.  This was mainly due to the size of the site (relatively small), and the project time line (roughly 2.5 weeks). [provide link to both comps, phase 1 and 2]

Revision 1

DrupalCampLA Comp 1

Revision 2

DrupalCampLA Comp 2

Site Building and Functionality

The site building phase is usually done in tandem with the design composition phase.  However, its usually only possible to do this when you have wireframes that really outline the features and functionality of each of the pages of the site.

Theming

After both the design compositions and the site building is done, you can begin theming the site.  On most sites you will still perform some of the site building during the theming phase but we generally recommend at the very least building all of the blocks of content that will be used throughout the site and then placing them to match the wire frame.  We find that this really helps speed up the theming process because you are only focused on styling the pages using css. 

Solution

The web site was based on the latest Drupal 6.x release and utilized many of the current generation modules such as CCK for content customization, imagefield and imagecache to handle imaging Views & custom theming built on Zen for content presentation.  (A full list of the modules used to build the site is listed below)

Attendees and Registration

  • Site registration is open to anyone, but requires email verification.
  • When users register for the site user details are handled by the Profile module.
  • The User module settings allowed us to customize the content of the email that is sent to new users.
  • The SMTP Module is utilized to keep email traffic off the webserver and to enable easy integration with Google Apps as an email server.

Sessions

DrupalCampLA Sessions Screenshot

Session Proposals nodes were created by CCK to provide the following additional fields: Day (text select), Time (text select), Track/Room (text select).  In addition we created a new taxonomy vocabulary called "Categories" so that sessions could be organized into the following: Business Side, Code & Development, Design & Usability, Drupalchix, Performance & Scalability, Showcase & Strategy, Site Building.  Using taxonomy to categorize the sessions was very helpful because of the benefits of Views module integration.  Using the categories we allow visitors to filter out sessions based on their interests.

You may ask how were we able to put the day/time/room as CCK fields if were allowing anyone to create sessions?  The answer was by enabling the content permissions field.  This allowed us to provide general camp members with the ability to add and edit their own sessions, while only administrators had access to set logistical information about the session.

DrupalCampLA Permissions Screenshot

In order to gather user interest we used the Flag module.  We created a new flag type called vote and allowed only registered site attendees to then flag or "Pick" their favorite sessions.  Using the Flag module we were easily able to create Views of the sessions that had been flagged the most which allowed us to then choose which ones we ultimately wanted to have on the schedule.  The other benefit to this is that we can provide each attendee with their own list of sessions that they are interested in.  Where this really helps is when scheduling conflicts happen and sessions times/locations are changed, the view makes it easier for the attendee to see the sessions that are important to them.

Sponsorships

We built a node for each of our sponsors using CCK type called sponsors.  The fields of the sponsor node type include: Logo (image), Website (link), and Attendees (user reference).  In addition we used the Taxonomy module once again to separate our sponsors into "Sponsorship Levels."  You'll notice on the sponsors page, its simply a view where we included the taxonomy term field.  Then we set the view style to "Unformatted" and choosing to Group By the Taxonomy Term.  This gave us a nice little header above each group of sponsors that we could then easily style.  Another benefit to using taxonomy was the ability to easily select only platinum and gold sponsor logos to be shown on the footer throughout the site and platinum sponsor logos on the homepage.

Once the node was created by an administrator they assigned the node ownership to the sponsor's user account.  The benefit to this was that the sponsor could easily adjust their own company description and logo at any time.  In addition we thought it might be cool to show which people at the camp were from that sponsor's company, so we added the user reference field.  And again we overrode the theme function that outputs the generic user reference field content and extended it to show that users profile picture.  You'll notice we also make sure to grab the default profile picture in case someone doesn't have one uploaded, and then we pass it through imagecache to crop the image.

/**
* Theme function for 'default' userreference field formatter.
*/
function txt_drupalcamp_userreference_formatter_default($element) {
  $output = '';
  $default = variable_get('user_picture_default', '');
  if (isset($element['#item']['uid']) && $account = user_load(array('uid' => $element['#item']['uid']))) {
    $filepath = $account->picture ? $account->picture : $default;
    $output = l(theme('imagecache', 'mini', $filepath, $account->profile_fullname, $account->profile_fullname), 'user/'. $account->uid, array('html' => TRUE));
    $output .= '<span class="username">'. theme('username', $account) .'</span>';
  }
  return $output;
}

Homepage

The homepage was put together using the Panels module.  We often use it for landing pages because it provides us with the ability to easily place (and replace) related content in different regions of the page.

Contributed Module List

  • Admin Role - Automatically assign all permissions to an admin role.
  • Administration menu - Provides a dropdown menu to most administrative tasks and other common destinations (to users with the proper permissions).
  • Content - Allows administrators to define new content types.
  • Content Permissions - Set field-level permissions for CCK fields.
  • Embedded Media Field - Provides an engine for modules to integrate various 3rd party content providers, such as Video Neighborhood, Image Neighborhood, and Audio Neighborhood.
  • Embedded Video Field - Defines a field type for displaying third party videos, such as YouTube and Google Video.
  • Fieldgroup - Create display groups for CCK fields.
  • FileField - Defines a file field type.
  • ImageField - Defines an image field type.
  • Link - Defines simple link field types.
  • Node Reference - Defines a field type for referencing one node from another.
  • Number - Defines numeric field types.
  • Option Widgets - Defines selection, check box and radio button widgets for text and numeric fields.
  • Text - Defines simple text field types.
  • User Reference - Defines a field type for referencing a user from a node.
  • Context - Provide modules with a cache that lasts for a single page request.
  • Context Contrib - Provides integration with Context on behalf of the following contrib modules: Nodequeue, Views, CSS Injector.
  • Context UI - Provides a simple UI for settings up a site structure using Context.
  • Date - Defines CCK date/time fields and widgets.
  • Date API - A Date API that can be used by other modules.
  • Date Popup - Enables jquery popup calendars and time entry widgets for selecting dates and times.
  • Date Timezone - Needed when using Date API. Overrides site and user timezone handling to set timezone names instead of offsets.
  • Flag - Create customized flags that users can set on content.
  • Flag actions - Execute actions on Flag events.
  • ImageAPI - ImageAPI supporting multiple toolkits.
  • ImageAPI GD2 - Uses PHP's built-in GD2 image processing support.
  • ImageAPI ImageMagick - Command Line ImageMagick support.
  • ImageCache - Dynamic image manipulator and cache.
  • ImageCache UI - ImageCache User Interface.
  • SMTP Authentication Support - Allows the sending of site e-mail through an SMTP server of your choice.
  • Nodequeue - Create queues which can contain nodes in arbitrary order
  • Backup and Migrate - Backup or migrate the Drupal Database quickly and without unnecessary data.
  • Better Select - Use stylized checkboxes instead of the default multiple select HTML element in forms.
  • Diff - Show difference between node revisions.
  • DrupalCamp - Customizations for DrupalCamp website
  • Path Filter - Input filter to convert internal paths, such as "internal:node/99", to their corresponding absolute URL or relative path.
  • Pathauto - Provides a mechanism for modules to automatically generate aliases for the content they manage.
  • Textile - Allows content to be submitted using Textile, a simple, plain text syntax that is filtered into valid XHTML.
  • Thickbox - Enables Thickbox, a jQuery plugin.
  • Token - Provides a shared API for replacement of textual placeholders with actual data.
  • Twitter - Adds integration with the Twitter microblogging service.
  • Twitter actions - Exposes Drupal actions to send Twitter messages.
  • Panel pages - Create pages that are divided into areas of the page.
  • Panels - Core Panels display functions; provides no external UI, at least one other module (such as Panel pages) should be enabled.
  • Google Analytics - Adds Google Analytics javascript tracking code to all your site's pages.
  • Promo - System for creating callout blocks with uploaded images.
  • External Links - Adds icon next to external links on the site.
  • jQuery Update - Updates Drupal to use the latest version of jQuery.
  • Views - Create customized lists and queries from your database.
  • Views Bulk Operations - Exposes new Views style 'Bulk Operations' for selecting multiple nodes and applying operations on them.
  • Views UI - Administrative interface to views. Without this module, you cannot create or edit your views.

Server Architecture & Tweaks

  • Code hosted on GitHub because that's what the developers prefer when they have the option. 
  • Capistrano is used for deploying the code to the development server.  While this technology is mainly used by Ruby on Rails developers, This by Them uses it as a means to easily deploy their PHP code.  Our deploy script performed the following:
    • Check out latest revision from Git
    • Update the public directory to the last downloaded release
    • Create a symbolic link back to the file uploads directory
    • Reset some file permissions
    • Restart PHP (xcache doesn't like it when you deploy on a different physical path and so restarting php helps keep it fresh)
    • In addition there are a few helper commands to sync files between your local environment and the dev server, as well as a dbsync script to pull down and update your local database with a fresh copy from the dev server.
  • Hosted by Slicehost, This by Them prefers Slicehost as their hosting provider because of their low cost of entry for virtual private servers (slices).  Their control panel allows us to get new server instances up and running in a matter of minutes.  And did we mention their prices are really reasonable?
  • Nginx/PHP setup, We prefer to run our setup on Nginx with PHP as a fastcgi process instead of Apache with mod_php, to each their own.  Here you'll find some help on setting up php with nginx.
  • AutoMySQLBackup script.
  • Amazon s3sync script that we run after our database backups are completed. Also helpful in setting it up was this blog entry.

Acknowledgments

We'd like to also note that we referenced the following existing camp/conference related websites to help us in our planning and execution:


Download Distribution

As mentioned above, all you will need to get your own camp/conference site setup is included in this friendly package*. Included is a readme file that will explain how to setup the site. It's basically the same as setting up a normal Drupal site except you'll want to import the database file we've included so that all of our views/content types/settings are ready to go!

We have decided NOT to release the graphics from our theme for various reasons, but primarily because we wanted to make sure the brand/image/appearance of our camp site remains unique. However, all our customized theme templates and javascript have been included in a basic zen sub theme called camp. We recommend using the camp theme as your base and adding styles as you see fit.

* The site code and data are provided as is, with no warranty and no guarantee of support. The code is released under the GPL license (same as Drupal core).

Comments

himerus’s picture

This is truly a fantastic implementation, and I'm VERY excited to see it shared for the community. Perhaps it can become the "standard" used for Drupal Camps & even Drupalcon events.

Unfortunately I wasn't able to attend DrupalCampLA, but will be in Paris in a few weeks. I only wish the Drupalcon site was as usable, and amazing as this camp site!

Great job, and thanks for sharing with the community!!

--------------------
Jake Strawn (@himerus)
--------------------

susgeek’s picture

I was so interested to view your site, but I was redirected repeatedly due to the fact that I am using IE and not Firefox :\

OpenChimp’s picture

This site totally rocked, and made the whole camp experience better. The session which covered this case study was one of my favorites. This By Them did an awesome job of implementing a website with great functionality and beautiful design. Other drupal camps should be able to easily make use of this distribution for their sites.

Michael Thorne

watbe’s picture

Thanks for sharing that, its invaluable to other Drupal developers.

krynsky’s picture

This is a fantastic case study providing wonderful insight into the process and work you guys did for DrupalCamp LA. Not only did you contribute this great information, but you made all your hard work freely available to the community. Thank you guys and I look forward to seeing other camps use this release in the future.

I manage web production across several Drupal sites for XPRIZE. I also blog about data aggregation, lifelogging, quantified self, & digital preservation at LifestreamBlog.com

BlakeLucchesi’s picture

Thanks for all the kind words. I just wanted to let everyone know that I just uploaded a new copy of the download so that the scheduling pieces are now included.

Thanks again to all the event participants and most importantly the planners and other sponsors for making it happen.

mike stewart’s picture

ya, I'm blown away by all the kind words. i really hope the site makes it easier for other organizers... the camp was totally fun. the sessions were great. the venue totally awesome. and the site made it so much easier to organize it this year than previous years'

--
michael stewart { owner | media done right } { twitter: @MediaDoneRight }

apratimbose’s picture

Hello Mr. Blake Lucches

Actually I was unable to download the package from the download section. It shows the following Winzip error

Cannot open file: it does not appear to be a valid archive.

If you downloaded this file, try downloading the file again.

Please can you send me the link where I can download.

Thanks in advance

Regards

Apratim

Apratim Bose

Chris Charlton’s picture

I'd like to express a great thanks to This By Them for helping us create the best web site for a Drupal Camp ever! Of course, I am biased since I manage the LA Drupal User Group. Over 500 camp attendees loved using the Pick Your Sessions feature, while us organizers loved being able to assign rooms and times to chosen sessions on-the-fly, allowing community BoFs to get on the schedule within seconds. And as an event organizer, taking in sponsorship payments online through the site worked out so well that we saw great sponsorship support come in from companies throughout California (Los Angeles, Orange County, San Diego, San Francisco), Boston, Colorado, and New York!

Enjoy the site recipe as I had a blast helping This By Them with it in the kitchen. Viva DrupalCamp!

Join or follow @LADrupal on twitter, facebook, linkedIn, Upcoming.org, and http://groups.drupal.org/LA

Chris Charlton
Manager
LA Drupal
Drupal Author
Published since 2007
Abilnet’s picture

Great work, thanks so much for sharing, appreciated!

vinayras’s picture

Sharing this will help people are thinking of organizing Drupal Camps

Thank you for sharing.

Vinay Yadav
PHP / Drupal Developer
http://www.vinayras.com

SocialNicheGuru’s picture

this is awesome!

Great job!

http://SocialNicheGuru.com
Delivering inSITE(TM), we empower you to deliver the right product and the right message to the right NICHE at the right time across all product, marketing, and sales channels.

Amix’s picture

Awesome work! thanks for sharing all these details with us.

__________________________________________________________________________________
www.DrupalBased.com - Showcasing Drupal Powered Sites.

Senpai’s picture

I'm so amazed by this camp website that I'm going to steal it for our own, and use it, in it's entirely, plus a few of our group's own customizations, for the upcoming SANDcamp 2010 in January. Congrats to all the people who had a hand in making this distro of Drupal, and thanks for popping it into a git repo too!

****
Joel "Senpai" Farris | certified to rock score

ChristophWeber’s picture

I was gonna suggest that too. It's an awesome solution to the problem at hand and worked absolutely great.
My favorite feature is the cool, understated theme. It'll be hard to beat, even if we can reuse all the other code.
Thanks to Blake, Lance and Scott, you guys rock!

Christoph Weber - San Diego DUG

Mediacurrent’s picture

What an inspirational site! As one of the organizers for Drupalcamp Atlanta I can't tell you how valuable of a resource this contribution will be to future camp planners. IMHO, one of the major obstacles to starting more camps has been the time committment for the core leaders. There was no recipe of modules or blueprint in place before, and now those issues have been fully addressed by your case study. Again, major tip of the hat on a job well done!

Dave Terry | www.Mediacurrent.com

Amazon’s picture

I was at Drupalcamp LA this past weekend and the website was a great resource. The conference organizers did a great job juggling the rooms to meet demand. They were updating the entire schedule in real time when the line up for lunch was too long and everything moved 30 minutes late.

The folks from This By Then really did a great job. Their booth with free chocolate, fresh lemonade, and free massages was extraordinary.

I've promoted Chris's post on Camp/Conference formula for Drupal which refers to this case study. But you might want to add a link here: Drupal Camp Organizing Guide.

Hopefully we can get some translations to other languages soon.

Kieran

Kieran Lal

gusaus’s picture

Huge props to 'This By Them' (http://thisbythem.com/) for this tremendous contribution to the community. This along with the release of Open Atrium (http://drupal.org/open-atrium) really raises the bar in terms of community contributions.

One highlight of DrupalCampLA was having members from the aforementioned development teams in the same room to discuss potential points of overlap and collaboration. Seems like there there is potential to create features from the DrupalCamp code and contribute back the full on installation profile (and possibly a new theme?) back to the community. Possibly we could even make it a Drupal Kata (http://groups.drupal.org/drupal-kata) project where community members could learn by participating in the process.

Just throwing out the idea and some points of reference - curious to hear some thoughts...
http://2009.drupalcampla.com/sessions/building-drupalcamp-website
http://2009.drupalcampla.com/sessions/using-open-atrium-and-building-fea...

Thanks to all parties involved for this amazing contribution!

---------------------------------------
Gus Austin

aac’s picture

A very nice writeup. The wire frame document shows the importance of initial draft document. The complete article provides a good learning for newcommers.
Thanks for such a writeup.

UPDATED:

I would be interested to know the following-
As mentioned, you have used flag module to show number of "Picks" for a session. I have tried to use the flag module for creating 'like it' flag. On the flag configuration, you have to provide flag:'like it" and unflag:"hate it".
So if a user flags some content, the flag toggles to other state, showing unflag it ("hate it"). So how did you remove unflag it link. Have you handled it by theming or somethingelse.
Thanks in advance for your detailed response.

---~~~***~~~---
aac

BlakeLucchesi’s picture

Both of the flag link states are used. You'll notice if you go to the site you can see a 'pick' graphic as well as an 'unpick' graphic. We used the css classes available to us from the flag module's output to theme these links. I would suggest using Firebug to inspect the links so you can see the css that was used.

Kuldip Gohil’s picture

Awesome.. Good Writeup..

And Good Contribution..

Good work DrupacampLA Team

BOAS’s picture

Wonderful!

Following Open Source Best Practices
BOAS CMS : Best Of All Worlds Content Management Systems
http://boascms.com

daemonium’s picture

Is there a specific module for the featured speakers ?

BlakeLucchesi’s picture

The featured speakers block was put together with a combination of the profile module to add user profile information such as a slogan and full name, the flag module so we could 'flag' users from the site to be featured on the homepage, and the views module to build the block and output only the 'featured' members. The display was all done by theming the view, the modified template file as well as jquery code is included in the download.

I did a presentation at the camp on theming views and I actually did some walk through on this specific block during the presentation. The video will be posted here when ready: http://2009.drupalcampla.com/sessions/theming-views

lhugg’s picture

The generosity of the open source community never ceases to amaze me! Thank you so much for sharing the fruits of your labors. This is not only a great camp site implementation, but also a good example of a built Drupal site and themeing that folks can use to learn from. Great job.

- Larry

SeedTreeLLC’s picture

I learn better when I have something to dissect. This will help me with a current project. I appreciate you sharing it with the community.

Seed Tree, LLC

mikshimonster’s picture

Thank you for sharing the detailed information. I think you mentioned that it is being hosted by Silcehost. I would appreciate it if you could share server spec (such as how many servers are being used or what "slices" were purchased) and how was the traffic to the site (such as pageview per day or hit/sec). Just trying to see what is the ideal number of servers and specs for our site.

Thanks in advance

BlakeLucchesi’s picture

Great question. At the bottom of the write up we cover that we used nginx and php fcgi on an ubuntu 8.04 installation. We ran the site on a 256mb slice to start out and bumped it up to a 512mb slice as the camp got closer. We had only a few outages that lasted just a couple of minutes but other than that no major hiccups (thanks to installing monit for process restarting and using wormly for outage notifications). We'll likely scale the site back to a 256mb slice after a month or so, once traffic dies back down. Here is a Google analytics screen shot for some traffic numbers, notice the peak on the days of the camp (http://2009.drupalcampla.com/files/site-traffic.png). Keep in mind that this was for a 400-500 person event and so depending on the size and reach of your event, traffic patterns will vary.

Hope that answers your question. If your looking for some server setup/performance articles related to Drupal I'd recommend a read through some of the following sites:

* http://articles.slicehost.com
* http://2bits.com/contents/articles
* http://www.johnandcailin.com/john

golchi’s picture

Thanks guys for sharing such a cool project !!! This will be a very useful exemple ;-)

Keep on

Maybe today, maybe tomorrow but one day...
http://afrozen.wordpress.com
www.fossfa.net
www.lmplelogos.com

gluonvision’s picture

Do I understand correctly that the contents of the public folder are to be put as DocumentRoot, yes?
But still: I can log in, but the camp theme does show up.
Do I need to do other tricks (chmod +x somewhere?).

Did anybody install a copy on Linux and can work with the camp theme?

Thanx for any help and excuse me if I oversee something obvious.

Rolf

BlakeLucchesi’s picture

I'm sorry if this was confusing but we did not include a copy of the css/images as shown on the camp website. We did this to ensure the unique branding of the LADrupal event. What we did do however is include a zen-subtheme called 'camp' which includes all of the theme files we used on the website besides the css and images. This way you can go use all of the template overrides and javascript we wrote for the website.

If someone wants to contribute their version of the 'camp' theme that would be fantastic and we would be happy to bundle it with the code we are distributing now.

finedesign’s picture

First of all, thank you so much. I can learn a lot from this.

Feedback/questions...
1) You say "we did not include a copy of the css/images as shown on the camp website" but I am seeing them in the camp sub-theme. It appears you just deleted all the class properties in layout.css. Yes?

I mainly wanted to see how you setup the jquery rotator on the frontpage. But I'm not sure if I will see this without the theme working properly.

2) Also, am having a hard time figuring out how to add a featured speaker. I have looked at the flags section and it should be adding a toggle on user pages, but cannot see it while logged in as admin.

3) Several modules are not activated by default. Should I activate everything? Notably "Actions permissions"?

Again, thank you.
paul

BlakeLucchesi’s picture

Paul,

Re: jQuery rotator. You are right that there is some requirement to have the css from the site, but I can outline the approach I took with the css here so you can recreate and understand. The jQuery can be found in the views-view--attendees--block_1.tpl.php

Drupal.behaviors.featured_attendees = function() {
    var speed = 'slow';
//    Next
    $('#scroller .next').click(function() {
      $('#scroller .views-row-first').removeClass('views-row-first')
        .next().addClass('views-row-first').hide().fadeIn(speed)
        .prev().appendTo('#scroller .items');
    });
    // Previous
    $('#scroller .prev').click(function() {
      $('#scroller .items .views-row:last-child').prependTo('#scroller .items').addClass('views-row-first').hide().fadeIn(speed)
        .next().removeClass('views-row-first');
    });
    // Click on a not-first image.
    $('#scroller .views-row:not(.views-row-first)').live('click', function() {
      $(this).prevAll().appendTo('#scroller .items').removeClass('views-row-first');
      $(this).addClass('views-row-first').hide().fadeIn(speed);
    });
    // Show name on not-first hover.
    $('#scroller .views-field-picture-2').live('mouseover', function() {
      $(this).after('<div class="highlight"></div>');
      $('.highlight').hide().fadeIn(speed);
      $('.hover-name').hide().html($(this).parent().find('.views-field-value-1 .field-content a').html()).fadeIn(speed);
    });
    // Remove name after hover out.
    $('#scroller .views-field-picture-2').live('mouseout', function() {
      $('.hover-name').empty();
      $('.highlight').remove();
    });
  }

The main part of the jQuery is just the rotation, when the next button is clicked, we grab the first item in the list: remove the .views-row-first class, give the .views-row-first class to the next item in the list, hide that element and then fade it in, and then go back to the first item and push it to the back of the list.

Something similar is done when the previous button is clicked, except we grab the last item in the list and bring it to the front.

From the CSS perspective the import things to note are that we are only showing certain fields from each result based on the .views-row-first class. In addition, for positioning we float all of the items, and set a height and width to the wrapper div around all of the elements. This lets us only show 5 items at a time.

This may be a bit rough to read and understand so maybe at some point I can do a screencast to walk through it all, but that'll have to wait for another day.

2) I'm not sure if this is outlined anywhere but there are a few special paths. ?q=manage/users is one of them, it will list all registered members with an option to promote them to featured speakers, it will also let you dissect some of your members into different groups for demographic purposes.

3) Nope, if you're using the database we included thats all that is used.

Hope these answers help you get going with your new camp/event website :)

finedesign’s picture

Thank you Blake!

This is very helpful. I was also using the database included. I hope to take a look at the code more closely. Your explanation makes sense, though. A screencast would be awesome!

Again, thanks so much.
-paul

leenyx’s picture

Thank you very much for giving this to the community, you are amazing!!

Making the Internet a better place.

Jose Blas, UX Consultant

jeffschuler’s picture

Awesome job, and thanks much for sharing.

I'm sure you're aware that the Conference Organizing Install Profile never got a 6.x release. Conference Organizing Distribution on g.d.o. has been left slightly hanging, too.

Maybe you can re-enliven and benefit from the past work and community of these projects...

gusaus’s picture

We're putting a group together to see if we can take the next steps - it's a community effort and we're actively looking for contributors and supporters -
http://groups.drupal.org/node/25558

---------------------------------------
Gus Austin

hsalazar’s picture

A sensational post and a sensational contribution to the Drupal community. This will be immensely valuable for many people. I can feel my old brain's wheels starting to creak and move again! Thanks a bunch, folks!

Diegen’s picture

This is a great contribution, especially for learning purposes, this will give newbs like me some insight into how a large site is planned, structured, how all the modules can work together, and executed.

Thanks !!

Diegen’s picture

What happened to the " newsletter " page ??

4v4l0n42’s picture

'nuff said.

mariohernandez’s picture

I copied the content of the public folder into my drupal folder and when I go the mysite/drupal I get the message that the website is offline. How do I get to a login window to put the site back online? I'd appreciate your help.

Mario Hernandez
http://designsdrive.com

bigtonkertoys’s picture

I'm having the same issue

BlakeLucchesi’s picture

Have you imported the database that we provided in the 'databases' folder? If so, try going to example.com/?q=user to login as the site admin for your installation, you can then go into the admin and disable the maintenance mode setting.

ipung’s picture

I like this site :D

ipung

alexarpen’s picture

i was managing a website for a Safety Conference using drupal, now i could build it based on "the camp".
i will post the result in later comments...

alexarpen’s picture

the first problem i faced was incomplete theme.
at first i thouth there is a problem with cache or path or somthing like that.
but CSS' and Images are missed in the camp theme
you should try writing your own theme.

Abilnet’s picture

Don't worry, have a look at here please:
http://drupal.org/node/519100#comment-1916284

alexarpen’s picture

Thanks Abilnet for the note,
I could fix the theme, one just need rename the theme folder from camp to txt_drupalcamp.
(you should also rename camp.info and camp.css)

jessmagz’s picture

hi aliasghar!
how did you do it? literally renaming the "camp" folder under themes, the camp.info and camp.css under camp folder to txt_drupalcamp? I mean literally like

camp (folder) = txt_drupalcamp
camp.info = txt_drupalcamp.info
camp.css = txt_drupalcamp.css

???

please share with me how you fixed your theme.
Thanks much!

chaosprinz’s picture

Hello,
its a realy nice Intallation-Profile, but i have one little Problem:
Every User who registers new is automatically assigned to the role "Attendee" and i find no Module and no Action, which does this realize. Can you tell me how to turn this off?
GRTZ from germany,
Siggi

BlakeLucchesi’s picture

Ah! Yes sorry about that. At the bottom of the drupalcamp.module file located in public/sites/all/modules/drupalcamp you'll see the following:

/**
* Implementation of hook_user().
*/
function drupalcamp_user($op, &$edit, &$account, $category = NULL) {
  if ($op == 'login') {
    if ($account->access == 0 && (! in_array('attendee', $account->roles))) {
      db_query("INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)", $account->uid, 3);
    }
  }
}

What this does is when a user logs in for the first time (after clicking to login from the email they receive), they are granted the 'attendee' role. Feel free to modify or remove as needed.

iamwhoiam’s picture

Brilliant write up and what a great contribution to the community.

I've noticed that LA Camp is free. If one were to use a paid-for-ticketing system such as drupalcon... what route would you recommend?

BlakeLucchesi’s picture

We recommend using Ubercart because you can assign roles to users who purchase products from your store, in this case a ticket. The DC Drupalcon website used Ubercart for ticket purchases. They set it up so that you could only buy a single ticket per user account, which makes it easier to track attendance. The benefit to using the roles setup is that you can allow anyone to register and interact with the site while keeping a separate count for users who have paid and will be attending the event.

benevolent001’s picture

Hi

I am having installing the files provided to see it on my computer . I have got Apachetriad installed on my computer . I am trying to import the zip file of database into phpmyadmin but it is giving error the

SQL query:

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

MySQL said: Documentation
#1065 - Query was empty

What wrong i am doing , i have copied the folder provided into document root

Thanks for your help

apratimbose’s picture

Hi Developers

I am not able to download the package. I need to prepare a website for a conference at my college in a weeks time. Thought I will get some inputs from this camp/conference site setup. Kindly help ASAP.

While downloading I get the following WINZIP error.

---------------------------
WinZip
---------------------------
Cannot open file: it does not appear to be a valid archive.

If you downloaded this file, try downloading the file again.
---------------------------
OK Help
---------------------------

BTW the website is amazing. Kodus to the guys who developed.

Thanks and Regards

Apratim Bose

India

Apratim Bose

snelson’s picture

Apratim,

I just tried the download and it worked for me on Mac. Perhaps try another tool?

- Scott

BlakeLucchesi’s picture

I'm sorry that you are having issues downloading the package. However, there have been a large number of people downloading it and using it without problems. Perhaps the file didn't completely download and so winzip is unable to unarchive it. I'd suggest trying to download it again.

-- Anyone else having issues unzipping the file please let us know so we can figure this out.

apratimbose’s picture

Hi Blake

I have downloaded number of times still it shows the same error. I also used 7 zip to extract it but shows the same error. I use a vista system.

Kindly help

Thanks

Apratim

Apratim Bose

apratimbose’s picture

Hi Blake I downloaded the package and did a regular installation but I cant find any stylesheet or theme.

Kindly help

Regards

Apratim

Apratim Bose

apratimbose’s picture

Hi Blake

Again sorry to bother you.

Actually i am new to Drupal. I have downloaded the package (which contains camp folder for Windows). I have Wamp installed in the system. Now please narrate me the process to install the package to get the exact way the LA website looks like.

Since I am new to Drupal kindly help.

Thanks Apratim

India

Apratim Bose

justin.hopkins’s picture

The graphics and css used for 2009.drupalcampla.com are not included. You will need to design your own. They were kind enough to include the basic template parts for various nodes and forms, as well as a page.tpl.php, template.php, etc. You just need to be the one to decide exactly what your site will look like :)

Cheers,
Justin

apratimbose’s picture

Hi folks

Actually i am new to Drupal. I have downloaded the package (which contains camp folder for Windows). I have Wamp installed in the system. Now please narrate me the process to install the package to get the exact way the LA website looks like.

1) I tried copying the whole folder and access it but the styles and themes aren't applying.

2) Should I install Drupal and then go abt it.

Please can anyone gimme a detailed explanation.

Since I am new to Drupal kindly help.

Thanks in advance

Apratim

India

Apratim Bose

SamSound’s picture

Thanks for this post. But im having problems setting up lightbox/thickbox.

I try to use lightbox as i would with a normal installation, but it just doesnt work when i try after ive installed this download.

It could be me doing something wrong, but i try and set it up exctly as I would on a regualr installation but cant seem to get it working.

Ill have another attemp later, but I would like to know if anyone else has set up lightbox with this download and whether they had any problems doing so, and how they got it to work, did you have to do anything special.

Thank you

jessmagz’s picture

i have successfully setup the DrupalCamp copy site in my webserver but I got an empty theme and no css. Where should I go now? Which files should I make or edit and where will I place them?

Susan MacPhee’s picture

http://drupalcampmontreal.com/. I'd love to see or keep a list somewhere of camp sites launched from this site code! Here's one :)

spflanze’s picture

Thanks for sharing your work. It is a big help. One thing I need in addition to all this is vendor space management. I will need to handle registrations for individual vendor spaces where vendors display and sell their wares in a large vendor room. Preferably using a map showing where a vendor's space would be, and showing those spaces already registered.

ksramakrishna’s picture

You should change the line 92 [ $db_url = 'mysql://root:root@localhost/camp2'; ]
@ sites->default->settings.php location to
[$db_url = 'mysql://root:yourpassword@localhost/yourdbname';] .

This got fixed the problem.

mwoodwar’s picture

I installed everything fine (thanks) but when I try to run update.php, I get the following:

Fatal error: Call to undefined function drupal_session_start() in /home/workmail/public_html/pressflow/update.php on line 620

Any suggestions?

matangi’s picture

this is very interesting an d informativ to see the live process of a professional drupal site including all things beside drupal, like hosting coding and design. Thanks a lot.

Katasun

laken’s picture

Hi, thanks for providing such a great resource! We're using it to manage registration for Missoula Barcamp 2010.

Since our event is not free (just cheap) I'm setting Übercart on the site, and ran into a major problem: anonymous users couldn't add items to their cart at all. The problem ended up being that the row in the users table for the anonymous user is missing. This can cause all kinds of problems in Drupal, not just with ubercart, so I thought I'd leave a note here. You must re-add the row into the users table with UID = 0 for the anonymous user.

brentratliff’s picture

Good catch, UID 0 has to be added back in to get Drush to work properly as well. That bug indeed causes all kinds of havoc.

joey91133’s picture

Sorry
Can you share this website's file for me?
Because We went to Conduct the Drupal Camp in Taiwan.
Thanks
My E-mail:joey91133@hotmail.com

Drupal Taiwan!
3917-joey91133

WorldFallz’s picture

Can you not click the provided download link for some reason?

_
Don't be a Help Vampire - read and abide the forum guidelines.
If you find my assistance useful, please pay it forward to your fellow drupalers.

moreonion’s picture

Hey!

i love the idea of sharing great website presettings like this one - and I'd also love to use it. unfortuneatly it returns quite a good amount of errors such - first one is:

Fatal error: require() [function.require]: Failed opening required 'context.core.inc' (include_path='.:/usr/share/php5:/usr/share/php') in /var/www:88/-----------.com/htdocs/sites/all/modules/context/context.module on line 4

is the context module crucial for everything to function right? Any ideas why it wouldn't find that file?

Help would be much appriciated, everything else worked perfectly fine so far, thank you ;-)

Florian

cgibbs’s picture

When I click the download link, I get a "Page not found" for url http://2009.drupalcampla.com/files/drupalcampla_package_v1.zip

Has the download been removed. I really had wanted to learn from this site development.

robdiggity’s picture

Any chance we can get a re-up on the download link?

JeniferTucker’s picture

Hi there, thanks for making this available. Unfortunately the link to the friendly package doesn't work. Any chance this broken link could be fixed?

http://2009.drupalcampla.com/files/drupalcampla_package_v1.zip

Many thanks.

JLT

alexxo’s picture

Hi there,
Thanks a lot for sharing this. I would also love to test it but the link to the package just does not work.
Any chance to fix it?

jerryitt’s picture

I am also interested in learning from this but i get a page not found error when i go to download the zip file.
Can this be downloaded from another location?
Thanks

adrianmak’s picture

tagged.

jily’s picture

Great information. Is there any chance you could upload an installation profile with the latest and greatest modules?

iovanalex’s picture

what happened to the download package ?
please restore de link, could someone who already downloaded it put it somewhere else and give us the link ?

thanks.

maddentim’s picture

Thanks for sharing this design. I would like to check out the package as well. the site hosting the download file is off-line... Please let me know if it comes back on-line with a post here. If you downloaded it previous, I would be grateful if you made it available. Thanks, Tim

pagaille’s picture

There is a conference organizing distribution available here: http://drupal.org/project/cod.
Thanks to dww for pointing it out to me.

SuryaElite’s picture

Hi,
Currently the download links of following is not working...
1. Planning
http://2009.drupalcampla.com/files/casestudy/DrupalCampWebsitePlanningv5...

2. Wireframes
http://2009.drupalcampla.com/files/casestudy/DrupalCampLAWireframes.pdf

3. Distribution
http://2009.drupalcampla.com/files/drupalcampla_package_v1.zip

Please provide working links of the above.
If any one already have the files, I will be very glad to you, if you mail me at "suryaelite AT gmail.com".

Thank you.

Spleshka’s picture

Subscribe.

senthilnz’s picture

Hi,
Can i get the download file?
Thanks

Regards
Sen

cm1se7en’s picture

Subscribe

Everything is possible