+ Case Study: Wedding Planning Site - By Neha Gupta Goyal + Project Background Number of mainstream wedding planning websites Provide many useful tools for brides and vendors Inadequate wedding planning resources for Asian Indians. Specialized tools required for the Asian Indian segment of the market. This website, which was developed using Drupal, fills that void + Pre-Project Analysis Thorough market research and competitive analysis Different business models were explored Interviews with different brides and vendors User Personas and Scenario analysis of a typical user Gap between what is currently being offered by main stream websites and what brides and vendors were looking for Requirements, Wireframes and Mock ups were created + Project Requirements Virtual Wedding Planning Expo Social Network for Brides and Vendors Provide tools for Brides and Vendors Marketplace and Forum Step by step tutorials + Technology Initially thinking to use PHP and MySQL for backend Would have taken long time for development and was not feasible Finally zeroed in on Drupal, which is an Open Source Content Management System Drupal is very flexible in the functionality that it provides via the core and contrib modules (5000) HTML and CSS for front end Studied Tutorials to learn Drupal Attended various Drupal Events, Camps and Conferences + Implementation of Drupal for the Project Drupal Core Contributed Modules Custom Functions written in PHP Drupal theme used to build upon: Light Fantastic http://drupal.org/project/lightfantastic + Features of the Website Wedding Planning Tools User Profile o Social Network/ Buddies o Guestbook o Photo gallery o Appointments o Binder o Budget o Calendar o Checklist o Marketplace Posts o Vendor Directory o Forum o Invitations o + Features of the Website Vendor Tools o User Profile o Buddies/ Social Network o Photo gallery o Guestbook o Calendar o Appointments o Clients o Marketplace Posts + Website Demo + Core Modules Search: Enabling basic site content and user search User: Enabling registration of users Upload: Be able to attach documents to web pages PHP: Be able to write custom PHP code for modules Node: Create nodes on the site Contact: Set up a site wide contact form Comment: Be able to comment on nodes + Contributed Modules Admin Menu: This is a very user friendly tool to configure the different modules on the site. Auto Assign Role: Since I needed the users to register as a bride or a vendor, this module came in very handy. Back Up and Migrate: This module is perfect for creating site back up and migrate it to other domains. Calendar: Helps build a site calendar CCK: Helps you manage all the content on the site. You can create different Content Types, which in essence are categories of content that the users can create by entering data in the forms. The Content Types can be configured with specific fields. Content Access: Enables privacy of Content Types + Contributed Modules Content Profile: Let’s you create various fields for a user profile. One profile was made for brides and vendors. They were differentiated programmatically and via permissions. Date: Helps configure dates for the site. JQuery pop up. Devel: Debugging tool Event and RSVP: To create site wide invitations Faceted Search: Allow advanced site search by Content Type File Field: Allow creation of fields for file uploads to Content Types Formblock: Allow a content type form to be accessible as a block which can be placed anywhere on the site. Gmap and Zipcode: Google Map Configuration Google Analytics: Site Statistics + Contributed Modules Guestbook: Akin to Facebook Wall Image API, Image Cache, Image Field, Thickbox: Used to create site photogallery and user avatars Jquery UI: To enable popups for certain modules Location: Enable collection of valid locative information on the site. Zipcode search for vendors. Node Review: Be able to review certain content types Poormanscron: Be able to run cron jobs User Relationships: Be able to friend other users Views and Views Calc: A very important module which lets you display the data entered through content types as a table. This can be displayed anywhere on the site. + Custom Functions Submit Handlers: To redirect a page to itself on hitting submit Preview Button was disabled Permissions on viewing content: Control which tabs were visible to buddies and non-buddies Control which content was available to members and nonmembers Example: Only buddies of a site member can see the said member’s guestbook and buddies tab. + Enhancing the Site Usability Screenshots of the website were taken to create tutorials. Present information in small bits to prevent memory overload. Usability Test was conducted. Potential: Create screencast + Usability Testing 10 participants (5 brides, 5 vendors) Consent Form, Background Questionnaire, Pre-test Questionnaire: Initial Impressions Task Scenarios and testing of all most of the website features. Post-test Questionnaire, Debriefing (Likert Scale) Think out loud principle + Conclusions Overall look and feel greatly appreciated Overall functionality: very useful, according to users Some usability flaws, but they can be easily fixed Most of the users said that the website had all the features needed for wedding planning website No major red flags Next step: fix bugs and launch the website Drupal was successful in providing all the features for the website + Thank You! twitter: @launchingfrog Website: www.launchingfrog.com Email: contact@launchingfrog.com LinkedIn: http://www.linkedin.com/in/nehagoyal I also run a South Asian Blog called Marigold Events (www.marigoldevents.com) Credit for Custom Code: Doug Vann (doug@dougvann.com) + Submit Handler Code if ($form_id == 'mybudget_node_form’) $form['buttons']['submit']['#submit'][] = ’sub_handler’; function sub_handler ($form, &$form_state) { global $user; $form_state['redirect'] = 'user/'.$user->uid.'/mybudget’; } function custom_funcs_form_alter(&$form, &$form_state, $form_id) { global $user;if ($form_id == 'mybudget_node_form') $form['buttons']['submit'] ['#submit'][] = ’sub_handler'; unset($form['buttons']['preview']); } + Permissions Custom Code /** Override theme_menu_item * * Make sure that only buddies can see BUDDIES and GUESTBOOK tabs */ function phptemplate_menu_item_link ($link) { global $user; if (arg(1)==$user->uid) return theme_menu_item_link($link); if ($link[path] == 'user/%/friends' || $link[path] == 'user/%/guestbook') { if (!_check_buddy_status()) { return "”;}} return theme_menu_item_link($link);} function _check_buddy_status() { global $user; if (arg(1) == $user->uid) return; $path = is_numeric(arg(1)) ? arg(1) : 'none’; if ($path == 'none' || arg(1) == $user->uid) { return; } $buddy_status=db_query('select approved from {user_relationships} where ((requester_id = \''.$user->uid.'\' AND requestee_id = '.$path.') OR (requester_id = '. $path.' AND requestee_id = \''.$user->uid.'\') and approved = "1")'); return db_result($buddy_status);} + What was measured in the Usability Test? Time Number of Clicks Ease of completing the task Satisfaction with the navigation Qualitative aspects of the participant and website + Results: Mean Time Brides Mean Time Add Buddy Search Vendor Search Marketplace Marketplace Budget Binder Guestlist Invitation Checklist Edit Profile Create Account 0:00 Time 1:12 2:24 3:36 + Results: Mean Time Vendors Mean Time Add Buddy Search Marketplace Post Marketplace Post Client List Appointment Book Edit Profile Create Account 0:00 0:14 0:28 0:43 0:57 1:12 1:26 1:40 Time + Results: Success/Failure Brides Task Success/Failure Add Buddy Search Vendor Search Marketplace Marketplace Budget Binder Guestlist Invitation Checklist Edit Profile Create Account Fail Pass 0 1 2 3 4 5 6 + Results: Success/ Failure Vendors Success/Failure of Tasks Add Buddy Search Marketplace Post Marketplace Post Fail Client List Pass Appointment Book Edit Profile Create Account 0 1 2 3 4 5 6 + Mean No. of Clicks Brides + Mean No. of Clicks Vendors