advanced javascript with ez publish

27
Advanced Javascript with

Upload: david-hohl

Post on 27-Jun-2015

848 views

Category:

Technology


4 download

DESCRIPTION

Slides from the eZ Publish Summer Camp 2013, easy way Javascript implementation. Download the eZ Publish extension for the slides here: http://www.fishme.de/downloads/ezajax.zip

TRANSCRIPT

Page 1: Advanced javascript with eZ Publish

Advanced  Javascript  with

Page 2: Advanced javascript with eZ Publish

About  me  O David Hohl from Austria O since 1998 PHP Web Developer O since 2011 in Berlin/Germany

O since 2007 eZ Publish Developer O UX Project Manager and Consulter

Page 3: Advanced javascript with eZ Publish

Jobs  O 8 years Senior Shop Developer at Reichl and

Partner emarketing in Linz/Austria eZ Partner

O 2.5 years UX Project Manager and Senior Developer at silver.solutions in Berlin/Germany

eZ Partner

Page 4: Advanced javascript with eZ Publish

Why  this  Workshop?  O to share experiences from Javascript to

eZ Publish O to work with cool JS frameworks like

Backbone and jQuery O to find better solutions for working with AJAX

Calls O to think about plugins for your projects

Page 5: Advanced javascript with eZ Publish

Install  ezajax  O  copy ezajax to

/var/www/ezpublish/ezpublish_legacy/extension

O edit settings/override/site.ini.append.php O [ExtensionSettings] O ActiveExtensions[]=ezajax O ActiveExtensions[]=ezfind O ActiveExtensions[]=ezjscore

Page 6: Advanced javascript with eZ Publish

Ways  for  Including  O  design.ini O directly about your template O Use ezscript_require from ezjscore

{ezscript_require( array( ‘yourfile.js‘‚‘nextfile.js‘ ) )}

O Do you think this is all?

Page 7: Advanced javascript with eZ Publish

My  personal  Hell  O lets open this url O http://ezpublish.ezsc/eng/_js/load/badstuff

Page 8: Advanced javascript with eZ Publish

My  personal  Heaven  O lets open this url O http://ezpublish.ezsc/eng/_js/load/

example_1

jQuery – debug our code

Page 9: Advanced javascript with eZ Publish

My  Paradise  O Backbone.js and Underscore O Head.js O jQuery

O Lets code with HTML5 Data Attributes

Page 10: Advanced javascript with eZ Publish

Performance  O How optimize JS/CSS on my eZ Page?

-  ezjscore (one BIG FILE) -  CDN (Akamai, AWS) (more files external)

-  Other solutions?

Page 11: Advanced javascript with eZ Publish

A  Fine  Way  O lets talk about head.js O include JS and CSS Files O get better browser information O build easy response design websites O use data-attributes

Page 12: Advanced javascript with eZ Publish

Head.js  O lets open this url O http://ezpublish.ezsc/eng/_js/load/

example_2

Page 13: Advanced javascript with eZ Publish

ezjscore  O  minified JS Files O  minified CSS Files O Includes CSS and JS Files in your template

Page 14: Advanced javascript with eZ Publish

Ajax  with

Page 15: Advanced javascript with eZ Publish

1 • Collect data

2 • Send to the server

3 • Collect eZ data

4 • Send data back to the client

5 • Output data in the browser

Page 16: Advanced javascript with eZ Publish

Why  do  you  use  Ajax?  O to optimize your performance? O to find ways to avoid cache problems? O A cheap way to send data to the server? O fight vs. Spam?

Page 17: Advanced javascript with eZ Publish

Structure  O  think about the structure before sending it to

the server O  POST or GET ?

O  parameter like: O Type = article (GET) O Action = update (GET) O Id = 12 (POST) O Data = array (POST)

Page 18: Advanced javascript with eZ Publish

Tipps  O  use data attributes O  or use HTML5 Database O  easy basic structure O  write your own class for sending and receiving O  try to use this class in every project – optimize

your code all the time

Page 19: Advanced javascript with eZ Publish

Send  Data  O  write a module (eZ 4) or controller (eZ 5) O  use this module for every request O  use actions to define what you want to get O  think about a dymamic model like ezajax

(it‘s only a demo)

Page 20: Advanced javascript with eZ Publish

Send  Data  „back“  O  use HTML only for short content O  always use a JSON Object O  use the same structure all the time O  Define on server side where you have to put

the data, define your target container (like an ID, class or any other selector

O  use head.js to load dynamic JS Files (depends on your action for callbacks)

Page 21: Advanced javascript with eZ Publish

Show  Data  on  the  Browser  O  Template Engine for Javascript? O  try backbone.js with underscore.js O  render template about JSON

O  What do you use?

Page 22: Advanced javascript with eZ Publish

Ajax  Events  O lets open this url O http://ezpublish.ezsc/eng/_js/load/

example_3

Page 23: Advanced javascript with eZ Publish

Extend  your  old  Code  O  Write simple JS Classes in your project O  Extend your code! It‘s very easy with jQuery or

Backbone var yourClass { add : function() {

// add item };

$.extend(yourClass, otherClass); // jQuery _.extend(yourClass, otherClass); // Backbone

Page 24: Advanced javascript with eZ Publish

Parsley,  Backbone  and  jQuery  

with

Page 25: Advanced javascript with eZ Publish

Let‘s  try  O  include the files with head.js

plugin/ezajax_controller.js parsley.js plugin/example_4.js

O  set full name and email as required with data-required=„true“

O  create a file ezajax/design/standard/templates/examples/YOURFILE.tpl AND clear the cache

O  add on the submit button data-ajax-tpl=“YOURFILE“ (without .tpl)

O  go into the file ezajax/design/standard/javascript/plugin/example_4.js and code the ajax call

Page 26: Advanced javascript with eZ Publish

Cheat  INCLUDE FILES <br class="ez_summer_camp hide" data-files="plugin/ezajax_controller.js;parsley.js;plugin/example_4.js"> AJAX CALL: self.ajax_template = $(this).attr('data-ajax-tpl'); self.ajax(0, {'form':$('#demo-form').serializeArray()}, function(response) {

response = $.parseJSON(response); $('body').append(response.data); }); OUTPUT AJAX TEMPLATE: <div class="alert alert-success"> <h4>Hello {$params.form.0.value}</h4> <p>We will send you now an eMail to <strong style="color:#000;">{$params.form.1.value}</strong></p> </div>

Page 27: Advanced javascript with eZ Publish

Thank  you!  @fishme_2010 www.fishme.de

www.silversolutions.de