sproutit-sproutcore 1.0.0.20090407205609 → 1.0.0.20090408130025
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/frameworks/sproutcore/Buildfile +63 -0
- data/frameworks/sproutcore/HISTORY +682 -0
- data/frameworks/sproutcore/README +22 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +149 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/core.js +16 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +17 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +99 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/main.js +27 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +21 -0
- data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +209 -0
- data/frameworks/sproutcore/apps/sc_qunit/core.js +16 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +17 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +107 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/sc_qunit/main.js +18 -0
- data/frameworks/sproutcore/apps/sc_qunit/models/test.js +24 -0
- data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +52 -0
- data/frameworks/sproutcore/apps/tests/controllers/targets.js +47 -0
- data/frameworks/sproutcore/apps/tests/controllers/test.js +20 -0
- data/frameworks/sproutcore/apps/tests/controllers/tests.js +38 -0
- data/frameworks/sproutcore/apps/tests/core.js +35 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/loading.rhtml +9 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +19 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +86 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +17 -0
- data/frameworks/sproutcore/apps/tests/fixtures/target.js +43 -0
- data/frameworks/sproutcore/apps/tests/fixtures/test.js +43 -0
- data/frameworks/sproutcore/apps/tests/main.js +39 -0
- data/frameworks/sproutcore/apps/tests/models/target.js +49 -0
- data/frameworks/sproutcore/apps/tests/models/test.js +20 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/test.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/models/target.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/models/test.js +15 -0
- data/frameworks/sproutcore/apps/welcome/core.js +23 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/loading.rhtml +8 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +43 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/welcome/main.js +36 -0
- data/frameworks/sproutcore/design/Design Charts.graffle +15819 -0
- data/frameworks/sproutcore/design/Record State Table.numbers +0 -0
- data/frameworks/sproutcore/frameworks/datastore/core.js +14 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +113 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +256 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +196 -0
- data/frameworks/sproutcore/frameworks/datastore/debug/json.js +71 -0
- data/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +96 -0
- data/frameworks/sproutcore/frameworks/datastore/fixtures/author_fixtures.js +2503 -0
- data/frameworks/sproutcore/frameworks/datastore/fixtures/sample.js +17 -0
- data/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +92 -0
- data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +38 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record.js +430 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +361 -0
- data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +305 -0
- data/frameworks/sproutcore/frameworks/datastore/system/query.js +128 -0
- data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +149 -0
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +1689 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +86 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +114 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +91 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +56 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +73 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +48 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +42 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +138 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +46 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +71 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +115 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +40 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +116 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +135 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +110 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +99 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +180 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +163 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +166 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +175 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +54 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +127 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +57 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +78 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +247 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +106 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +21 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +61 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +144 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +137 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +130 -0
- data/frameworks/sproutcore/frameworks/debug/core.js +1 -0
- data/frameworks/sproutcore/frameworks/deprecated/core.js +61 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/button_views.rb +330 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/collection_view.rb +83 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/core_views.rb +326 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/form_views.rb +253 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/index.rhtml +75 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/menu_views.rb +93 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/rails_server.js +80 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/rest_server.js +178 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/server.js +674 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/animator.js +679 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/binding.js +36 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +77 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +314 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/event.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/globals.js +20 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/node_descriptor.js +72 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/object.js +124 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +433 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/string.js +109 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/application/application.rhtml +125 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/clippingFrame.rhtml +401 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/frame.rhtml +357 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/isVisibleInWindow.rhtml +147 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/base.rhtml +298 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/incremental_rendering.rhtml +260 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/source_list_rendering.rhtml +143 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/popup_button.rhtml +128 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/text_field.rhtml +37 -0
- data/frameworks/sproutcore/frameworks/deprecated/views/collection.js +24 -0
- data/frameworks/sproutcore/frameworks/designer/coders/design.js +30 -0
- data/frameworks/sproutcore/frameworks/designer/coders/localization.js +28 -0
- data/frameworks/sproutcore/frameworks/designer/coders/object.js +347 -0
- data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +102 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_rule.js +22 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_style.js +29 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +201 -0
- data/frameworks/sproutcore/frameworks/designer/ext/page.js +88 -0
- data/frameworks/sproutcore/frameworks/designer/ext/view.js +40 -0
- data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +18 -0
- data/frameworks/sproutcore/frameworks/designer/views/designer.js +553 -0
- data/frameworks/sproutcore/frameworks/designer/views/label.js +17 -0
- data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +13 -0
- data/frameworks/sproutcore/frameworks/designer/views/tab.js +17 -0
- data/frameworks/sproutcore/frameworks/desktop/core.js +6 -0
- data/frameworks/sproutcore/frameworks/desktop/debug/drag.js +41 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +56 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/a_sample_image.jpg +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/apple-logo1.jpeg +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/iframe.html +23 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +71 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +943 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_222222.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_454545.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_888888.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_ffffff.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/indicator.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-x.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-y.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/000000.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/ffffff.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sticky-note.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +156 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +83 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +99 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +3 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +94 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +39 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +31 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +10 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/scroller.css +26 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +141 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +19 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +57 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split.css +70 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +8 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +14 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +12 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/text_field.css +29 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/toolbar.css +6 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/border.js +53 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +22 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_item.js +22 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +226 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +247 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +377 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +504 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/modal.js +68 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +63 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +184 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +402 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +46 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +39 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +81 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +175 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +280 -0
- data/frameworks/sproutcore/frameworks/desktop/system/drag.js +721 -0
- data/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +40 -0
- data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +641 -0
- data/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +187 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +43 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +152 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +57 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +36 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +40 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +80 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +38 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +45 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +140 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +145 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +99 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +39 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +64 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +110 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +255 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +44 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +128 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +240 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +113 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +202 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +139 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +111 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +63 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/ui.js +70 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +94 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +206 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +81 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +85 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +37 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +50 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +52 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +54 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +88 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/methods.js +76 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/ui.js +198 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +110 -0
- data/frameworks/sproutcore/frameworks/desktop/views/button.js +320 -0
- data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +98 -0
- data/frameworks/sproutcore/frameworks/desktop/views/collection.js +2141 -0
- data/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +44 -0
- data/frameworks/sproutcore/frameworks/desktop/views/form.js +595 -0
- data/frameworks/sproutcore/frameworks/desktop/views/grid.js +199 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list.js +706 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +523 -0
- data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +437 -0
- data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +62 -0
- data/frameworks/sproutcore/frameworks/desktop/views/progress.js +207 -0
- data/frameworks/sproutcore/frameworks/desktop/views/radio.js +332 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scene.js +56 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +648 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +203 -0
- data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +509 -0
- data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +292 -0
- data/frameworks/sproutcore/frameworks/desktop/views/separator.js +37 -0
- data/frameworks/sproutcore/frameworks/desktop/views/slider.js +178 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +1117 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +169 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split.js +651 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +55 -0
- data/frameworks/sproutcore/frameworks/desktop/views/tab.js +190 -0
- data/frameworks/sproutcore/frameworks/desktop/views/text_field.js +233 -0
- data/frameworks/sproutcore/frameworks/desktop/views/thumb.js +49 -0
- data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +49 -0
- data/frameworks/sproutcore/frameworks/desktop/views/web.js +86 -0
- data/frameworks/sproutcore/frameworks/foundation/TESTING +46 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +490 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +317 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +421 -0
- data/frameworks/sproutcore/frameworks/foundation/core.js +111 -0
- data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +172 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +53 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +55 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +5 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +8 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/static_layout.css +5 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +40 -0
- data/frameworks/sproutcore/frameworks/foundation/ext/object.js +81 -0
- data/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/fixtures/file_exists.json +1 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +291 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +88 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +352 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +146 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +156 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +154 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +101 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +237 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +176 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/main.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +555 -0
- data/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +84 -0
- data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +244 -0
- data/frameworks/sproutcore/frameworks/foundation/system/browser.js +64 -0
- data/frameworks/sproutcore/frameworks/foundation/system/builder.js +210 -0
- data/frameworks/sproutcore/frameworks/foundation/system/core_query.js +2015 -0
- data/frameworks/sproutcore/frameworks/foundation/system/cursor.js +129 -0
- data/frameworks/sproutcore/frameworks/foundation/system/error.js +93 -0
- data/frameworks/sproutcore/frameworks/foundation/system/event.js +817 -0
- data/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +433 -0
- data/frameworks/sproutcore/frameworks/foundation/system/json.js +440 -0
- data/frameworks/sproutcore/frameworks/foundation/system/locale.js +288 -0
- data/frameworks/sproutcore/frameworks/foundation/system/page.js +106 -0
- data/frameworks/sproutcore/frameworks/foundation/system/ready.js +189 -0
- data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +865 -0
- data/frameworks/sproutcore/frameworks/foundation/system/request.js +255 -0
- data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +368 -0
- data/frameworks/sproutcore/frameworks/foundation/system/routes.js +446 -0
- data/frameworks/sproutcore/frameworks/foundation/system/time.js +478 -0
- data/frameworks/sproutcore/frameworks/foundation/system/timer.js +549 -0
- data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/system/utils.js +330 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +118 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +268 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +433 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +113 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +113 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js +195 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js +168 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +42 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +1323 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +387 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +405 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +49 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/within.js +66 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/error.js +41 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/json.js +14 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +128 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/begin.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/element.js +44 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +119 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +51 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +50 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +28 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +179 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +100 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/init.js +55 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/join.js +28 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/push_text.js +74 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +45 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +205 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeKeyPane.js +124 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMainPane.js +68 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +97 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +238 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +33 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invalidate.js +38 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +201 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +71 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +67 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +170 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +27 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/normalizeURL.js +18 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +62 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +35 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +21 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +13 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +83 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +39 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/main_pane.js +31 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/firstResponder.js +148 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/keyPane.js +133 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +165 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +132 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +246 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +87 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +97 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +85 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +52 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/init.js +50 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +200 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +102 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layer.js +150 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutChildViews.js +162 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutDidChange.js +127 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +248 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/parentViewDidChange.js +67 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +166 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/removeChild.js +189 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +83 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/replaceChild.js +29 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +142 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +194 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +185 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +125 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/date.js +52 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/email.js +45 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +33 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/number.js +82 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/password.js +86 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/validator.js +311 -0
- data/frameworks/sproutcore/frameworks/foundation/views/container.js +136 -0
- data/frameworks/sproutcore/frameworks/foundation/views/field.js +276 -0
- data/frameworks/sproutcore/frameworks/foundation/views/image.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/views/label.js +261 -0
- data/frameworks/sproutcore/frameworks/foundation/views/view.js +2160 -0
- data/frameworks/sproutcore/frameworks/mobile/english.lproj/core.css +12 -0
- data/frameworks/sproutcore/frameworks/mobile/lib/index.rhtml +126 -0
- data/frameworks/sproutcore/frameworks/mobile/system/root_responder.js +109 -0
- data/frameworks/sproutcore/frameworks/mobile/tests/views/button/ui.js +9 -0
- data/frameworks/sproutcore/frameworks/mobile/views/button.js +190 -0
- data/frameworks/sproutcore/frameworks/runtime/README +11 -0
- data/frameworks/sproutcore/frameworks/runtime/core.js +777 -0
- data/frameworks/sproutcore/frameworks/runtime/license.js +28 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +403 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +70 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1193 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1149 -0
- data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +135 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +108 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +128 -0
- data/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +131 -0
- data/frameworks/sproutcore/frameworks/runtime/system/binding.js +891 -0
- data/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +107 -0
- data/frameworks/sproutcore/frameworks/runtime/system/object.js +783 -0
- data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +99 -0
- data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +214 -0
- data/frameworks/sproutcore/frameworks/runtime/system/set.js +246 -0
- data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +286 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +56 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +23 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +66 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +147 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/inspect.js +27 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +25 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +20 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +30 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +19 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +37 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +592 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +467 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +123 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +79 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +80 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +263 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +190 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +135 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +339 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +120 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +313 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +84 -0
- data/frameworks/sproutcore/frameworks/testing/core.js +13 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/additions.css +8 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/testsuite.css +131 -0
- data/frameworks/sproutcore/frameworks/testing/extras.js +43 -0
- data/frameworks/sproutcore/frameworks/testing/jquery.js +3559 -0
- data/frameworks/sproutcore/frameworks/testing/qunit.js +819 -0
- data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +25 -0
- data/frameworks/sproutcore/frameworks/testing/utils.js +55 -0
- data/frameworks/sproutcore/lib/index.rhtml +118 -0
- data/frameworks/sproutcore/license.js +28 -0
- data/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +69 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/button.css +41 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +8 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/backButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/blueButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/cancel.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/grayButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/leftButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrow.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrowSel.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listGroup.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/loading.gif +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/pinstripes.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/rightButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/selection.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/thumb.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggle.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggleOn.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolbar.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/whiteButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +333 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +90 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +53 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +47 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/disclosure.css +55 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-ysprite.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-toolbar-view.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +37 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/pane.css +8 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-fat.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-thin.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-left-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-right-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/left-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/overlay.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/right-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-left-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-right-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +23 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +113 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +141 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +62 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/split_view.css +27 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +12 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +13 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -0
- data/lib/thor/.autotest +7 -0
- data/lib/thor/CHANGELOG.rdoc +52 -0
- data/lib/thor/LICENSE +20 -0
- data/lib/thor/README.markdown +76 -0
- data/lib/thor/Rakefile +6 -0
- data/lib/thor/Thorfile +45 -0
- data/lib/thor/bin/rake2thor +83 -0
- data/lib/thor/bin/thor +7 -0
- data/lib/thor/lib/thor/error.rb +3 -0
- data/lib/thor/lib/thor/options.rb +267 -0
- data/lib/thor/lib/thor/ordered_hash.rb +64 -0
- data/lib/thor/lib/thor/runner.rb +305 -0
- data/lib/thor/lib/thor/task.rb +83 -0
- data/lib/thor/lib/thor/task_hash.rb +22 -0
- data/lib/thor/lib/thor/tasks/package.rb +18 -0
- data/lib/thor/lib/thor/tasks.rb +77 -0
- data/lib/thor/lib/thor/util.rb +75 -0
- data/lib/thor/lib/thor.rb +170 -0
- data/lib/thor/script/destroy +14 -0
- data/lib/thor/script/generate +14 -0
- data/lib/thor/spec/fixtures/task.thor +10 -0
- data/lib/thor/spec/options_spec.rb +271 -0
- data/lib/thor/spec/ordered_hash_spec.rb +84 -0
- data/lib/thor/spec/spec.opts +1 -0
- data/lib/thor/spec/spec_helper.rb +30 -0
- data/lib/thor/spec/task_spec.rb +11 -0
- data/lib/thor/spec/tasks_spec.rb +28 -0
- data/lib/thor/spec/thor_runner_spec.rb +194 -0
- data/lib/thor/spec/thor_spec.rb +206 -0
- data/lib/thor/spec/util_spec.rb +99 -0
- data/lib/thor/task.thor +15 -0
- data/lib/thor/thor.gemspec +29 -0
- metadata +3 -4
- data/sproutcore.gemspec +0 -47
@@ -0,0 +1,194 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: �2006-2009 Apple, Inc. and contributors.
|
4
|
+
// License: Licened under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
|
7
|
+
/*global module test equals context ok same */
|
8
|
+
|
9
|
+
// .......................................................
|
10
|
+
// updateLayerLocation()
|
11
|
+
//
|
12
|
+
var parent, child, parentLayer, childLayer;
|
13
|
+
module("SC.View#updateLayerLocation", {
|
14
|
+
setup: function() {
|
15
|
+
parent = SC.View.create({
|
16
|
+
childViews: [SC.View]
|
17
|
+
});
|
18
|
+
child = parent.childViews[0];
|
19
|
+
|
20
|
+
parent.createLayer();
|
21
|
+
parentLayer = parent.get('layer');
|
22
|
+
childLayer = child.get('layer');
|
23
|
+
},
|
24
|
+
|
25
|
+
teardown: function() {
|
26
|
+
parent = child = parentLayer = childLayer = null;
|
27
|
+
}
|
28
|
+
});
|
29
|
+
|
30
|
+
test("returns receiver", function() {
|
31
|
+
var view = SC.View.create();
|
32
|
+
equals(view.updateLayerLocation(), view, 'returns receiver');
|
33
|
+
});
|
34
|
+
|
35
|
+
|
36
|
+
// helper method for testing if a parent still contains a child node
|
37
|
+
function parentHasChild(parent, child) {
|
38
|
+
var cur = parent.firstChild;
|
39
|
+
while(cur) {
|
40
|
+
if (cur === child) return YES;
|
41
|
+
cur = cur.nextSibling ;
|
42
|
+
}
|
43
|
+
return NO ;
|
44
|
+
}
|
45
|
+
|
46
|
+
test("CASE 1: remove child from parent - remove child layer from parent layer", function() {
|
47
|
+
|
48
|
+
equals(childLayer.parentNode, parentLayer, 'child layer currently belongs to parent');
|
49
|
+
|
50
|
+
child.removeFromParent();
|
51
|
+
child.updateLayerLocation();
|
52
|
+
ok(!parentHasChild(parentLayer, childLayer), 'child layer no longer belongs to parent node') ;
|
53
|
+
});
|
54
|
+
|
55
|
+
test("CASE 2: add child to new parent view with no layer if its own, destroy the layer...", function() {
|
56
|
+
|
57
|
+
var newParent = SC.View.create();
|
58
|
+
ok(!newParent.get('layer'), 'precond - new parent has no layer');
|
59
|
+
newParent.appendChild(child);
|
60
|
+
|
61
|
+
child.updateLayerLocation() ;
|
62
|
+
ok(!parentHasChild(parentLayer, childLayer), 'child layer was removed from parent layer');
|
63
|
+
ok(!child.get('layer'), 'child no longer has layer either');
|
64
|
+
});
|
65
|
+
|
66
|
+
test("CASE 3: add child with no layer or parent with no layer. nothing to do. this test ensures no errors are thrown", function() {
|
67
|
+
|
68
|
+
// create a few new views w/ no layers...
|
69
|
+
var newParent = SC.View.create();
|
70
|
+
var newChild = SC.View.create();
|
71
|
+
ok(!newParent.get('layer'), 'precond - new parent has no layer');
|
72
|
+
ok(!newChild.get('layer'), 'precond - new child has no layer');
|
73
|
+
newParent.appendChild(newChild);
|
74
|
+
|
75
|
+
ok(!newParent.get('layer'), 'new parent still has no layer');
|
76
|
+
ok(!newChild.get('layer'), 'new child still has no layer');
|
77
|
+
});
|
78
|
+
|
79
|
+
test("CASE 4: add child with no layer to parent with layer. create layer for child", function() {
|
80
|
+
|
81
|
+
var newChild = SC.View.create();
|
82
|
+
ok(!newChild.get('layer'), 'precond - new child has no layer');
|
83
|
+
|
84
|
+
parent.appendChild(newChild);
|
85
|
+
newChild.updateLayerLocation();
|
86
|
+
|
87
|
+
var layer = newChild.get('layer');
|
88
|
+
ok(layer, 'newChild now has layer');
|
89
|
+
equals(layer.parentNode, parentLayer, 'newChild layer belongs to parent layer');
|
90
|
+
});
|
91
|
+
|
92
|
+
test("CASE 5: add child with layer to parent with layer. move layer from previous location to new parent", function() {
|
93
|
+
|
94
|
+
var newParent = SC.View.create();
|
95
|
+
var layer = newParent.createLayer().get('layer');
|
96
|
+
ok(layer, 'precond - newParent has layer');
|
97
|
+
|
98
|
+
newParent.appendChild(child);
|
99
|
+
child.updateLayerLocation();
|
100
|
+
|
101
|
+
ok(!parentHasChild(parentLayer, childLayer), 'old parent layer no longer has child layer');
|
102
|
+
ok(parentHasChild(layer, childLayer), 'newParent layer now has child');
|
103
|
+
});
|
104
|
+
|
105
|
+
test("CASE 5a: insert child before a sibling w/ layer - should insert child layer before sibling layer", function() {
|
106
|
+
|
107
|
+
var newParent = SC.View.create({
|
108
|
+
childViews: [SC.View]
|
109
|
+
}).createLayer();
|
110
|
+
var newParentLayer = newParent.get('layer');
|
111
|
+
|
112
|
+
var sibling = newParent.childViews[0];
|
113
|
+
var siblingLayer = sibling.get('layer');
|
114
|
+
|
115
|
+
ok(newParentLayer, 'precond - newParent has layer');
|
116
|
+
ok(siblingLayer, 'precond - sibling has layer');
|
117
|
+
ok(parentHasChild(newParentLayer, siblingLayer), 'precond - siblingLayer belongs to new parent layer') ;
|
118
|
+
|
119
|
+
newParent.insertBefore(child, sibling);
|
120
|
+
child.updateLayerLocation();
|
121
|
+
|
122
|
+
equals(childLayer.nextSibling, siblingLayer, 'child layer inserted before sibling layer');
|
123
|
+
ok(parentHasChild(newParentLayer, childLayer), 'newParentLayer does not have childLayer');
|
124
|
+
});
|
125
|
+
|
126
|
+
|
127
|
+
test("CASE 5b: insert child w/ layer before a sibling w/ NO layer - should create and insert sibling & child's layers", function() {
|
128
|
+
|
129
|
+
var newParent = SC.View.create().createLayer();
|
130
|
+
var newParentLayer = newParent.get('layer');
|
131
|
+
|
132
|
+
var sibling = SC.View.create();
|
133
|
+
|
134
|
+
ok(newParentLayer, 'precond - newParent has layer');
|
135
|
+
ok(!sibling.get('layer'), 'precond - sibling should have NO layer');
|
136
|
+
|
137
|
+
// add layer-less sibling to parent before child..
|
138
|
+
newParent.appendChild(sibling);
|
139
|
+
newParent.insertBefore(child, sibling);
|
140
|
+
|
141
|
+
ok(sibling.get('layerLocationNeedsUpdate'), 'sibling.layerLocationNeedsUpdate should be YES');
|
142
|
+
|
143
|
+
child.updateLayerLocation();
|
144
|
+
|
145
|
+
var siblingLayer = sibling.get('layer');
|
146
|
+
ok(siblingLayer, 'sibling should have layer now');
|
147
|
+
ok(parentHasChild(newParentLayer, siblingLayer), 'sibling layer should belong to newParent layer');
|
148
|
+
|
149
|
+
equals(childLayer.nextSibling, siblingLayer, 'child layer should be inserted before sibling layer');
|
150
|
+
ok(parentHasChild(newParentLayer, childLayer), 'newParentLayer should have childLayer');
|
151
|
+
});
|
152
|
+
|
153
|
+
// .......................................................
|
154
|
+
// updateLayerLocationIfNeeded()
|
155
|
+
//
|
156
|
+
var view, runCount ;
|
157
|
+
module("SC.View#updateLayerLocationIfNeeded",{
|
158
|
+
setup: function() {
|
159
|
+
view = SC.View.create({
|
160
|
+
updateLayerLocation: function() { runCount++; }
|
161
|
+
})
|
162
|
+
runCount = 0;
|
163
|
+
},
|
164
|
+
|
165
|
+
teardown: function() { view = null; }
|
166
|
+
});
|
167
|
+
|
168
|
+
test("returns receiver", function() {
|
169
|
+
equals(view.updateLayerLocationIfNeeded(), view, 'returns receiver');
|
170
|
+
});
|
171
|
+
|
172
|
+
test("invokes updateLayerLocation if layerLocationNeedsUpdate is YES", function() {
|
173
|
+
|
174
|
+
view.set('layerLocationNeedsUpdate', YES);
|
175
|
+
view.updateLayerLocationIfNeeded();
|
176
|
+
equals(runCount, 1, 'did invoke');
|
177
|
+
});
|
178
|
+
|
179
|
+
test("does NOT invoke updateLayerLocation if layerLocationNeedsUpdate is NO", function() {
|
180
|
+
|
181
|
+
view.set('layerLocationNeedsUpdate', NO);
|
182
|
+
view.updateLayerLocationIfNeeded();
|
183
|
+
equals(runCount, 0, 'did NOT invoke');
|
184
|
+
});
|
185
|
+
|
186
|
+
test("sets layerLocationNeedsUpdate to NO when run", function() {
|
187
|
+
|
188
|
+
view.set('layerLocationNeedsUpdate', YES);
|
189
|
+
view.updateLayerLocationIfNeeded();
|
190
|
+
equals(view.get('layerLocationNeedsUpdate'), NO, 'did reset');
|
191
|
+
});
|
192
|
+
|
193
|
+
|
194
|
+
|
@@ -0,0 +1,185 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Apple, Inc. and contributors.
|
4
|
+
// License: Licened under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
|
7
|
+
/*global module test equals context ok same Q$ htmlbody */
|
8
|
+
|
9
|
+
// ..........................................................
|
10
|
+
// viewDidResize()
|
11
|
+
//
|
12
|
+
module("SC.View#viewDidResize");
|
13
|
+
|
14
|
+
test("invokes parentViewDidResize on all child views - ignoring views that do not implement method", function() {
|
15
|
+
var callCount = 0 ;
|
16
|
+
var ChildView = SC.View.extend({
|
17
|
+
parentViewDidResize: function() { callCount++; }
|
18
|
+
});
|
19
|
+
|
20
|
+
var view = SC.View.create({
|
21
|
+
childViews: [ChildView, ChildView, ChildView]
|
22
|
+
});
|
23
|
+
|
24
|
+
// one of the childViews should NOT implement method
|
25
|
+
view.childViews[2].parentViewDidResize = null ;
|
26
|
+
|
27
|
+
// now test...
|
28
|
+
view.viewDidResize();
|
29
|
+
equals(callCount, 2, 'should invoke parentViewDidResize() on two methods that support it');
|
30
|
+
});
|
31
|
+
|
32
|
+
test("triggers whenever layout property is changed", function() {
|
33
|
+
var callCount = 0 ;
|
34
|
+
var view = SC.View.create({
|
35
|
+
// use the callback below to detect when viewDidResize is icalled.
|
36
|
+
childViews: [SC.View.extend({
|
37
|
+
parentViewDidResize: function() { callCount++; }
|
38
|
+
})]
|
39
|
+
});
|
40
|
+
|
41
|
+
view.set('layout', { top: 10, left: 20, height: 50, width: 40 });
|
42
|
+
equals(callCount, 1, 'viewDidResize should invoke once');
|
43
|
+
});
|
44
|
+
|
45
|
+
// ..........................................................
|
46
|
+
// parentViewDidResize()
|
47
|
+
//
|
48
|
+
module("SC.View#parentViewDidResize");
|
49
|
+
|
50
|
+
// view.callCount must increments whenever something interesting happens
|
51
|
+
function testParentViewDidResizeWithAlignments(view) {
|
52
|
+
// try with fixed layout
|
53
|
+
view.set('layout', { top: 10, left: 10, height: 10, width: 10 });
|
54
|
+
view.callCount = 0 ;
|
55
|
+
view.parentViewDidResize();
|
56
|
+
equals(view.callCount, 0, 'should not notify frame changed');
|
57
|
+
|
58
|
+
// try with flexible height
|
59
|
+
view.set('layout', { top: 10, left: 10, bottom: 10, width: 10 });
|
60
|
+
view.callCount = 0 ;
|
61
|
+
view.parentViewDidResize();
|
62
|
+
equals(view.callCount, 1, 'should notify frame changed');
|
63
|
+
|
64
|
+
// try with flexible width
|
65
|
+
view.set('layout', { top: 10, left: 10, height: 10, right: 10 });
|
66
|
+
view.callCount = 0 ;
|
67
|
+
view.parentViewDidResize();
|
68
|
+
equals(view.callCount, 1, 'should notify frame changed');
|
69
|
+
|
70
|
+
// try with right align
|
71
|
+
view.set('layout', { top: 10, right: 10, height: 10, width: 10 });
|
72
|
+
view.callCount = 0 ;
|
73
|
+
view.parentViewDidResize();
|
74
|
+
equals(view.callCount, 1, 'should notify frame changed');
|
75
|
+
|
76
|
+
// try with bottom align
|
77
|
+
view.set('layout', { top: 10, bottom: 10, height: 10, width: 10 });
|
78
|
+
view.callCount = 0 ;
|
79
|
+
view.parentViewDidResize();
|
80
|
+
equals(view.callCount, 1, 'should notify frame changed');
|
81
|
+
|
82
|
+
// try with center horizontal align
|
83
|
+
view.set('layout', { centerX: 10, top: 10, height: 10, width: 10 });
|
84
|
+
view.callCount = 0 ;
|
85
|
+
view.parentViewDidResize();
|
86
|
+
equals(view.callCount, 1, 'should notify frame changed');
|
87
|
+
|
88
|
+
// try with center vertical align
|
89
|
+
view.set('layout', { left: 10, centerY: 10, height: 10, width: 10 });
|
90
|
+
view.callCount = 0 ;
|
91
|
+
view.parentViewDidResize();
|
92
|
+
equals(view.callCount, 1, 'should notify frame changed');
|
93
|
+
}
|
94
|
+
|
95
|
+
test("notifies 'frame' property change unless layout is fixed", function() {
|
96
|
+
var view = SC.View.create({
|
97
|
+
// instrument...
|
98
|
+
callCount: 0 ,
|
99
|
+
frameDidChange: function() {
|
100
|
+
this.callCount++;
|
101
|
+
}.observes('frame')
|
102
|
+
});
|
103
|
+
testParentViewDidResizeWithAlignments(view);
|
104
|
+
});
|
105
|
+
|
106
|
+
test("calls viewDidResize on self unless layout is fixed", function() {
|
107
|
+
var view = SC.View.create({
|
108
|
+
// instrument...
|
109
|
+
callCount: 0 ,
|
110
|
+
viewDidResize: function() { this.callCount++; }
|
111
|
+
});
|
112
|
+
testParentViewDidResizeWithAlignments(view);
|
113
|
+
});
|
114
|
+
|
115
|
+
test("invoked whenever view is added to a new parentView but not when it is removed", function() {
|
116
|
+
var callCount = 0;
|
117
|
+
var view = SC.View.create({
|
118
|
+
parentViewDidResize: function() { callCount++; }
|
119
|
+
});
|
120
|
+
var parent = SC.Pane.create().append(); // must be visible in window...
|
121
|
+
|
122
|
+
callCount = 0 ;
|
123
|
+
parent.appendChild(view);
|
124
|
+
equals(callCount, 1, 'should call parentViewDidResize');
|
125
|
+
|
126
|
+
callCount = 0;
|
127
|
+
parent.removeChild(view);
|
128
|
+
equals(callCount, 0, 'should not call parentViewDidResize()');
|
129
|
+
|
130
|
+
parent.remove();
|
131
|
+
});
|
132
|
+
|
133
|
+
// ..........................................................
|
134
|
+
// beginLiveResize()
|
135
|
+
//
|
136
|
+
module("SC.View#beginLiveResize");
|
137
|
+
|
138
|
+
test("invokes willBeginLiveResize on receiver and any child views that implement it", function() {
|
139
|
+
var callCount = 0;
|
140
|
+
var ChildView = SC.View.extend({
|
141
|
+
willBeginLiveResize: function() { callCount++ ;}
|
142
|
+
});
|
143
|
+
|
144
|
+
var view = ChildView.create({ // <-- has callback
|
145
|
+
childViews: [SC.View.extend({ // <-- this does not implement callback
|
146
|
+
childViews: [ChildView] // <-- has callback
|
147
|
+
})]
|
148
|
+
});
|
149
|
+
|
150
|
+
callCount = 0 ;
|
151
|
+
view.beginLiveResize();
|
152
|
+
equals(callCount, 2, 'should invoke willBeginLiveResize when implemented');
|
153
|
+
});
|
154
|
+
|
155
|
+
test("returns receiver", function() {
|
156
|
+
var view = SC.View.create();
|
157
|
+
equals(view.beginLiveResize(), view, 'returns receiver');
|
158
|
+
});
|
159
|
+
|
160
|
+
// ..........................................................
|
161
|
+
// endLiveResize()
|
162
|
+
//
|
163
|
+
module("SC.View#endLiveResize");
|
164
|
+
|
165
|
+
test("invokes didEndLiveResize on receiver and any child views that implement it", function() {
|
166
|
+
var callCount = 0;
|
167
|
+
var ChildView = SC.View.extend({
|
168
|
+
didEndLiveResize: function() { callCount++; }
|
169
|
+
});
|
170
|
+
|
171
|
+
var view = ChildView.create({ // <-- has callback
|
172
|
+
childViews: [SC.View.extend({ // <-- this does not implement callback
|
173
|
+
childViews: [ChildView] // <-- has callback
|
174
|
+
})]
|
175
|
+
});
|
176
|
+
|
177
|
+
callCount = 0 ;
|
178
|
+
view.endLiveResize();
|
179
|
+
equals(callCount, 2, 'should invoke didEndLiveResize when implemented');
|
180
|
+
});
|
181
|
+
|
182
|
+
test("returns receiver", function() {
|
183
|
+
var view = SC.View.create();
|
184
|
+
equals(view.endLiveResize(), view, 'returns receiver');
|
185
|
+
});
|
@@ -0,0 +1,125 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('validators/validator') ;
|
9
|
+
|
10
|
+
/** @class
|
11
|
+
Validate a field value as a credit card number.
|
12
|
+
|
13
|
+
This validator will perform a basic check to ensure the credit card number
|
14
|
+
is mathematically valid. It will also accept numbers with spaces, dashes
|
15
|
+
or other punctuation.
|
16
|
+
|
17
|
+
Converted credit card numbers are broken into units of 4.
|
18
|
+
|
19
|
+
Basic credit card validation courtesy David Leppek
|
20
|
+
(https://www.azcode.com/Mod10)
|
21
|
+
|
22
|
+
@extends SC.Validator
|
23
|
+
@since SproutCore 1.0
|
24
|
+
*/
|
25
|
+
SC.Validator.CreditCard = SC.Validator.extend(
|
26
|
+
/** @scope SC.Validator.CreditCard.prototype */ {
|
27
|
+
|
28
|
+
/**
|
29
|
+
Expects a string of 16 digits. Will split into groups of 4 for display.
|
30
|
+
*/
|
31
|
+
fieldValueForObject: function(object, form, field) {
|
32
|
+
if (typeof(object) == "string" && object.length == 16) {
|
33
|
+
object = [object.slice(0,4),object.slice(4,8),object.slice(8,12),object.slice(12,16)].join(' ') ;
|
34
|
+
}
|
35
|
+
return object ;
|
36
|
+
},
|
37
|
+
|
38
|
+
/**
|
39
|
+
Removes all whitespace or dashes to make a single string.
|
40
|
+
*/
|
41
|
+
objectForFieldValue: function(value, form, field) {
|
42
|
+
return value.replace(/[\s-\.\:]/g,'') ;
|
43
|
+
},
|
44
|
+
|
45
|
+
validate: function(form, field) {
|
46
|
+
return this.checkNumber(field.get('fieldValue')) ;
|
47
|
+
},
|
48
|
+
|
49
|
+
validateError: function(form, field) {
|
50
|
+
var label = field.get('errorLabel') || 'Field' ;
|
51
|
+
return SC.$error("Invalid.CreditCard(%@)".loc(label), label);
|
52
|
+
},
|
53
|
+
|
54
|
+
/**
|
55
|
+
Allow only numbers, dashes, and spaces
|
56
|
+
*/
|
57
|
+
validateKeyDown: function(form, field, charStr) {
|
58
|
+
return !!charStr.match(/[0-9\- ]/);
|
59
|
+
},
|
60
|
+
|
61
|
+
checkNumber: function(ccNumb) {
|
62
|
+
|
63
|
+
if (!ccNumb || ccNumb.length===0) return YES; // do not validate empty
|
64
|
+
|
65
|
+
// remove any spaces or dashes
|
66
|
+
ccNumb = ccNumb.replace(/[^0-9]/g,'');
|
67
|
+
|
68
|
+
var valid = "0123456789"; // Valid digits in a credit card number
|
69
|
+
var len = ccNumb.length; // The length of the submitted cc number
|
70
|
+
var iCCN = parseInt(ccNumb,0); // integer of ccNumb
|
71
|
+
var sCCN = ccNumb.toString(); // string of ccNumb
|
72
|
+
sCCN = sCCN.replace (/^\s+|\s+$/g,''); // strip spaces
|
73
|
+
var iTotal = 0; // integer total set at zero
|
74
|
+
var bNum = true; // by default assume it is a number
|
75
|
+
var bResult = false; // by default assume it is NOT a valid cc
|
76
|
+
var temp; // temp variable for parsing string
|
77
|
+
var calc; // used for calculation of each digit
|
78
|
+
|
79
|
+
// Determine if the ccNumb is in fact all numbers
|
80
|
+
for (var j=0; j<len; j++) {
|
81
|
+
temp = "" + sCCN.substring(j, j+1);
|
82
|
+
if (valid.indexOf(temp) == "-1"){bNum = false;}
|
83
|
+
}
|
84
|
+
|
85
|
+
// if it is NOT a number, you can either alert to the fact,
|
86
|
+
// or just pass a failure
|
87
|
+
if(!bNum) bResult = false;
|
88
|
+
|
89
|
+
// Determine if it is the proper length
|
90
|
+
if((len === 0)&&(bResult)){ // nothing, field is blank AND passed above # check
|
91
|
+
bResult = false;
|
92
|
+
} else{ // ccNumb is a number and the proper length - let's see if it is a valid card number
|
93
|
+
if(len >= 15){ // 15 or 16 for Amex or V/MC
|
94
|
+
for(var i=len;i>0;i--){ // LOOP throught the digits of the card
|
95
|
+
calc = parseInt(iCCN,0) % 10; // right most digit
|
96
|
+
calc = parseInt(calc,0); // assure it is an integer
|
97
|
+
iTotal += calc; // running total of the card number as we loop - Do Nothing to first digit
|
98
|
+
i--; // decrement the count - move to the next digit in the card
|
99
|
+
iCCN = iCCN / 10; // subtracts right most digit from ccNumb
|
100
|
+
calc = parseInt(iCCN,0) % 10 ; // NEXT right most digit
|
101
|
+
calc = calc *2; // multiply the digit by two
|
102
|
+
// Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,
|
103
|
+
// I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.
|
104
|
+
switch(calc){
|
105
|
+
case 10: calc = 1; break; //5*2=10 & 1+0 = 1
|
106
|
+
case 12: calc = 3; break; //6*2=12 & 1+2 = 3
|
107
|
+
case 14: calc = 5; break; //7*2=14 & 1+4 = 5
|
108
|
+
case 16: calc = 7; break; //8*2=16 & 1+6 = 7
|
109
|
+
case 18: calc = 9; break; //9*2=18 & 1+8 = 9
|
110
|
+
default: calc = calc; //4*2= 8 & 8 = 8 -same for all lower numbers
|
111
|
+
}
|
112
|
+
iCCN = iCCN / 10; // subtracts right most digit from ccNum
|
113
|
+
iTotal += calc; // running total of the card number as we loop
|
114
|
+
} // END OF LOOP
|
115
|
+
if ((iTotal%10)===0){ // check to see if the sum Mod 10 is zero
|
116
|
+
bResult = true; // This IS (or could be) a valid credit card number.
|
117
|
+
} else {
|
118
|
+
bResult = false; // This could NOT be a valid credit card number
|
119
|
+
}
|
120
|
+
}
|
121
|
+
}
|
122
|
+
return bResult; // Return the results
|
123
|
+
}
|
124
|
+
|
125
|
+
}) ;
|
@@ -0,0 +1,52 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('validators/validator') ;
|
9
|
+
|
10
|
+
/**
|
11
|
+
Handle parsing and display of dates.
|
12
|
+
|
13
|
+
@class
|
14
|
+
@extends SC.Validator
|
15
|
+
@author Charles Jolley
|
16
|
+
@version 1.0
|
17
|
+
*/
|
18
|
+
SC.Validator.Date = SC.Validator.extend(
|
19
|
+
/** @scope SC.Validator.Date.prototype */ {
|
20
|
+
|
21
|
+
/**
|
22
|
+
The standard format you want the validator to convert dates to.
|
23
|
+
*/
|
24
|
+
format: 'NNN d, yyyy h:mm:ss a',
|
25
|
+
|
26
|
+
/**
|
27
|
+
if we have a number, then convert to a date object.
|
28
|
+
*/
|
29
|
+
fieldValueForObject: function(object, form, field) {
|
30
|
+
var date ;
|
31
|
+
if (typeof(object) == "number") {
|
32
|
+
date = new Date(object) ;
|
33
|
+
} else if (object instanceof Date) { date = object; }
|
34
|
+
|
35
|
+
if (date) object = date.format(this.get('format')) ;
|
36
|
+
|
37
|
+
return object ;
|
38
|
+
},
|
39
|
+
|
40
|
+
/**
|
41
|
+
Try to pase value as a date. convert into a number, or return null if
|
42
|
+
it could not be parsed.
|
43
|
+
*/
|
44
|
+
objectForFieldValue: function(value, form, field) {
|
45
|
+
if (value) {
|
46
|
+
var date = Date.parseDate(value) ;
|
47
|
+
value = (date) ? date.getTime() : null ;
|
48
|
+
}
|
49
|
+
return value ;
|
50
|
+
}
|
51
|
+
|
52
|
+
}) ;
|
@@ -0,0 +1,45 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('validators/validator') ;
|
9
|
+
|
10
|
+
/**
|
11
|
+
Requires a valid email format.
|
12
|
+
|
13
|
+
@class
|
14
|
+
@extends SC.Validator
|
15
|
+
@version 1.0
|
16
|
+
*/
|
17
|
+
SC.Validator.Email = SC.Validator.extend(
|
18
|
+
/** @scope SC.Validator.Email.prototype */ {
|
19
|
+
|
20
|
+
validate: function(form, field) {
|
21
|
+
return (field.get('fieldValue') || '').match(/.+@.+\...+/) ;
|
22
|
+
},
|
23
|
+
|
24
|
+
validateError: function(form, field) {
|
25
|
+
var label = field.get('errorLabel') || 'Field' ;
|
26
|
+
return SC.$error("Invalid.Email(%@)".loc(label), label) ;
|
27
|
+
}
|
28
|
+
|
29
|
+
}) ;
|
30
|
+
|
31
|
+
/**
|
32
|
+
This variant allows an empty field as well as an email address.
|
33
|
+
|
34
|
+
@class
|
35
|
+
@extends SC.Validator.Email
|
36
|
+
@author Charles Jolley
|
37
|
+
@version 1.0
|
38
|
+
*/
|
39
|
+
SC.Validator.EmailOrEmpty = SC.Validator.Email.extend(
|
40
|
+
/** @scope SC.Validator.EmailOrEmpty.prototype */ {
|
41
|
+
validate: function(form, field) {
|
42
|
+
var value = field.get('fieldValue') ;
|
43
|
+
return (value && value.length > 0) ? value.match(/.+@.+\...+/) : true ;
|
44
|
+
}
|
45
|
+
}) ;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('validators/validator') ;
|
9
|
+
|
10
|
+
/**
|
11
|
+
Requires some content in field, but does not check the specific content.
|
12
|
+
|
13
|
+
@class
|
14
|
+
@extends SC.Validator
|
15
|
+
@author Charles Jolley
|
16
|
+
@version 1.0
|
17
|
+
*/
|
18
|
+
SC.Validator.NotEmpty = SC.Validator.extend(
|
19
|
+
/** @scope SC.Validator.NotEmpty.prototype */ {
|
20
|
+
|
21
|
+
validate: function(form, field) {
|
22
|
+
var value = field.get('fieldValue');
|
23
|
+
var ret = !!value ;
|
24
|
+
if (ret && value.length) ret = value.length > 0 ;
|
25
|
+
return ret ;
|
26
|
+
},
|
27
|
+
|
28
|
+
validateError: function(form, field) {
|
29
|
+
var label = field.get('errorLabel') || 'Field' ;
|
30
|
+
return SC.$error("Invalid.NotEmpty(%@)".loc(label.capitalize()), field.get('errorLabel'));
|
31
|
+
}
|
32
|
+
|
33
|
+
}) ;
|