| 44 | | |
| 45 | | === Javascript === |
| 46 | | * W3Schools' basic JS: http://www.w3schools.com/js/ |
| 47 | | |
| 48 | | * jQuery is used for client-side business logic (hiding fields, opening up tabs, etc): |
| 49 | | * Tutorial 1: http://docs.jquery.com/Tutorials:How_jQuery_Works |
| 50 | | * Tutorial 2: http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery |
| 51 | | * Main reference: http://docs.jquery.com |
| 52 | | * We use some plugins: http://plugins.jquery.com |
| 53 | | * & some Widgets: http://jqueryui.com |
| 54 | | |
| 55 | | * ExtJS is used for some advanced widgets: |
| 56 | | * http://www.sencha.com |
| 57 | | * http://dev.sencha.com/deploy/ext-4.0.0/examples/ |
| 58 | | * API: http://www.extjs.com/deploy/dev/docs/ |
| 59 | | |
| 60 | | * S3 includes a cross-browser debug utility (only shows up when ?debug=1): |
| 61 | | {{{ |
| 62 | | s3_debug('message', value); |
| 63 | | }}} |
| 64 | | |
| 65 | | All global variables should be in the S3 namespace: |
| 66 | | * http://yuiblog.com/blog/2006/06/01/global-domination/ |
| 67 | | |
| 68 | | Private variables should be protected, e.g. using the Module Pattern: |
| 69 | | * http://yuiblog.com/blog/2007/06/12/module-pattern/ |
| 70 | | * http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth |
| 71 | | |
| 72 | | Can test out the performance of different options to achieve a task using: |
| 73 | | * http://jsperf.com |
| 74 | | |
| 75 | | Can check quality using JSLint: |
| 76 | | * http://www.javascriptlint.com/online_lint.php |