| 73 | |
| 74 | == Javascript == |
| 75 | * W3Schools' basic JS: http://www.w3schools.com/js/ |
| 76 | |
| 77 | * jQuery is used for client-side business logic (hiding fields, opening up tabs, etc): |
| 78 | * Tutorial 1: http://docs.jquery.com/Tutorials:How_jQuery_Works |
| 79 | * Tutorial 2: http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery |
| 80 | * Main reference: http://docs.jquery.com |
| 81 | * We use some plugins: http://plugins.jquery.com |
| 82 | * & some Widgets: http://jqueryui.com |
| 83 | |
| 84 | * ExtJS is used for some advanced widgets: |
| 85 | * http://www.sencha.com |
| 86 | * http://dev.sencha.com/deploy/ext-4.0.0/examples/ |
| 87 | * API: http://www.extjs.com/deploy/dev/docs/ |
| 88 | |
| 89 | * S3 includes a cross-browser debug utility (only shows up when ?debug=1): |
| 90 | {{{ |
| 91 | s3_debug('message', value); |
| 92 | }}} |
| 93 | |
| 94 | All global variables should be in the S3 namespace: |
| 95 | * http://yuiblog.com/blog/2006/06/01/global-domination/ |
| 96 | |
| 97 | Private variables should be protected, e.g. using the Module Pattern: |
| 98 | * http://yuiblog.com/blog/2007/06/12/module-pattern/ |
| 99 | * http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth |
| 100 | |
| 101 | Can test out the performance of different options to achieve a task using: |
| 102 | * http://jsperf.com |
| 103 | |
| 104 | Can check quality using JSLint: |
| 105 | * http://www.javascriptlint.com/online_lint.php |