| | 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 |