Drupal Camp Chicago 2008

Events happening in the community are now at Drupal community events on www.drupal.org.
slurpee's picture
Start: 
2008-10-24 09:00 - 2008-10-25 18:00 America/Chicago
Event type: 
Drupalcamp or Regional Summit

http://drupalcampchicago.org

Who/Why:

For over 2 years Chicago Drupal has truly highlighted the benefits of an open source initiative. We have built resourceful bridges between many local Chicago establishments including non-profits, entrepreneurs, Drupal development companies, independent consultants, hobbyist, and others in the mid-west. Our goal for this Drupal Camp is to bring everyone together for open communication, education, fun, and industry networking.

What:

An attendee-driven format with advanced resources available make this event truly unique. Need help with a problem, looking for work, or looking to hire Drupal talent? Someone can find a solution at Drupal Camp Chicago. Presentations for beginners and advanced topics will run simultaneously throughout both days. All skill levels are welcomed and laptops are encouraged. Seating is limited, register now - http://drupalcampchicago.org/user/register

Where/When:

UIC Innovation Center
1240 W. Harrison
Chicago, IL 60607
(312) 355-5567
October Friday 24 & Saturday 25th 9am-6pm
http://tinyurl.com/mapDCC

Pricing:

*Pre-Registration for 2-day event: $20
*Volunteering is fun! Contact us
*Exception: Participants can request (info@DrupalCampChicago.org) a scholarship and explain their circumstances.

Sponsor:

*Individual Support, $50
*Community Support, $200
*Professional Support, $500
*Event Sponsors, $1000
Contact us to let us know your level of commitment - http://drupalcampchicago.org/contact

Speaker:

*Interested in presenting? please submit a request - http://drupalcampchicago.org/wiki
*Highlight your Drupal knowledge to the mid-west
*Share your experience and contribute to the growth of Drupal

http://cdmug.org
http://drupalcampchicago.org

Comments

more information about CAMP

jadeg's picture

Is there a place we can stay near UIC innovation center? any more information/links about the hotel is appreciated. I am living around Chicago.

Thanks,
jade

We are going

kkelley's picture

Kirk and I are going. Who else is?

Notes from Friday 10/24 of Drupal Camp Chicago

westbywest's picture

Drupal Camp Chicago 2008

They have a nifty site->java IRC client integration to connent with irc.freenode.net #cdmug channel using mibbit.com.

Fri 10/24

BOF = Birds of Feather, Drupal meetup convention

Code for a Cause (C4aC) is a Chicago Technology Cooperative project that brings together volunteer developers and designers to build simple websites and web applications for small nonprofit organizations, using Free Software. Like other "code sprints" held by open source projects, C4aC volunteers work in small teams on specific real-world applications, addressing identified needs within the nonprofit community. Projects are led by Chicago Tech staff with years of experience working on nonprofit technology projects.
http://drupalcampchicago.org/c4ac

Sponsors

Chicago Community Tech Non-profit
http://www.icstars.org/

We help community, nonprofit, and social justice organizations fulfill their missions by building powerful web sites and online applications.
http://www.chicagotech.org/

net2Community
We operate as a virtual company with our employees and consultant partners. Postal mail can be sent to our main company office:
http://net2community.com

The hope is have to DrupalCon in Chicago in the next few years.

All code samples and related materials will be available on DCC blog.

The 'Trifecta' for Slick Looking AJAXForms
http://drupalcampchicago.org/day1-session1a

Trellon is a consulting firm specializing in Drupal development and training.
http://trellon.com/

Trellon built website for One Economy Corp
http://trellon.com/project/one-economy-corporation

Preferred IDE: Zen, Eclipse, PHPed, TextMate

AJAX forms good for entering ad-hoc notes inline with other content, w/o requiring full page refresh. E.g. Comments to posted stories.

Trellon intranet has VERY SIMPLE user submission forms after logging in (i.e. no side columns).

Key tenet of Internet: “Never push more content to ppl than what they actually need to get the job done.”

Created AJAX form for node submission, just title and body fields. Content is added inline with page.
-> only needed 3 lines of code

Function ajax_form_alter uses one line of code to remove each extraneous fields (indexed by array key) from node submissions form.

D6 flexibility allows relevant JS files to be stored in same location as relevant code.

How to compress form layout
-> add CSS markup using hook_form_alter

By default, Drupal doesn't track the source of where a form is coming from. Speaker embeds a hidden field (“context”) to identify this source to Drupal upon form submission.

“he's using hook_form_alter to set the #access params on a form to false so they're hidden but the values in those elements persist and will be saved when the form is saved. “
-> setting #access = false is considered better coding practice than using unset

Elements in JS
Click-handler associated with small “submit content” button to cause streamlined form to pop-out upon clicking.
Also change class of button to alter its color or appearance
jQuery plugin elements: submission and success/failure handlers
keywords: ajaxformsubmit,

To avoid full page rendering after content submission...
Override hook_nodeapi. This function fires everytime you do something to a node. In particular, override $op switch to detect when a node of special type (identified by the hidden form field mentioned above) is submitted.
Important security issue, the hook_nodeapi demo code checks the value of a field in the REQUEST data (before Drupal validates/sanitizes them). The code should not store any information taken directly out of REQUEST.
Add “die” at the end of hook_nodeapi as a stopgap measure, but not suitable for a production environment.
Using jQuery prepend command to insert content dynamically

Plan for jQuery breakins
Normal Drupal submission forms will come up for browsers w/o JS turned on.
Click event handler will not fire. Instead, just functions as a link to /node/add

How do you determine where content is inserted dynamically inline
Created a structure (a view, apparently) to generate list of stories
Drupal getform() to get the form that will be displayed upon clicking button.

jQuery forms plugin aka AJAXforms

Search Engine Optimization for Drupal Sites
http://drupalcampchicago.org/day1-session2a

Not everyone agrees with utility of SEO: http://www.tychoish.com/2008/09/seo-nonsense/

Set specific goals, e.g. Develop your blog calendar to supplant most other online calendars in town.

Site optimization...
Optimize for “conversion” aka convert page visitor to ca$h-money paying customer
Optimize for search engine accessibility

Optimize site for the kind of traffic you wish to attract.

Basic questions for SEO
What are goals (generate leads, reduce service costs)?
What do you want to be known for (i.e. limit scope)?
What do your clients want?

Google is primary revenue for pay-per-click advertising, and it likes new content. (“Fresh content strategy.”)

Keyword selection
Be as specific as possible for
Be consistent about jargon

Tools for Markets
Finding keywords: wordtracker
Google AdWords Budgeting
Submit to Google Maps
Feedburner (get RSS feeds pushed out to bloggers)

Writing for SEO
Keyword density: 5-8% keyword density (otherwise Google penalizes you for keyword stuffing). 500Words of content per page.
http://www.seochat.com/seo-tools/keyword-density/

Keywords early and often.
Write section headings.

Google Spider aka Googlebot
Keyword repetition assists busy folks with speeding eyes from leaving your page after 1st glance.

Inbound links from authoritative sources are good, and so are outbound links.

Site structure
clear text, keyword-based nav
hyphenated URLs, not underscores or combined words (dog-walkers instead of dog_walkers)
Underscores are not white space
No dupe content
Permanent forwarding is preferred, although best not have too much content forwarded.
http://drupal.org/project/search404

Page structure
Drupal has SEO keywords module: http://drupal.org/project/nodewords
CSS-based theme preferred to keep as many keywords as possible at top of page
Google escapes all code, only pays attention to text and ALT text
Google analytics module (xmlsitemap, but it doesn't
http://www.google.com/analytics

Search engine relations
http://search.yahoo.com/info/submit.html
robots.txt
sitemap.xml

SEO-relevant Drupal modules, to recap
pathauto
nodewords
xmlsitemap
google_analytics
path_redirect
alinks

Between Sessions
Very generic spam filtering service built by Drupal founder Dries.
http://mollom.com/

BUEditor is popular WYSIWYG editor, alternative to tinyMCE
http://drupal.org/project/bueditor

tinyMCE has a button for its toolbar.
http://drupal.org/node/82437

Node Radioactivity -> cool alternative to nodepopular. Nodes receiving lots of attention float to the top, and “decay” after half life has passed.
http://drupal.org/project/radioactivity

Advanced Drupal 6 Theming
http://drupalcampchicago.org/day1-session3a

Presenter David Eads
eads@chicagotech.org
http://www.chicagotech.org/

Sites recommended for theming badass-ness
http://www.gomediazine.com/tutorials/create-a-killer-band-site-in-drupal...
http://mustardseedmedia.com/

Presenter's Drupal Group
http://groups.drupal.org/drupal-for-evil

“Rigid and inflexible with theming.” -> yep.

“Use lots of regions” is common strategy, e.g. Front page feature region.

Note the presenter has compressed his admin menu “Content, Building, Reports, etc” to a dashboard at the top of the page.
-> This is done with admin_menu module. VERY USEFUL!

Drupal Blocks API kinda sux.
1 block can only be assigned to 1 region at a time.
Rigid and overly conditional
Blocktools is a helpful module to mitigate some of this difficulty (this module written by presenter)

Drupal 6 Theming Innovations
Template Preprocessing
Steps
1.Define path and hook_menu.
'page_callback' => 'theme';
2.Define custom theme function (hook_theme)
3.Generate variables in pre-process function
note that template_preprocess__home() has its arg passed by reference
4....

Views2 is the Drupal query building, yet it is over-designed and unwieldy.

Strong endorsement for Nodequeue module. Indeed, nodequeue appears mandatory for Eads' preprocesing method to work.

Force the use of tpl files for any theme function
http://groups.drupal.org/node/14425

Drupal + Facebook Integration
This was supposed to be a BOF led by Eads, but it didn't happen.
http://groups.drupal.org/facebook-api
http://barcelona2007.drupalcon.org/node/630
http://apps.facebook.com/drupalforfacebook/
http://drupal.org/project/fb (only for D5 so far)

Mapping Workshop
http://drupalcampchicago.org/day1-session4a

Neat feature: you get geo-rss feeds with the location & geo modules.
You can also do distances from a point and proximity using views under location. I.e. Search for things w/in a radius.

GMap module is nifty.

Sell stuff online with Übercart and Drupal
http://drupalcampchicago.org/day1-session5a

Required modules for D5 UC:
Tapir
Ubrowser
Token
Workflow-ng (this dependency supposedly goes away for D6 module)

D6 module is still in beta.

Uebercart presently does not have all their code on cvs.drupal.org.

Recommended modules:
cck
imagecache
imagefield
thickbox

Plug for Topnotch themes, the theme of champions.

Suggest coming up with a custom SKU for each product. Node ID is not very commerce friendly.

They raise valid point that extraneous content on the shopping cart page (e.g. sidebars, blocks) will distract customer from actually buying anything. So, exclude extraneous blocks from Uebercart pages.

Anonymous checkout is preferred (i.e. not require user registration), gives better conversion rate.
-> however, check out process will automatically create user account out of the email address submitted.

Example vendors who use Uebercart in the real world: Acquia ...

Cart sessions (i.e. underlying nodes) are serialized and stored. Thus, changes to nodes (price, shipping status) will not be reflected on any items presently in the cart.

Use roles to assign properties like an expiration date to product types.

Ubercart has a contrib module to let people pay whatever they want, and also a gift module.

Once all products entered, suggest adding the catalog as home page for very basic e-commerce.

“Attributes” are properties you can add to each product, e.g. size and color.

Scattered notes
Suggested module for Drupal backup and migration (besides just mysqldump and tar)
http://drupalmodules.com/module/backup-and-migrate

Notes from Saturday 10/25 of Drupal Camp Chicago

westbywest's picture

Sat 10/24

Views2 in Drupal6
Jeff Eaton of Lullabot
http://drupalcampchicago.org/day2-session4a
Missed this session.
Closing comment: it's best to embed a view in a template to avoid having to create many many many different views.

Advanced CCK
http://drupalcampchicago.org/day2-session3a
By KarenS

New user interface, which simplifies process of adding custom field. There is now a nice drag & drop feature.

CCK6 now supports multiple items per field, and the items may be rearranged arbitrarily.
-> these items have infinite weighting (i.e. not limited to Drupal standard 22 weights)

Open call for folks to join the CCK Drupal group and submit patches to fill out the CCK documentation. CCK documentation is ... lacking, to put it respectfully.

Notes on Theming
Devel module for D6 has this nifty feature to print_r() all the values in a node in a nicely pretty-printed, colored list.
“ Dev Load” tab.
dev render shows all of dev load plus the content array
Fields can be “excluded” from default page render, but with the rendered field still available for the theme to place elsewhere. This is different from hidden fields, which are not available to the theme at all.

Upgrade issues
There is no official release of CCK since the upgrade path is so buggy.
D6 has a nice feature of upgrade ALL modules present, whether active or not, and the module upgrades occur in undefined order.

Multigroup
Way to put several fields together, combine them so they stick together, e.g. an address multigroup with street/city/state fields.
Some talk about creating dependencies b/w fields for hierarchical select, e.g. list of states dependent on which country selected. This would likely be done as an external module.
At present, there is this module for D5: http://drupal.org/project/hierarchical_select

There is an outstanding issue with the empty/not-empty filter in views, since that filter will not like fields that are null, as opposed to empty.

Date and Calendar
By KarenS
http://drupalcampchicago.org/day2-session2a

Moral: “Do NOT try to setup a calendar from scratch. Clone and modify.”

CCK-date field type is now the way to go.
Event module has been deprecated for D6.

The “Upcoming Events” block also lists the actual date for each event, rather than “X days away” (which may be done as a semi-custom view).
And there's a cool color legend block too (which may be done as a custom view too).

There are lots of options on the date submission form, most of which are in collapsed sections.

There is also now a select list widget for repeating date! With a pop-up from jCalendar. Who-hoo!

Views and CCK now have “Advanced Help,” and there is strong encouragement to get AH on CCK-fields too.

Calendar module is essentially a fancy-schmancy view that lits date nodes in conventional grid format.
-> Calendar also has mucho-cool color wheel widget from jstools embedded in Garland theme.

Views attachments
method to attach more than one view together.

iCal
The intention is to get iCal to the point of realistic 2-way event exchange. Import/export however not yet working yet.
iCal now has advanced timezone support (i.e. for changing timezones)
Also interest in importing 3rd party feeds into internal nodes (feedapi – ical integration)
iCal import is in D5 version only? Not yet in D6.

New style changes from contributors.

“As good as Google Calendar”

Ambassador sites for Drupal Calendar?
uh, not yet?
http://mothersclick.com, eventually

Yes We Can: Building Beautiful and Sustainable Sites in Drupal
George DeMet of palantir.net, pals around with Obama. Runs exclusive Drupal design shop.
http://drupalcampchicago.org/day2-session5b

Will discuss, Strategies for building sites and themes.

Far too many ugly Drupal sites, ugly on outside and inside. Badly built, badly themed impossible support & extend.

After building a site, u should be able to support, extend it easily.

Example sites:
Indianapolis Museum of Art
Kohl Children's Museum
First Bank and Trust
Art Institute of Chicago
Desire to hook into museum's digital assent mgmt (photos of art pieces). Most visual aspect are breadcrumbs at the top of the site.

Basic goals
nail down client's desired functionality (which they may not be able to express very well)
user-centric approach
plan out coherent data model (modules, blocks, content types, views, taxonomy) -> done w/o any idea of visuals of site.

Wireframes
Build them in Visio, or OpenOffice Presentation, with some description of workflow and hand off to creative team or the client.

Deliverables from Client (i.e. They should have this B4 you start working for them)
Layered photoshop/illustrator files
Content!
Style guide
BBC visual style guide is a good reference: http://www.bbc.co.uk/guidelines/newmedia/desed/visual_lang_1_0_6.pdf
Maybe this one too: http://www.bbctraining.com/pdfs/newsstyleguide.pdf

Design implementation mockup
marked-up version of design templates with comments targeted at booth client and internal dev team
Blue note for clients, Red notes with lots of jargon for internal dev team
These notes can be added in Acrobat Pro (costs ca$$h money!). Alternatives?
Pdfedit: http://sourceforge.net/projects/pdfedit
PDF Escape Firefox plugin: add notes, text, pictures to a PDF. http://www.pdfescape.com/

Zen Theme
Drupal “starter” theme, but very nicely extensible thru subthemes. This is especially useful for D6.

Interactive Mockup => deliverable to client
Do this before theming!
Have client react to context, not design yet.
FPO = for placement only, i.e. Dummy image or text
Awesome online Greeking generator: http://www.duckisland.com/GreekMachine.asp
Also Firefox has plugin for dummy impsum. https://addons.mozilla.org/en-US/firefox/addon/2064

Theme building
Careful not to get into mode of building a skin.
Future proofing is generally a good idea (i.e. clear upgrade path for you theme, especially if you base off Xen)

Deployment

Theme prototype
Don't writer CSS/HTML first and try to shoehorn into theme.
Drupal HTML may be ugly, but works.
Still using greeking and FPO's.
Have client react to design.

Transition to deployment
Populate content at this point!
make admin area client friendly. Does this by creating client admin user role.
Provide client with orientation, training, and docs. Who writes docs?

Do's/Dont's
Don'ts
Shield client from Drupal concepts/terms
Shoehorn custom HTML/CSS into theme
Forget Futureproofing

Difference between skinning and theming?
Skinning is comprehensive. Theming is not, and don't try to make it so.

Relevant presentations by Goerge:
http://www.palantir.net/blog/sustainable-markup-how-be-a-themer-drupal

Soup to structure: making a real site from a pile of nodes
Jeff Eaton of Lullabot
http://drupalcampchicago.org/day2-session6b

Default layout: “River of News”
Too much gets hidden behind the Home Page. Very very very very very wide tree.

Tips
Clean URLs & pathauto
Contextual cues like breadcrumbs
check out module “custom breadcrumbs”
also menu breadcrumb module
related stuff in sidebar blocks

Rudimentary Blog module does little besides wrap node in relevant breadcrumbs, but breadcrumbs get less effective with 1000s of nodes. Views module helps alleviate this with multi-layer drill-down structure, e.g. archive listing of # of nodes, click thru to # nodes per year, etc.
-> views arguments help augment clear URLs as arguments can go in the URL.
Custom breadcrumbs and pathauto do not yet work with panels. Only works for nodes thus far.

General approach...
Views, PHP, or Panels for landing pages.
Views for listing pages.
Pathauto + breadcrumbs for Nodes

Tip: the devel module can generate a bunch of nodes/users/comments. Helpful for testing.

Related Content Sidebars
Posts by the user (built by views). If user ID is not present in URL, look up a node ID on current page and get that node's author user ID. -> Clever refinement in D6
Similar by terms module -> building related content blocks from free-tagging
Strongly suggest using Blockcache module so as not to slow down DB when the # of free-tagging terms grows exponentially.

Taxonomy re-direct module is helpful for clearing up tags to be more human presentable. Direct users to views or panels instead of simply listing nodes with that tag attached.

Wikis
On wikipedia, Breadcrumbs tend to function more as history of what you last clicked. Clickpath module implements this.

Presently, Panels not available for D6. Basic landing page should probably work in D6 for now.

Scattered Notes

WYSIWYM = What you see is what you mean. Basic goal for visual editors. C.f. http://drupal.org/project/wymeditor
-> drawback: interface currently kinda cluttery, not yet stable for D6

Grand Rapids, MI

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week