121

Joomla Day Austin Part 3

  • View
    1.661

  • Download
    2

Embed Size (px)

DESCRIPTION

Joomla Day Austin Texas 2011 - Part 3

Citation preview

Page 1: Joomla Day Austin Part 3
Page 2: Joomla Day Austin Part 3
Page 3: Joomla Day Austin Part 3

Template Time!

- index.php from index.html

- component.php- templateDetails.xml

Page 4: Joomla Day Austin Part 3

index.php<?php/* The following line denies direct access to this PHP file */defined('_JEXEC') or die;/* The following line loads the MooTools JavaScript Library */JHtml::_('behavior.framework', true);/* The following line gets the application object for things like displaying the site name */$app = JFactory::getApplication();?><?php echo '<?'; ?>xml version="1.0" encoding="<?php echo $this->_charset ?>"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >

Page 5: Joomla Day Austin Part 3

index.php head

<head> <!-- The following JDOC Head tag loads all the header and meta information from your site config and content. --> <jdoc:include type="head" /> <!-- The following line loads the template CSS file located in the template folder. --> <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" /> </head>

Page 6: Joomla Day Austin Part 3

Replace Placeholders w/ Joomla Tags

<!--Begin Placeholder--><ul class="menu">

<li class="item-1 active"><a

href="#">Home</a></li>

<li class="item-2"><a href="#">Minis</a>

</li><li class="item-3">

<a href="#">Programs</a>

</li><li class="item-13">

<a href="#">Facebook</a></li>

<li class="item-14"><a

href="#">Twitter</a></li>

</ul><!--End Placeholder-->

Becomes:

<jdoc:include type="modules" name="menu" style="none" />

Page 7: Joomla Day Austin Part 3

Module Tag Styles

Menus don’t need div wrappers so we use:

<jdoc:include type="modules" name="menu" style="none" />

Banners need the wrappers so we use:

<jdoc:include type="modules" name="banner" style="xhtml" />

Page 8: Joomla Day Austin Part 3

Simple Conditionals

<?php if($this->countModules('banner')) : ?><div id="banner"><jdoc:include type="modules" name="banner" style="xhtml" /><div class="clr"></div></div><?php endif; ?>

Page 9: Joomla Day Austin Part 3

Conent/Component Code

<div id="content" class="width-65"><jdoc:include type="modules" name="before" style="xhtml" /><jdoc:include type="message" /><jdoc:include type="component" /><jdoc:include type="modules" name="after" style="xhtml" /><div class="clr"></div></div>

Page 10: Joomla Day Austin Part 3

Don’t forget debug!

Place a debug module position right before the </body>

<jdoc:include type="modules" name="debug" style="xhtml" />

Page 11: Joomla Day Austin Part 3

Content Conditional If Sidebar

“width-65” will make the content smaller and float left, so only use if there’s a module in sidebar:

<div id="content" class="width-65">

becomes:

<div id="content" <?php if($this->countModules('sidebar')) : ?>class="width-65"<?php endif; ?>>

Page 12: Joomla Day Austin Part 3

Dynamic Copyright

<p>&copy; 2011 Minis and Friends. All rights reserved.</p>

becomes:

<p>&copy; <?php echo date('Y'); ?> <?php echo $app->getCfg('sitename'); ?>. All rights reserved.</p>

Page 13: Joomla Day Austin Part 3

Useful Variables/* The following 5 lines get current page variables */$option = JRequest::getCmd('option', '');$view = JRequest::getCmd('view', '');$layout = JRequest::getCmd('layout', '');$task = JRequest::getCmd('task', '');$itemid = JRequest::getCmd('Itemid', '');/* The following 6 lines set a variable to true if we're on the site default menu item (home) */$menu = & JSite::getMenu();if ($menu->getActive() == $menu->getDefault()) :$active = "homepage";else:$active = "subpage";endif;

Page 14: Joomla Day Austin Part 3

component.php

<?php/* The following line denies direct access to this PHP file */defined('_JEXEC') or die;/* The following line loads the MooTools JavaScript Library */JHtml::_('behavior.framework', true);/* The following line gets the application object for things like displaying the site name */$app = JFactory::getApplication();?><?php echo '<?'; ?>xml version="1.0" encoding="<?php echo $this->_charset ?>"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" > <head> <!-- The following JDOC Head tag loads all the header and meta information from your site config and content. --> <jdoc:include type="head" /> <!-- The following line loads the template CSS file located in the template folder. --> <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" /> </head> <body id="modal"> <jdoc:include type="message" /> <jdoc:include type="component" /> </body></html>

Page 15: Joomla Day Austin Part 3

component.php

<?php/* The following line denies direct access to this PHP file */defined('_JEXEC') or die;/* The following line loads the MooTools JavaScript Library */JHtml::_('behavior.framework', true);/* The following line gets the application object for things like displaying the site name */$app = JFactory::getApplication();?><?php echo '<?'; ?>xml version="1.0" encoding="<?php echo $this->_charset ?>"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" > <head> <!-- The following JDOC Head tag loads all the header and meta information from your site config and content. --> <jdoc:include type="head" /> <!-- The following line loads the template CSS file located in the template folder. --> <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" /> </head> <body id="modal"> <jdoc:include type="message" /> <jdoc:include type="component" /> </body></html>

Page 16: Joomla Day Austin Part 3

Echo Variables as Body Classes

<body id="site" class="<?php echo $option . " view-" . $view . " layout-" . $layout . " task-" . $task . " itemid-" . $itemid . " " . $active;?>">

which will result in something like:

<body id="site" class="com_content view-category layout-blog task- itemid-65 homepage">

which can be extremely useful styling hooks when the markup of the page lacks taxonomy

Page 17: Joomla Day Austin Part 3

template_preview.png

640x384px .png

Page 18: Joomla Day Austin Part 3

template_thumbnail.png

206x150px .png

Page 19: Joomla Day Austin Part 3

Language Files

create directories:/language/en-GB/

2 files:en-GB.tpl_minis.ini (language for template)en-GB.tpl_minis.sys.ini (language for parameters)

Page 20: Joomla Day Austin Part 3

templateDetails.xml

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE install PUBLIC "-//Joomla! 1.7//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.7/template-install.dtd"><extension version="1.7" type="template" client="site"> </extension>

Page 21: Joomla Day Austin Part 3

templateDetails.xml

<name>minis</name> <version>1.0</version> <creationDate>09/07/2011</creationDate> <author>Kyle Ledbetter and Andy Miller</author> <authorEmail>[email protected]</authorEmail> <authorUrl>http://minisandfriends.org</authorUrl> <copyright>Copyright 2011 Minis and Friends. All rights reserved.</copyright> <description>Minis and Friends Template</description>

Page 22: Joomla Day Austin Part 3

templateDetails.xml

<files> <filename>component.php</filename> <filename>favicon.ico</filename> <filename>index.php</filename> <filename>templateDetails.xml</filename> <filename>template_preview.png</filename> <filename>template_thumbnail.png</filename> <folder>css</folder><folder>html</folder> <folder>images</folder> <folder>language</folder> </files>

Page 23: Joomla Day Austin Part 3

templateDetails.xml

<languages folder="language"> <language tag="en-GB">en-GB/en-GB.tpl_minis.ini</language> <language tag="en-GB">en-GB/en-GB.tpl_minis.sys.ini</language> </languages>

Page 24: Joomla Day Austin Part 3

templateDetails.xml

<positions> <position>menu</position> <position>header</position> <position>banner</position> <position>above</position> <position>inset</position> <position>before</position> <position>after</position> <position>sidebar</position> <position>below</position> <position>footer-left</position> <position>footer-right</position> <position>footer-menu</position> <position>debug</position> </positions>

< thesematch

these >

Page 25: Joomla Day Austin Part 3

templateDetails.xml

<config> <fields name="params"> <fieldset name="settings">

<field name="banner" type="radio" default="0" label="Banner" description="Turn banner on or off"> <option value="1">On</option>

<option value="0">Off</option> </field>

</fieldset> </fields> </config>

Page 26: Joomla Day Austin Part 3

Complete templateDetails.xml

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE install PUBLIC "-//Joomla! 1.7//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.7/template-install.dtd"><extension version="1.7" type="template" client="site"> <name>minis</name> <version>1.0</version> <creationDate>09/07/2011</creationDate> <author>Kyle Ledbetter and Andy Miller</author> <authorEmail>[email protected]</authorEmail> <authorUrl>http://minisandfriends.org</authorUrl> <copyright>Copyright 2011 Minis and Friends. All rights reserved.</copyright> <description>Minis and Friends Template</description> <files> <filename>component.php</filename> <filename>favicon.ico</filename> <filename>index.php</filename> <filename>templateDetails.xml</filename> <filename>template_preview.png</filename> <filename>template_thumbnail.png</filename> <folder>css</folder><folder>html</folder> <folder>images</folder> <folder>language</folder> </files> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.tpl_minis.ini</language> <language tag="en-GB">en-GB/en-GB.tpl_minis.sys.ini</language> </languages> <positions> <position>menu</position> <position>header</position> <position>banner</position> <position>above</position> <position>inset</position> <position>before</position> <position>after</position> <position>sidebar</position> <position>below</position> <position>footer-left</position> <position>footer-right</position> <position>footer-menu</position> <position>debug</position> </positions> <config> <fields name="params">

<fieldset name="settings"> <field name="banner" type="radio" default="0" label="Banner" description="Turn banner on or off">

<option value="1">On</option> <option value="0">Off</option> </field> </fieldset>

</fields> </config> </extension>

Page 27: Joomla Day Austin Part 3

Create favicon.gif

Page 28: Joomla Day Austin Part 3

Favicon Generator

Page 29: Joomla Day Austin Part 3

Template Directory

Page 30: Joomla Day Austin Part 3

Zip it up!

Page 31: Joomla Day Austin Part 3

Install & Cross Fingers

Page 32: Joomla Day Austin Part 3

Success!

Page 33: Joomla Day Austin Part 3

HTML Template Overrides

- Don’t hack the core!- Change views from MVC

components

Page 34: Joomla Day Austin Part 3

Change a core output

I don’t want an edit icon and I want it to float next to

the title

Page 35: Joomla Day Austin Part 3

Find the view

Page 36: Joomla Day Austin Part 3

Copy into your template

Page 37: Joomla Day Austin Part 3

Edit to your liking

Page 38: Joomla Day Austin Part 3

Andy’s Alternate “Templatization”

1.Start from scratch?

2.Start with a Template Framework?

Development Options:

Page 39: Joomla Day Austin Part 3

Pros for“Starting from

Scratch”•Fast development process if design

is simple

•Don’t need to learn a framework

•Faster performance

•No design restrictions

Page 40: Joomla Day Austin Part 3

Pros for “Starting with Framework”

•Faster development if you are already familiar with the template framework

•Built in styling taken care off

•Lots of functionality for free

•Base template to start from

Page 41: Joomla Day Austin Part 3
Page 42: Joomla Day Austin Part 3
Page 43: Joomla Day Austin Part 3

index.php

Page 44: Joomla Day Austin Part 3
Page 45: Joomla Day Austin Part 3

templateDetails.xml

Page 46: Joomla Day Austin Part 3

template-options.xml

Page 47: Joomla Day Austin Part 3

style configuration

Page 48: Joomla Day Austin Part 3
Page 49: Joomla Day Austin Part 3
Page 50: Joomla Day Austin Part 3

Questions?

Page 51: Joomla Day Austin Part 3

Intermission

Page 52: Joomla Day Austin Part 3
Page 53: Joomla Day Austin Part 3

Joomla Extension Development

Alex Andreae, SourceCoastJeremy Wilken, Gnome on the run

Joomla!Day AustinSeptember 2011

Page 54: Joomla Day Austin Part 3

It isn't always as simple as installing...

• It takes energy• It takes time• It takes thought• It takes knowledge• It takes....

Page 55: Joomla Day Austin Part 3

Extension Types

• Components• Modules• Plugins

Page 56: Joomla Day Austin Part 3

Free or Paid?

Should I buy extensions or use free ones?

• Free or paid doesn't make it better• If an extension saves you hours...• Focus on what works, not what is free• Consider donating for free extensions

Page 57: Joomla Day Austin Part 3

The latest is (often) greatest

Does keeping my extensions updated matter?

• Extensions can be vulnerable• Observe release cycle for stable releases• Grab the rss feeds from favorite extensions• Watch the vulnerable extensions listhttp://docs.joomla.org/Vulnerable_Extensions_List

Page 58: Joomla Day Austin Part 3

Install with caution

Should I install all 'willy-nilly'?

• No, no, and never• Check if its in active development• Evaluate extensions on a test site• Always backup first

Page 59: Joomla Day Austin Part 3

Keep a clean site

Is there a problem with leaving extensions I'm not using yet?

• Uninstall anything you aren't using• Check they actually uninstalled• Take notes about what worked

Page 60: Joomla Day Austin Part 3

Finding good extensions

How do I find a good extension?

• Search the JED with a regular search engine• Search on multiple terms and combinations• Talk with others about what they use• Read JED reviews with a grain of salt

Page 61: Joomla Day Austin Part 3

Research the authors

What extensions can I trust and use?

• Is there documentation?• Is there support?• Is there a community around it?• Does the author know Joomla?

Page 62: Joomla Day Austin Part 3

Simpler is (usually) better

How many extensions can I use?

• Try not to install any while building• Install the necessary extensions• The more extensions, the less cohesive the

site will be• Avoid overly complex extensions for simple

problems

Page 63: Joomla Day Austin Part 3

Use the same extensions

Should I use the same extensions always?

• Find your favorites and stick with them• Makes it easier to use• Easier to track updates• You can become an expert using them

Page 64: Joomla Day Austin Part 3

Checklist for extensions

• Will this solve problems?• Has it been updated recently?• Do I trust the author?• Have I tested it on a test site?• Does it uninstall cleanly from the test site?• Do you have the latest version?• Do I have a backup before installing?

Page 65: Joomla Day Austin Part 3

Custom extensions

When should I pay to have a custom extension made?

• Designed to exact requirements• Simpler to use• Need a realistic budget• Can make the difference in a site

Page 66: Joomla Day Austin Part 3

Give back

• Help on an extension's forum• Post a review• Provide a donation• Send constructive feedback• Share customizations or tweaks• Share on a blog/social media

Page 67: Joomla Day Austin Part 3

Joomla Development

It’s Easier Than You Think

Page 68: Joomla Day Austin Part 3

SourceCoastAlex Andreae

Owner / Developer

JFBConnectFull Facebook Integration Suite for Joomla

* Facebook Authentication* Facebook Page Tab / Canvas Integration* Like, Comment, Fanbox, Recommendations & more* Customizeable Profile Import Into* JomSocial, Community Builder, Kunena, K2, Agora* Lots more

Over 60 straight 5-star reviews on the JED

Page 69: Joomla Day Austin Part 3

Overview

•Joomla Development Flow

•Module Structure

•API Overview

Page 70: Joomla Day Austin Part 3

Joomla - MVC

•MVC(t) - Model View Controller (template)

• Controller - Sets up environment for the display

•Model - Data interface

•Generally to the database, but can ‘create’ data if necessary

• View - Uses the model to get data to display

• TTemplate - Override-able disaplay output

Page 71: Joomla Day Austin Part 3

Modules• Linear code execution

• VC(t) (no real model necessary)

• Uses a ‘helper.php’ file for additional function calls

• Can be model-like, but modules don’t have DB tables

• Files:

• mod_<modulename>.php and .xml

• helpers/helper.php

• tmpl/default.php

Page 72: Joomla Day Austin Part 3

Module Parameters

Page 73: Joomla Day Austin Part 3

Module - Entry Point

Page 74: Joomla Day Austin Part 3

Module - Helper File

Page 75: Joomla Day Austin Part 3

Module Template - Address

Page 76: Joomla Day Austin Part 3

Module Template - Contact Form

Page 77: Joomla Day Austin Part 3

Joomla API Overview

Page 78: Joomla Day Austin Part 3

Joomla API• http://api.joomla.com

• Left side, select “Joomla-Platform” package

• Bookmark, cuddle up to, and love this page

• “Classes” describes

• JFactory - Get instantiations of common classes

• JRoute - Get URL for specific component/view/task

• “Application” describes

• Every other Joomla function

Page 79: Joomla Day Austin Part 3

JObject• All Joomla classes derived from (You should

too)

• Easy getter/setter methods

• $obj->set(‘var’, ‘value’); // Set a variable

• $obj->get(‘var’, ‘default’); // Get a value

• $obj->def(‘var’, ‘default’); // Set a default

• $obj->toString(); // Great for debugging - no print_r($obj) required!

Page 80: Joomla Day Austin Part 3

JUser Object• $user = JFactory::getUser(); // logged in user

• $user = JUser::getInstance($id);

• $id = UID or username

• Once fetched:

• if ($user->guest)

• $user->get(‘username’); //id, fullname, lastvisitDate, etc

• It’s derived from JObject!

Page 81: Joomla Day Austin Part 3

JFactory - Database

• $dbo =& JFactory::getDBO(); // Get the database handle

• Functions describe in JDatabase & JDatabaseMySQL(i)

• $query = $dbo->getQuery(true); // New Query$query->select(‘id, username, email’);$query->from(‘#__users’);$query->where(‘username=’.$dbo->quote($username); // No shenanigans!$dbo->setQuery($query);

• $user->dbo->loadObject(); // objectList, array, arrayList, result, etc

• Can use InsertObject function (or raw SQL) to add rows to database

Page 82: Joomla Day Austin Part 3

JText• Text translation from language files

• JText::_(‘MOD_CONTACT_HIYA’);

• Searches loaded language files in last loaded order

• Searches for first, exact, upper case version

• If found, use transation; If not, use text directly

• To Include more langauge files:

• $lang =& JFactory::getLanguage();

• $lang->load(‘mod_contact’); // Add your extension

Page 83: Joomla Day Austin Part 3

JRequest• JRequest::getVar(‘name’, ‘default’,

‘POST’);

•Can be risky depending on use. Should use sanitized methods below

• JRequest::getInt(‘name’, 4); // Integers only w/ default of 4

• JRequest::getCmd(‘task’); // strips \ . /

• JRequest::getString(‘name’); // No nasty HTML

Page 84: Joomla Day Austin Part 3

Questions?

Page 85: Joomla Day Austin Part 3
Page 86: Joomla Day Austin Part 3

Joomla Site Deployment

Joe LeBlancBrian Edgerton, Edge Webworks

Joomla!Day AustinSeptember 15, 2011

Page 87: Joomla Day Austin Part 3

My Site Is (Almost) Ready for the World to See. What Now?

• Map out a deployment strategy

• Pick a good host (if you haven't already)

• Transfer and setup your site on your live server

• Optimize your site for production

Page 88: Joomla Day Austin Part 3

Deployment

The Golden Rule: Use a development or staging site.

Why can't I just keep making changes on my live site?

• Nothing is stopping you, but you may regret that decision.

• Using a development site can save you hours of frustration.

Page 89: Joomla Day Austin Part 3

Deployment

The Golden Rule: Use a development or staging site.

Benefits

• Gives you a chance to make adjustments and tweaks before your changes are visible to the world

• Allows you to fix any unintended consequences or unforeseen problems

• Absolutely necessary for any ongoing changes or development that will take extended amounts of time

Page 90: Joomla Day Austin Part 3

Deployment

The Golden Rule: Use a development or staging site.

OK, I get it. Now how do I set up a dev site?

• Maintain a copy of your site anywhere you'd like

• Somewhere on the same server is ideal 

• Consider password protecting your dev site

Page 91: Joomla Day Austin Part 3

Transferring Your Site

Use an FTP client to transfer your site files between servers

Page 92: Joomla Day Austin Part 3

Hosting: Shared

Page 93: Joomla Day Austin Part 3

Hosting: VPS

Page 94: Joomla Day Austin Part 3

Hosting: Cloud

Page 95: Joomla Day Austin Part 3

Hosting: Dedicated

Page 96: Joomla Day Austin Part 3

Hosting

Make sure you're getting managed hosting

(unless you're a sysadmin and you know what you're doing)

Page 97: Joomla Day Austin Part 3

Caching

Page 98: Joomla Day Austin Part 3

Caching

Page 99: Joomla Day Austin Part 3

Caching

Page 100: Joomla Day Austin Part 3

CompressingEnable GZip compression to shrink the data sent from the server to browser

Page 101: Joomla Day Austin Part 3

Check Your Resources!Missing resources can affect your search engine rankings.

Page 102: Joomla Day Austin Part 3

YSlow

Page 103: Joomla Day Austin Part 3

Disabling

Disable or remove unused extensions

Page 104: Joomla Day Austin Part 3

Disabling

Disallow frontend registration(User Manager > Options)

Page 105: Joomla Day Austin Part 3

Disabling

Use .htaccesshttp://docs.joomla.org/Htaccess_examples_(security)

Page 106: Joomla Day Austin Part 3
Page 107: Joomla Day Austin Part 3

Launch

Copy files from dev to live

Page 108: Joomla Day Austin Part 3

Launch

Copy database from dev to live

Page 109: Joomla Day Austin Part 3

Launch

Adjust configuration.php

Page 110: Joomla Day Austin Part 3

Launch

...or use AkeebaBackup!

Page 111: Joomla Day Austin Part 3

Wait, you're not done! - Updates

• Sign up for security alerts on joomla.org

• Update through Extension Manager

• Stay up to date on 3rd party extensions

For bonus points: Where are you going to apply these updates first?

Page 112: Joomla Day Austin Part 3

Wait, you're not done! - Backup

AkeebaBackup is great

Page 113: Joomla Day Austin Part 3

Wait, you're not done! - Backup

Test your backup

Page 114: Joomla Day Austin Part 3

Wait, you're not done! - Backup

Schedule your backup

Page 115: Joomla Day Austin Part 3

Okay, now you're done

Page 116: Joomla Day Austin Part 3

minisandfriends.com

Page 117: Joomla Day Austin Part 3

Credits

• Beach Cozumel - Riviera Maya Ocean View: http://www.flickr.com/photos/grandvelasrivieramaya/3180227438/ (CC BY-SA 2.0)

• Server physikstudenten.de http://www.flickr.com/photos/rosenkranz/82624587/ (CC BY-SA 2.0)

• Website icon by Bogdan Mihaiciuc http://bogo-d.deviantart.com/ (CC BY 3.0)

• servers http://www.flickr.com/photos/aswirlymatrix/15138579/ (CC BY-NC 2.0)

• PHP Logo: http://en.wikipedia.org/wiki/File:PHP-logo.svg

Page 118: Joomla Day Austin Part 3

Questions?

Page 119: Joomla Day Austin Part 3
Page 120: Joomla Day Austin Part 3

Joomla Day Austin Closing

ConversationsRyan Ozimek, President of OSM, PICnet

John Coonen, CMS ExpoSeptember 15, 2011

Page 121: Joomla Day Austin Part 3

JOOMLA!DAY AUSTIN

Thanks for coming!

Credits (in order of appearance)

Event Planner MELINDA LEDBETTERSite Planner CORY WEBBSite Planner JEN KRAMER

Template Designer ANDY MILLERTemplate Designer KYLE LEDBETTERExtension Developer ALEX ANDREAEExtension Developer JEREMY WILKEN

Site Deployment JOE LEBLANCSite Deployment BRIAN EDGERTONClosing Cheerleader RYAN OZIMEKClosing Cheerleader JOHN COONEN

Photographer ILSUN PARKVideographer KEN DVORAK

Minis and Friends SALLY IWANSKI

LET THE PARTY START!Join us afterwards at

IRON CATCUS(right next door)

and afterwards across the street atMAGGIE MAE’Sfor Music & Fun!

Thanks so much to the sponsors:eBay

Rocket ThemeRed Component

JoomlArtRochen

Pixel PraiseSourceCoast

Gisclair Media (Larry!)JoomlaShowroom

And YOU our wonderfulAttendees!

More credits to enjoy the music :)

Venue ALAMO DRAFTHOUSE

Content Management System JOOMLA!

Town AUSTIN, TEXAS

Country UNITED STATES

...What else, let’s see

...

Did we thank beer? Thanks beer!

Joomla!Day Austin 2011

That’s a wrap.