javascript frameworks for joomla

15
Leveraging JavaScript Frameworks in your Joomla Sites Alonzo Turner

Upload: luke-summerfield

Post on 11-May-2015

1.429 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Javascript Frameworks for Joomla

Leveraging JavaScript Frameworks in your

Joomla Sites

Alonzo Turner

Page 2: Javascript Frameworks for Joomla

A Quick HistoryWhy we need JavaScript

Frameworks in the first place.

First, there was the Internet, and it was good.

Then there was Netscape, and it had a <blink> tag.

And, then came Internet Explorer.

Then came Firefox and things got a lot better but...

It was complicated.

Page 3: Javascript Frameworks for Joomla

What Frameworks ProvideDOM Manipulation

Class Structures

Event Listeners

AJAX

Binding

Effects

Page 4: Javascript Frameworks for Joomla

The Default JavaScript Framework Provided by Joomla

jimport('joomla.html.html.behavior');JHtmlBehavior::framework(boolean);

/media/system/js/mootools-core.js/media/system/js/mootools-more.js

Page 5: Javascript Frameworks for Joomla

MooTools Libraries

Classesvar someObject = new Class({ initialize: function(){ // some constructor actions }});

Event Listeners$$('a').invoke('addEvent', 'click' function(evt){ var someAnchor = evt.target; window.console.log(someAnchor.href);});

DOM Manipulation$(selector) //returns extended element$$(selector) //returns an array of elements

Page 6: Javascript Frameworks for Joomla

MooTools LibrariesAJAX

Binding

var someRequest = new Request({ method: 'post', url: '/index.php', onSuccess: function(textResult, xmlResult){}, onFailure: function(xhr){}});someRequest.send({'data': obj});

var myObject = {name: 'Alonzo', title: 'dev'};var myFunction = function(){ window.console.log(this.name);}var bound = myFunction.bind(myObject);bound(); // OUTPUTS: Alonzo

Page 7: Javascript Frameworks for Joomla

Effects

MooTools Libraries

var myTween = new Fx.Tween('someElement', { duration: 1000.0, property: 'left'});myTween.start(0,400);

var myMorph = new Fx.Morph('someElement', { duration: 2500.0, transition: Fx.Transitions.Sine.easeInOut, chain: 'cancel'});myMorph.start({'height': 300, 'width': 100});

Tween A single Property

Morph any number of styles in tandem

Page 8: Javascript Frameworks for Joomla

var myInterface = new Class({ initialize: function(){ this.links = this.listenToLinks.bind(this);

this.buttons = this.listenToButtons.bind(this);this.startListening();

}, startListening: function(){ $$('a').invoke('addEvent', this.links); $$('button').invoke('addEvent', this.buttons); }, listenToLinks: function(evt){ // do something with links }, listenToButtons: function(evt){ // do something with buttons }});

MooTools LibrariesPutting It All Together

Page 9: Javascript Frameworks for Joomla

JHtml Behaviors

Form ValidationJHtml::_(‘behavior.formvalidation’);

Modal WindowsJHtml::_(‘behavior.modal’);

ToolTipsJHtml::_(‘behavior.tooltip’);

No-FramesJHtml::_(‘behavior.noframes’);

CalendarJHtml::_(‘behavior.calendar’);

UploaderJHtml::_(‘behavior.uploader’);

Loading the Built-In Javascript Libraries

Page 10: Javascript Frameworks for Joomla

Inserting Javascript $doc =& JFactory::getDocument();$doc->addScript('path/to/script');$doc->addScriptDeclaration('script as text');

// FILTER OUT MOOTOOLS JAVASCRIPT$header = $this->getHeadData();$scripts = $header['scripts'];$allow = array();foreach($scripts as $script => $type){ if(strpos($script, "/media/system/js") === FALSE){ $allow[$script] = $type; }}// RESET THE PRELOADED JAVASCRIPT LIBRARIES$header['scripts'] = $allow;$this->setHeadData($header);

Template index.php file

Page 11: Javascript Frameworks for Joomla

Google Loader APIDecrease page load times and offset network traffic by implementing the

loader API

http://code.google.com/apis/loader/signup.html

First, sign up for an API key

Implement the google loader<script type="text/javascript" src="http://www.google.com/jsapi?key=xxxx"></script><script type="text/javascript">google.load(script, version)</script>

Page 12: Javascript Frameworks for Joomla

// USE GOOGLE LOADER API TO PRELOAD COMMON JAVASCRIPT LIBRARIES$js = '{"modules":{"name":"mootools","version":"1.4.1"}}';$key = $this->params->get('google_api');if($key){ $source = "www.google.com/jsapi?autoload=".urlencode($js)."&amp;key="; $document->addScript(HTTP_PROTOCOL.$source.$key);}else{ $document->addScript("templates/yourtemplate/javascript/mootools.js"); $document->addScript("templates/inkandpaper/javascript/swfobject.js");}

Google Loader APIImplement the Google Loader in your

Template index.php file

Page 13: Javascript Frameworks for Joomla

Additional Resources

http://code.google.com/apis/loaderhttps://groups.google.com/group/joomla-dev-generalhttp://docs.joomla.org/Developershttp://mootools.net/docs/corehttp://jquery.comhttp://www.prototypejs.org

Page 14: Javascript Frameworks for Joomla

Special Thanks

Lokesh Dhakar - lightboxSam Stephenson - prototype

Thomas Fuchs - scriptaculousValerio Proietti - mootools

John Resig - jquery

The Joomla and Open Source Communities

Page 15: Javascript Frameworks for Joomla

https://www.subtextproductions.com

[email protected]