From 20de5ac1a9cd3b2f5edd9c76bce2627170c82dbc Mon Sep 17 00:00:00 2001 From: lukemelia Date: Fri, 30 Mar 2007 04:31:47 +0000 Subject: [PATCH] Upgrade to Rails 1.2.3 by copying the branch where I performed the upgrade. Thanks to James Kebinger for his work sussing out compatibility issues with Rails 1.2.3 and the memory_test_fix plugin. git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@499 a4c988fc-2ded-0310-b66e-134b36920a42 --- tracks/lkm-rails-1.2.3-upgrade/CHANGELOG | 709 ++++ .../lkm-rails-1.2.3-upgrade/README_DEVELOPERS | 11 + tracks/lkm-rails-1.2.3-upgrade/README_RAILS | 190 + tracks/lkm-rails-1.2.3-upgrade/Rakefile | 10 + .../app/apis/todo_api.rb | 18 + .../app/controllers/application.rb | 176 + .../app/controllers/backend_controller.rb | 96 + .../app/controllers/contexts_controller.rb | 150 + .../app/controllers/data_controller.rb | 87 + .../app/controllers/feedlist_controller.rb | 11 + .../app/controllers/login_controller.rb | 129 + .../app/controllers/mobile_controller.rb | 89 + .../app/controllers/notes_controller.rb | 61 + .../app/controllers/preferences_controller.rb | 25 + .../app/controllers/projects_controller.rb | 204 ++ .../app/controllers/todos_controller.rb | 490 +++ .../app/controllers/users_controller.rb | 251 ++ .../app/helpers/application_helper.rb | 140 + .../app/helpers/backend_helper.rb | 2 + .../app/helpers/contexts_helper.rb | 12 + .../app/helpers/data_helper.rb | 2 + .../app/helpers/feedlist_helper.rb | 22 + .../app/helpers/login_helper.rb | 3 + .../app/helpers/mobile_helper.rb | 2 + .../app/helpers/notes_helper.rb | 5 + .../app/helpers/preferences_helper.rb | 2 + .../app/helpers/projects_helper.rb | 34 + .../app/helpers/todos_helper.rb | 199 ++ .../app/helpers/users_helper.rb | 2 + .../app/models/context.rb | 65 + .../app/models/note.rb | 7 + .../app/models/preference.rb | 21 + .../app/models/project.rb | 112 + .../lkm-rails-1.2.3-upgrade/app/models/tag.rb | 11 + .../app/models/tagging.rb | 11 + .../app/models/todo.rb | 94 + .../app/models/user.rb | 182 + .../app/views/contexts/_context.rhtml | 35 + .../app/views/contexts/_context_form.rhtml | 13 + .../app/views/contexts/_context_listing.rhtml | 56 + .../app/views/contexts/_text_context.rhtml | 8 + .../app/views/contexts/create.rjs | 10 + .../app/views/contexts/destroy.rjs | 5 + .../app/views/contexts/error.rjs | 1 + .../app/views/contexts/index.rhtml | 35 + .../app/views/contexts/index_text.rhtml | 5 + .../app/views/contexts/show.rhtml | 10 + .../app/views/contexts/update.rjs | 2 + .../app/views/data/export.rhtml | 37 + .../app/views/data/import.rhtml | 18 + .../app/views/data/index.rhtml | 15 + .../app/views/data/yaml_export.rhtml | 0 .../app/views/data/yaml_form.rhtml | 19 + .../app/views/data/yaml_import.rhtml | 1 + .../app/views/feedlist/index.rhtml | 87 + .../app/views/layouts/login.rhtml | 24 + .../app/views/layouts/mobile.rhtml | 15 + .../app/views/layouts/scaffold.rhtml | 10 + .../app/views/layouts/standard.rhtml | 75 + .../app/views/login/_redirect_to_login.rjs | 1 + .../app/views/login/check_expiry.rjs | 3 + .../app/views/login/login.rhtml | 52 + .../app/views/mobile/_mobile_actions.rhtml | 35 + .../app/views/mobile/_mobile_edit.rhtml | 21 + .../app/views/mobile/detail.rhtml | 4 + .../app/views/mobile/filter.rhtml | 6 + .../app/views/mobile/index.rhtml | 5 + .../app/views/mobile/show_add_form.rhtml | 4 + .../app/views/notes/_note_edit_form.rhtml | 6 + .../app/views/notes/_notes.rhtml | 35 + .../app/views/notes/_notes_summary.rhtml | 6 + .../app/views/notes/index.rhtml | 11 + .../app/views/notes/show.rhtml | 5 + .../app/views/preferences/edit.rhtml | 74 + .../app/views/preferences/index.rhtml | 64 + .../_default_context_autocomplete.rhtml | 6 + .../app/views/projects/_edit_project.rhtml | 5 + .../app/views/projects/_project.rhtml | 25 + .../app/views/projects/_project_form.rhtml | 26 + .../app/views/projects/_project_listing.rhtml | 54 + .../views/projects/_project_state_group.rhtml | 7 + .../app/views/projects/create.rjs | 15 + .../app/views/projects/destroy.rjs | 12 + .../app/views/projects/error.rjs | 1 + .../app/views/projects/index.rhtml | 39 + .../app/views/projects/index_text.rhtml | 6 + .../app/views/projects/show.rhtml | 76 + .../app/views/projects/update.rjs | 18 + .../views/projects/update_default_context.rjs | 10 + .../app/views/projects/update_status.rjs | 11 + .../app/views/shared/_add_new_item_form.rhtml | 74 + .../app/views/shared/_empty.rhtml | 3 + .../app/views/shared/_flash.rhtml | 11 + .../app/views/shared/_footer.rhtml | 3 + .../app/views/sidebar/_context.rhtml | 1 + .../app/views/sidebar/_context_list.rhtml | 8 + .../app/views/sidebar/_project.rhtml | 1 + .../app/views/sidebar/_project_list.rhtml | 8 + .../app/views/sidebar/sidebar.rhtml | 29 + .../app/views/todos/_completed.rhtml | 17 + .../app/views/todos/_deferred.rhtml | 18 + .../app/views/todos/_done.rhtml | 22 + .../app/views/todos/_edit_form.rhtml | 59 + .../app/views/todos/_text_todo.rhtml | 18 + .../app/views/todos/_todo.rhtml | 25 + .../app/views/todos/_toggle_notes.rhtml | 8 + .../app/views/todos/check_deferred.rjs | 4 + .../app/views/todos/completed.rhtml | 25 + .../app/views/todos/completed_archive.rhtml | 11 + .../app/views/todos/create.rjs | 25 + .../app/views/todos/destroy.rjs | 8 + .../app/views/todos/edit.rjs | 4 + .../app/views/todos/error.rjs | 1 + .../app/views/todos/index.rhtml | 14 + .../app/views/todos/index_ical.rhtml | 25 + .../app/views/todos/index_text.rhtml | 1 + .../app/views/todos/list.rxml | 14 + .../app/views/todos/list_deferred.rhtml | 21 + .../app/views/todos/tag.rhtml | 20 + .../app/views/todos/toggle_check.rjs | 29 + .../app/views/todos/update.rjs | 72 + .../app/views/users/change_auth_type.rhtml | 18 + .../app/views/users/change_password.rhtml | 26 + .../app/views/users/destroy.rjs | 7 + .../app/views/users/index.rhtml | 36 + .../app/views/users/new.rhtml | 32 + .../app/views/users/nosignup.rhtml | 5 + tracks/lkm-rails-1.2.3-upgrade/config/boot.rb | 45 + .../config/database.yml.tmpl | 17 + .../config/environment.rb.tmpl | 82 + .../config/environments/development.rb | 20 + .../config/environments/production.rb | 17 + .../config/environments/test.rb | 28 + .../lkm-rails-1.2.3-upgrade/config/routes.rb | 51 + .../db/migrate/001_create_tracks_db.rb | 41 + .../db/migrate/002_add_user_id.rb | 21 + .../db/migrate/003_created_at.rb | 12 + .../db/migrate/004_notes.rb | 15 + .../db/migrate/005_add_project_description.rb | 9 + .../006_add_preferences_to_user_table.rb | 17 + .../db/migrate/007_add_sessions_table.rb | 15 + .../migrate/008_add_subclass_attr_to_todos.rb | 16 + .../db/migrate/009_add_user_pref_refresh.rb | 15 + .../010_add_first_and_last_name_to_user.rb | 11 + .../011_pref_to_show_hide_sidebar_items.rb | 22 + .../db/migrate/012_add_preferences_model.rb | 23 + .../db/migrate/013_convert_preferences.rb | 45 + .../014_convert_project_to_state_machine.rb | 24 + ...d_verbose_action_descriptors_preference.rb | 9 + .../db/migrate/016_add_user_auth_type.rb | 9 + .../db/migrate/017_add_open_id_tables.rb | 45 + .../db/migrate/018_add_user_open_id_url.rb | 9 + .../019_convert_todo_to_state_machine.rb | 40 + ...pref_to_show_hidden_projects_in_sidebar.rb | 11 + .../migrate/021_add_time_zone_preference.rb | 11 + .../db/migrate/022_add_indices.rb | 23 + .../db/migrate/023_index_on_user_login.rb | 9 + .../migrate/024_add_find_by_name_indices.rb | 11 + .../db/migrate/025_add_tag_support.rb | 23 + .../db/migrate/026_add_project_timestamps.rb | 12 + .../db/migrate/027_add_context_timestamps.rb | 13 + ...dd_show_project_on_todo_done_preference.rb | 9 + .../029_add_title_date_format_preference.rb | 9 + .../db/migrate/030_set_nil_timestamps.rb | 25 + .../031_add_default_context_to_project.rb | 9 + tracks/lkm-rails-1.2.3-upgrade/db/schema.rb | 137 + .../lkm-rails-1.2.3-upgrade/db/tracks-1041.db | Bin 0 -> 13312 bytes .../db/tracks_1.04_content.sql | 56 + tracks/lkm-rails-1.2.3-upgrade/doc/CHANGELOG | 131 + .../doc/README_FOR_APP | 38 + .../lkm-rails-1.2.3-upgrade/installation.html | 149 + .../lib/activerecord_base_tag_extensions.rb | 26 + tracks/lkm-rails-1.2.3-upgrade/lib/config.rb | 20 + .../lib/login_system.rb | 168 + .../lib/name_part_finder.rb | 5 + .../lkm-rails-1.2.3-upgrade/lib/redcloth.rb | 1113 ++++++ .../lib/source_view.rb | 56 + .../lib/tasks/extract_fixtures.rake | 17 + .../lib/tasks/gems.rake | 34 + .../lib/tasks/load_exported_fixtures.rake | 8 + .../lib/tasks/setup_tracks.rake | 15 + .../lib/tasks/upgrade_sqlite_db.rake | 40 + .../lkm-rails-1.2.3-upgrade/lib/todo_list.rb | 55 + .../lib/url_friendly_name.rb | 20 + .../log.tmpl/apache.log | 0 .../log.tmpl/development.log | 0 .../log.tmpl/production.log | 0 .../lkm-rails-1.2.3-upgrade/log.tmpl/test.log | 0 .../lkm-rails-1.2.3-upgrade/public/.htaccess | 42 + .../lkm-rails-1.2.3-upgrade/public/404.html | 8 + .../lkm-rails-1.2.3-upgrade/public/500.html | 8 + .../public/_doc/index.html | 70 + .../public/dispatch.cgi | 10 + .../public/dispatch.fcgi | 24 + .../public/dispatch.rb | 10 + .../public/favicon.ico | Bin 0 -> 1406 bytes .../public/images/blank.png | Bin 0 -> 156 bytes .../public/images/bottom_off.png | Bin 0 -> 3752 bytes .../public/images/bottom_on.png | Bin 0 -> 3754 bytes .../public/images/close.gif | Bin 0 -> 109 bytes .../public/images/collapse.png | Bin 0 -> 1138 bytes .../public/images/delete_off.png | Bin 0 -> 3797 bytes .../public/images/delete_on.png | Bin 0 -> 3809 bytes .../public/images/done.png | Bin 0 -> 905 bytes .../public/images/down_off.png | Bin 0 -> 3775 bytes .../public/images/down_on.png | Bin 0 -> 3780 bytes .../public/images/edit_off.png | Bin 0 -> 3698 bytes .../public/images/edit_on.png | Bin 0 -> 3699 bytes .../public/images/expand.png | Bin 0 -> 1141 bytes .../public/images/feed-icon.png | Bin 0 -> 764 bytes .../public/images/menuarrow.gif | Bin 0 -> 69 bytes .../public/images/notes_off.png | Bin 0 -> 3840 bytes .../public/images/notes_on.png | Bin 0 -> 3844 bytes .../public/images/open-id-login-bg.gif | Bin 0 -> 237 bytes .../public/images/spinner.gif | Bin 0 -> 1553 bytes .../public/images/top_off.png | Bin 0 -> 3737 bytes .../public/images/top_on.png | Bin 0 -> 3748 bytes .../public/images/up_off.png | Bin 0 -> 3759 bytes .../public/images/up_on.png | Bin 0 -> 3760 bytes .../public/javascripts/accesskey-hints.js | 69 + .../public/javascripts/application.js | 145 + .../public/javascripts/calendar-en.js | 127 + .../public/javascripts/calendar-setup.js | 299 ++ .../public/javascripts/calendar.js | 1806 ++++++++++ .../public/javascripts/controls.js | 833 +++++ .../public/javascripts/dragdrop.js | 942 +++++ .../public/javascripts/effects.js | 1088 ++++++ .../public/javascripts/lowpro.js | 307 ++ .../public/javascripts/prototype.js | 2515 +++++++++++++ .../public/javascripts/scriptaculous.js | 47 + .../public/javascripts/selector-addon-v1.js | 163 + .../public/javascripts/slider.js | 283 ++ .../public/javascripts/todo-items.js | 169 + .../lkm-rails-1.2.3-upgrade/public/robots.txt | 1 + .../public/stylesheets/calendar-system.css | 233 ++ .../public/stylesheets/mobile.css | 51 + .../public/stylesheets/print.css | 76 + .../public/stylesheets/scaffold.css | 156 + .../public/stylesheets/standard.css | 779 ++++ tracks/lkm-rails-1.2.3-upgrade/script/about | 3 + .../script/benchmarker | 19 + .../script/breakpointer | 3 + tracks/lkm-rails-1.2.3-upgrade/script/console | 3 + .../script/console_sandbox | 7 + .../script/console_sandbox.rb | 7 + tracks/lkm-rails-1.2.3-upgrade/script/destroy | 3 + .../lkm-rails-1.2.3-upgrade/script/generate | 3 + .../script/performance/benchmarker | 3 + .../script/performance/profiler | 3 + tracks/lkm-rails-1.2.3-upgrade/script/plugin | 3 + .../script/process/inspector | 3 + .../script/process/reaper | 3 + .../script/process/spawner | 3 + .../lkm-rails-1.2.3-upgrade/script/profiler | 34 + tracks/lkm-rails-1.2.3-upgrade/script/runner | 3 + tracks/lkm-rails-1.2.3-upgrade/script/server | 3 + .../test/fixtures/contexts.yml | 106 + .../test/fixtures/notes.yml | 29 + .../test/fixtures/preferences.yml | 36 + .../test/fixtures/projects.yml | 48 + .../test/fixtures/taggings.yml | 29 + .../test/fixtures/tags.yml | 17 + .../test/fixtures/todos.yml | 228 ++ .../test/fixtures/users.yml | 30 + .../functional/backend_controller_test.rb | 79 + .../functional/contexts_controller_test.rb | 153 + .../test/functional/data_controller_test.rb | 18 + .../functional/feedlist_controller_test.rb | 30 + .../test/functional/login_controller_test.rb | 89 + .../test/functional/mobile_controller_test.rb | 54 + .../test/functional/notes_controller_test.rb | 18 + .../functional/preferences_controller_test.rb | 50 + .../functional/projects_controller_test.rb | 224 ++ .../todo_container_controller_test_base.rb | 32 + .../test/functional/todos_controller_test.rb | 246 ++ .../test/functional/users_controller_test.rb | 161 + .../test/integration/context_xml_api_test.rb | 84 + .../test/integration/feed_smoke_test.rb | 132 + .../test/integration/ldap_auth_test.rb | 142 + .../test/integration/project_xml_api_test.rb | 78 + .../test/integration/stories_test.rb | 80 + .../test/integration/users_xml_api_test.rb | 106 + .../test/selenium/context_listing/delete.rsel | 6 + .../context_listing/edit_then_delete.rsel | 15 + .../selenium/context_listing/edit_twice.rsel | 19 + .../selenium/home/mark_todo_complete_1.rsel | 5 + .../selenium/home/mark_todo_complete_2.rsel | 6 + .../selenium/home/mark_todo_complete_3.rsel | 5 + .../selenium/home/mark_todo_incomplete.rsel | 6 + .../test/selenium/login/_login.rsel | 5 + .../login/first_run_shows_signup.rsel | 8 + .../test/selenium/login/login_failure.rsel | 9 + .../test/selenium/login/login_success.rsel | 8 + .../test/selenium/notes/link_to_note.rsel | 5 + .../test/selenium/notes/see_all_notes.rsel | 5 + .../project_detail/_add_deferred_todo.rsel | 5 + .../activate_deferred_todo.rsel | 13 + .../activate_last_deferred_todo.rsel | 9 + .../project_detail/change_project_status.rsel | 14 + .../change_todos_project_to_blank.rsel | 9 + .../project_detail/create_deferred_todo.rsel | 5 + .../selenium/project_detail/defer_todo.rsel | 10 + .../mark_deferred_todo_complete.rsel | 7 + .../mark_last_deferred_todo_complete.rsel | 5 + .../test/selenium/project_listing/delete.rsel | 6 + .../project_listing/edit_then_delete.rsel | 17 + .../selenium/project_listing/edit_twice.rsel | 19 + .../test/selenium/tags/find_tagged.rsel | 5 + .../selenium/tickler/see_all_deferred.rsel | 4 + .../test/selenium_helper.rb | 18 + .../test/test_helper.rb | 114 + .../test/unit/context_test.rb | 138 + .../test/unit/notes_test.rb | 14 + .../test/unit/preference_test.rb | 23 + .../test/unit/project_test.rb | 203 ++ .../test/unit/tag_test.rb | 10 + .../test/unit/tagging_test.rb | 10 + .../test/unit/todo_test.rb | 142 + .../test/unit/user_test.rb | 285 ++ .../plugins/acts_as_state_machine/CHANGELOG | 13 + .../plugins/acts_as_state_machine/MIT-LICENSE | 20 + .../plugins/acts_as_state_machine/README | 33 + .../plugins/acts_as_state_machine/Rakefile | 28 + .../vendor/plugins/acts_as_state_machine/TODO | 11 + .../plugins/acts_as_state_machine/init.rb | 5 + .../lib/acts_as_state_machine.rb | 268 ++ .../test/acts_as_state_machine_test.rb | 224 ++ .../acts_as_state_machine/test/database.yml | 18 + .../test/fixtures/conversation.rb | 67 + .../test/fixtures/conversations.yml | 11 + .../test/fixtures/person.rb | 2 + .../acts_as_state_machine/test/schema.rb | 11 + .../acts_as_state_machine/test/test_helper.rb | 38 + .../vendor/plugins/arts/README | 28 + .../vendor/plugins/arts/about.yml | 7 + .../vendor/plugins/arts/init.rb | 3 + .../vendor/plugins/arts/install.rb | 1 + .../vendor/plugins/arts/lib/arts.rb | 133 + .../vendor/plugins/arts/test/arts_test.rb | 402 +++ .../vendor/plugins/extra_validations/init.rb | 2 + .../lib/extra_validations.rb | 29 + .../plugins/has_many_polymorphs/LICENSE | 184 + .../vendor/plugins/has_many_polymorphs/README | 46 + .../plugins/has_many_polymorphs/init.rb | 1 + .../lib/has_many_polymorphs.rb | 581 +++ .../test/fixtures/aquatic/fish.yml | 8 + .../fixtures/aquatic/little_whale_pupils.yml | 0 .../test/fixtures/aquatic/whales.yml | 3 + .../test/fixtures/bow_wows.yml | 6 + .../test/fixtures/cats.yml | 8 + .../test/fixtures/eaters_foodstuffs.yml | 0 .../test/fixtures/frogs.yml | 3 + .../test/fixtures/keep_your_enemies_close.yml | 0 .../test/fixtures/petfoods.yml | 6 + .../test/fixtures/wild_boars.yml | 6 + .../test/models/aquatic/fish.rb | 4 + .../test/models/aquatic/pupils_whale.rb | 7 + .../test/models/aquatic/whale.rb | 11 + .../models/beautiful_fight_relationship.rb | 13 + .../has_many_polymorphs/test/models/cat.rb | 5 + .../has_many_polymorphs/test/models/dog.rb | 16 + .../test/models/eaters_foodstuff.rb | 10 + .../has_many_polymorphs/test/models/frog.rb | 4 + .../has_many_polymorphs/test/models/kitten.rb | 3 + .../test/models/petfood.rb | 21 + .../has_many_polymorphs/test/models/tabby.rb | 2 + .../test/models/wild_boar.rb | 3 + .../has_many_polymorphs/test/schema.rb | 52 + .../has_many_polymorphs/test/test_helper.rb | 23 + .../test/unit/polymorph_test.rb | 487 +++ .../vendor/plugins/memory_test_fix/README | 35 + .../vendor/plugins/memory_test_fix/Rakefile | 22 + .../vendor/plugins/memory_test_fix/about.yml | 7 + .../vendor/plugins/memory_test_fix/init.rb | 2 + .../memory_test_fix/lib/memory_test_fix.rb | 42 + .../plugins/openid_consumer_plugin/LICENSE | 202 ++ .../plugins/openid_consumer_plugin/README | 22 + .../plugins/openid_consumer_plugin/Rakefile | 39 + .../open_id_consumer_controller_generator.rb | 86 + .../templates/controller.rb | 74 + .../templates/functional_test.rb | 34 + .../templates/helper.rb | 19 + .../templates/index.rhtml | 32 + .../open_id_migration_generator.rb | 29 + .../open_id_migration/templates/migration.rb | 45 + .../plugins/openid_consumer_plugin/init.rb | 23 + .../plugins/openid_consumer_plugin/install.rb | 18 + .../active_record_open_id_store.rb | 103 + .../lib/open_id_consumer/association.rb | 31 + .../open_id_consumer/controller_methods.rb | 69 + .../lib/open_id_consumer/nonce.rb | 22 + .../lib/open_id_consumer/setting.rb | 22 + .../vendor/plugins/resource_feeder/README | 7 + .../vendor/plugins/resource_feeder/Rakefile | 22 + .../vendor/plugins/resource_feeder/init.rb | 2 + .../resource_feeder/lib/resource_feeder.rb | 2 + .../lib/resource_feeder/atom.rb | 78 + .../lib/resource_feeder/rss.rb | 79 + .../resource_feeder/test/atom_feed_test.rb | 85 + .../resource_feeder/test/rss_feed_test.rb | 86 + .../resource_feeder/test/test_helper.rb | 64 + .../plugins/selenium-on-rails/LICENSE-2.0.txt | 202 ++ .../vendor/plugins/selenium-on-rails/README | 192 + .../vendor/plugins/selenium-on-rails/Rakefile | 27 + .../plugins/selenium-on-rails/config.yml | 27 + .../selenium-on-rails/config.yml.example | 27 + .../doc/classes/SeleniumController.html | 265 ++ .../doc/classes/SeleniumHelper.html | 148 + .../doc/classes/SeleniumOnRails.html | 124 + .../SeleniumOnRails/FixtureLoader.html | 231 ++ .../SeleniumOnRails/PartialsSupport.html | 195 + .../doc/classes/SeleniumOnRails/Paths.html | 295 ++ .../classes/SeleniumOnRails/RSelenese.html | 219 ++ .../doc/classes/SeleniumOnRails/Renderer.html | 156 + .../doc/classes/SeleniumOnRails/Selenese.html | 179 + .../SeleniumOnRails/SuiteRenderer.html | 223 ++ .../classes/SeleniumOnRails/TestBuilder.html | 372 ++ .../SeleniumOnRails/TestBuilderAccessors.html | 1672 +++++++++ .../SeleniumOnRails/TestBuilderActions.html | 1050 ++++++ .../doc/classes/SeleniumOnRailsConfig.html | 150 + .../selenium-on-rails/doc/files/README.html | 388 ++ .../controllers/selenium_controller_rb.html | 108 + .../doc/files/lib/selenium_helper_rb.html | 101 + .../acceptance_test_runner_rb.html | 207 ++ .../selenium_on_rails/fixture_loader_rb.html | 108 + .../partials_support_rb.html | 111 + .../files/lib/selenium_on_rails/paths_rb.html | 101 + .../lib/selenium_on_rails/renderer_rb.html | 101 + .../lib/selenium_on_rails/rselenese_rb.html | 118 + .../lib/selenium_on_rails/selenese_rb.html | 101 + .../selenium_on_rails/suite_renderer_rb.html | 101 + .../test_builder_accessors_rb.html | 114 + .../test_builder_actions_rb.html | 113 + .../selenium_on_rails/test_builder_rb.html | 121 + .../lib/selenium_on_rails_config_rb.html | 108 + .../doc/files/lib/selenium_on_rails_rb.html | 115 + .../selenium-on-rails/doc/fr_class_index.html | 40 + .../selenium-on-rails/doc/fr_file_index.html | 42 + .../doc/fr_method_index.html | 119 + .../plugins/selenium-on-rails/doc/index.html | 24 + .../selenium-on-rails/doc/rdoc-style.css | 208 ++ .../generators/selenium/USAGE | 19 + .../generators/selenium/selenium_generator.rb | 50 + .../generators/selenium/templates/rhtml.rhtml | 16 + .../selenium/templates/rselenese.rhtml | 14 + .../selenium/templates/selenese.rhtml | 11 + .../vendor/plugins/selenium-on-rails/init.rb | 19 + .../lib/controllers/selenium_controller.rb | 119 + .../selenium-on-rails/lib/selenium_helper.rb | 9 + .../lib/selenium_on_rails.rb | 11 + .../acceptance_test_runner.rb | 210 ++ .../lib/selenium_on_rails/fixture_loader.rb | 54 + .../lib/selenium_on_rails/partials_support.rb | 38 + .../lib/selenium_on_rails/paths.rb | 61 + .../lib/selenium_on_rails/renderer.rb | 17 + .../lib/selenium_on_rails/rselenese.rb | 35 + .../lib/selenium_on_rails/selenese.rb | 81 + .../lib/selenium_on_rails/suite_renderer.rb | 51 + .../lib/selenium_on_rails/test_builder.rb | 92 + .../test_builder_accessors.rb | 575 +++ .../selenium_on_rails/test_builder_actions.rb | 286 ++ .../lib/selenium_on_rails_config.rb | 22 + .../selenium-on-rails/lib/views/layout.rhtml | 18 + .../selenium-on-rails/lib/views/record.rhtml | 5 + .../selenium-on-rails/lib/views/setup.rhtml | 67 + .../lib/views/test_suite.rhtml | 26 + .../plugins/selenium-on-rails/routes.rb | 23 + .../switch_environment/init.rb | 20 + .../switch_environment_controller.rb | 16 + .../tasks/test_acceptance.rake | 8 + .../selenium-on-rails/test/renderer_test.rb | 147 + .../selenium-on-rails/test/rselenese_test.rb | 403 +++ .../selenium-on-rails/test/selenese_test.rb | 229 ++ .../test/selenium_controller_test.rb | 48 + .../test/selenium_support_test.rb | 33 + .../selenium-on-rails/test/setup_test.rb | 29 + .../test/suite_renderer_test.rb | 173 + .../selenium-on-rails/test/test_helper.rb | 70 + .../selenium-on-rails/test_data/_partial.rsel | 1 + .../selenium-on-rails/test_data/html.html | 6 + .../test_data/own_layout.html | 12 + .../test_data/partials/_html.html | 6 + .../test_data/partials/_nesting.rsel | 2 + .../test_data/partials/_rhtml.rhtml | 6 + .../test_data/partials/_rsel.rsel | 1 + .../test_data/partials/_sel.sel | 5 + .../test_data/partials/all_partials.rsel | 5 + .../selenium-on-rails/test_data/rhtml.rhtml | 7 + .../test_data/rselenese.rsel | 8 + .../selenium-on-rails/test_data/selenese.sel | 7 + .../subsuite/suite_one_subsuite_testcase.sel | 1 + .../suite_one/suite_one_testcase1.sel | 1 + .../suite_one/suite_one_testcase2.sel | 1 + .../suite_two/suite_two_testcase.sel | 1 + .../plugins/simple_ldap_authenticator/README | 5 + .../simple_ldap_authenticator/Rakefile | 22 + .../plugins/simple_ldap_authenticator/init.rb | 2 + .../simple_ldap_authenticator/install.rb | 1 + .../lib/simple_ldap_authenticator.rb | 127 + .../simple_ldap_authenticator_tasks.rake | 4 + .../test/simple_ldap_authenticator_test.rb | 8 + .../vendor/plugins/simply_helpful/README | 4 + .../vendor/plugins/simply_helpful/Rakefile | 22 + .../vendor/plugins/simply_helpful/init.rb | 4 + .../simply_helpful/lib/simply_helpful.rb | 8 + .../lib/simply_helpful/av_extensions.rb | 26 + .../simply_helpful/controller_extensions.rb | 35 + .../simply_helpful/form_helper_extensions.rb | 48 + .../lib/simply_helpful/jsg_extensions.rb | 18 + .../record_identification_helper.rb | 16 + .../lib/simply_helpful/record_identifier.rb | 44 + .../lib/simply_helpful/record_tag_helper.rb | 76 + .../test/controller_extensions_test.rb | 52 + .../test/form_helper_extensions_test.rb | 96 + .../test/record_identifier_test.rb | 80 + .../test/record_tag_helper_test.rb | 133 + .../test/simply_helpful_test.rb | 6 + .../simply_helpful/test/test_helper.rb | 25 + .../plugins/unobtrusive_javascript/CHANGELOG | 72 + .../plugins/unobtrusive_javascript/README | 73 + .../plugins/unobtrusive_javascript/Rakefile | 33 + .../plugins/unobtrusive_javascript/about.yml | 6 + .../assets/javascripts/lowpro.js | 307 ++ .../plugins/unobtrusive_javascript/init.rb | 21 + .../plugins/unobtrusive_javascript/install.rb | 1 + .../lib/actionview_helpers_patches.rb | 17 + .../lib/asset_tag_helper_patches.rb | 33 + .../lib/behaviour_caching.rb | 70 + .../unobtrusive_javascript_controller.rb | 52 + .../lib/prototype_helper_patches.rb | 72 + .../lib/scriptaculous_helper_patches.rb | 62 + .../lib/tag_helper_patches.rb | 37 + .../plugins/unobtrusive_javascript/lib/ujs.rb | 32 + .../lib/ujs/behaviour_helper.rb | 62 + .../lib/ujs/behaviour_script.rb | 58 + .../lib/ujs/behaviour_script_converter.rb | 23 + .../lib/ujs/controller_methods.rb | 55 + .../unobtrusive_javascript/lib/ujs/helpers.rb | 152 + .../lib/ujs/javascript_proxies.rb | 57 + .../tasks/unobtrusive_javascript_tasks.rake | 15 + .../test/asset_tag_helper_patches_test.rb | 32 + .../test/behaviour_helper_test.rb | 180 + .../test/behaviour_script_converter_test.rb | 72 + .../test/behaviour_script_test.rb | 98 + .../test/config/database.yml | 19 + .../test/config/environment.rb | 8 + .../test/config/routes.rb | 4 + .../test/config/schema.rb | 3 + .../test/controller_methods_test.rb | 48 + .../test/helpers_test.rb | 186 + .../test/javascript_proxies_test.rb | 3 + .../test/lib/ptk/boot.rb | 26 + .../test/lib/ptk/gem/action_controller.rb | 11 + .../test/lib/ptk/gem/action_mailer.rb | 4 + .../test/lib/ptk/gem/active_record.rb | 27 + .../test/lib/ptk/gem/rails.rb | 31 + .../test/lib/ptk/ptk.rb | 148 + .../test/lib/ptk/suite/difference.rb | 23 + .../test/lib/stubs/controller_stub.rb | 10 + .../unobtrusive_javascript/test/ptk_helper.rb | 29 + .../test/tag_helper_patches_test.rb | 59 + .../test/test_helper.rb | 25 + .../unobtrusive_javascript_controller_test.rb | 95 + .../unobtrusive_javascript/uninstall.rb | 1 + .../vendor/rails/TAG_rel_1-2-3 | 0 .../vendor/rails/actionmailer/CHANGELOG | 297 ++ .../vendor/rails/actionmailer/MIT-LICENSE | 21 + .../vendor/rails/actionmailer/README | 145 + .../vendor/rails/actionmailer/Rakefile | 95 + .../vendor/rails/actionmailer/install.rb | 30 + .../rails/actionmailer/lib/action_mailer.rb | 50 + .../lib/action_mailer/adv_attr_accessor.rb | 30 + .../actionmailer/lib/action_mailer/base.rb | 582 +++ .../actionmailer/lib/action_mailer/helpers.rb | 111 + .../lib/action_mailer/mail_helper.rb | 19 + .../actionmailer/lib/action_mailer/part.rb | 113 + .../lib/action_mailer/part_container.rb | 51 + .../actionmailer/lib/action_mailer/quoting.rb | 59 + .../actionmailer/lib/action_mailer/utils.rb | 8 + .../lib/action_mailer/vendor/text/format.rb | 1466 ++++++++ .../lib/action_mailer/vendor/tmail.rb | 3 + .../lib/action_mailer/vendor/tmail/address.rb | 242 ++ .../action_mailer/vendor/tmail/attachments.rb | 39 + .../lib/action_mailer/vendor/tmail/base64.rb | 71 + .../lib/action_mailer/vendor/tmail/config.rb | 69 + .../lib/action_mailer/vendor/tmail/encode.rb | 467 +++ .../lib/action_mailer/vendor/tmail/facade.rb | 552 +++ .../lib/action_mailer/vendor/tmail/header.rb | 914 +++++ .../lib/action_mailer/vendor/tmail/info.rb | 35 + .../lib/action_mailer/vendor/tmail/loader.rb | 1 + .../lib/action_mailer/vendor/tmail/mail.rb | 447 +++ .../lib/action_mailer/vendor/tmail/mailbox.rb | 433 +++ .../lib/action_mailer/vendor/tmail/mbox.rb | 1 + .../lib/action_mailer/vendor/tmail/net.rb | 280 ++ .../action_mailer/vendor/tmail/obsolete.rb | 135 + .../lib/action_mailer/vendor/tmail/parser.rb | 1522 ++++++++ .../lib/action_mailer/vendor/tmail/port.rb | 377 ++ .../lib/action_mailer/vendor/tmail/quoting.rb | 131 + .../lib/action_mailer/vendor/tmail/scanner.rb | 41 + .../action_mailer/vendor/tmail/scanner_r.rb | 263 ++ .../action_mailer/vendor/tmail/stringio.rb | 277 ++ .../lib/action_mailer/vendor/tmail/tmail.rb | 1 + .../lib/action_mailer/vendor/tmail/utils.rb | 238 ++ .../actionmailer/lib/action_mailer/version.rb | 9 + .../rails/actionmailer/test/abstract_unit.rb | 30 + .../test/fixtures/first_mailer/share.rhtml | 1 + .../fixtures/helper_mailer/use_helper.rhtml | 1 + .../helper_mailer/use_helper_method.rhtml | 1 + .../helper_mailer/use_mail_helper.rhtml | 5 + .../helper_mailer/use_test_helper.rhtml | 1 + .../test/fixtures/helpers/test_helper.rb | 5 + ...ltipart_with_template_path_with_dots.rhtml | 1 + ...ltipart_with_template_path_with_dots.rhtml | 0 .../actionmailer/test/fixtures/raw_email | 14 + .../actionmailer/test/fixtures/raw_email10 | 20 + .../actionmailer/test/fixtures/raw_email11 | 34 + .../actionmailer/test/fixtures/raw_email12 | 32 + .../actionmailer/test/fixtures/raw_email13 | 29 + .../actionmailer/test/fixtures/raw_email2 | 114 + .../actionmailer/test/fixtures/raw_email3 | 70 + .../actionmailer/test/fixtures/raw_email4 | 59 + .../actionmailer/test/fixtures/raw_email5 | 19 + .../actionmailer/test/fixtures/raw_email6 | 20 + .../actionmailer/test/fixtures/raw_email7 | 66 + .../actionmailer/test/fixtures/raw_email8 | 47 + .../actionmailer/test/fixtures/raw_email9 | 28 + .../test/fixtures/raw_email_quoted_with_0d0a | 14 + .../raw_email_with_partially_quoted_subject | 14 + .../test/fixtures/second_mailer/share.rhtml | 1 + .../test/fixtures/templates/signed_up.rhtml | 3 + ...implicitly_multipart_example.ignored.rhtml | 1 + .../implicitly_multipart_example.rhtml.bak | 1 + ...plicitly_multipart_example.text.html.rhtml | 10 + ...licitly_multipart_example.text.plain.rhtml | 2 + ...plicitly_multipart_example.text.yaml.rhtml | 1 + .../test/fixtures/test_mailer/signed_up.rhtml | 3 + .../test_mailer/signed_up_with_url.rhtml | 3 + .../actionmailer/test/mail_helper_test.rb | 91 + .../actionmailer/test/mail_render_test.rb | 79 + .../actionmailer/test/mail_service_test.rb | 816 +++++ .../rails/actionmailer/test/quoting_test.rb | 57 + .../rails/actionmailer/test/tmail_test.rb | 13 + .../rails/actionmailer/test/url_test.rb | 68 + .../vendor/rails/actionpack/CHANGELOG | 3138 +++++++++++++++++ .../vendor/rails/actionpack/MIT-LICENSE | 21 + .../vendor/rails/actionpack/README | 469 +++ .../rails/actionpack/RUNNING_UNIT_TESTS | 25 + .../vendor/rails/actionpack/Rakefile | 154 + .../rails/actionpack/examples/.htaccess | 24 + .../examples/address_book/index.rhtml | 33 + .../examples/address_book/layout.rhtml | 8 + .../examples/address_book_controller.cgi | 9 + .../examples/address_book_controller.fcgi | 6 + .../examples/address_book_controller.rb | 52 + .../examples/address_book_controller.rbx | 4 + .../rails/actionpack/examples/benchmark.rb | 52 + .../examples/benchmark_with_ar.fcgi | 89 + .../actionpack/examples/blog_controller.cgi | 53 + .../actionpack/examples/debate/index.rhtml | 14 + .../examples/debate/new_topic.rhtml | 22 + .../actionpack/examples/debate/topic.rhtml | 32 + .../actionpack/examples/debate_controller.cgi | 57 + .../vendor/rails/actionpack/install.rb | 30 + .../rails/actionpack/lib/action_controller.rb | 83 + .../lib/action_controller/assertions.rb | 82 + .../assertions/deprecated_assertions.rb | 228 ++ .../assertions/dom_assertions.rb | 25 + .../assertions/model_assertions.rb | 12 + .../assertions/response_assertions.rb | 140 + .../assertions/routing_assertions.rb | 98 + .../assertions/selector_assertions.rb | 571 +++ .../assertions/tag_assertions.rb | 117 + .../actionpack/lib/action_controller/base.rb | 1231 +++++++ .../lib/action_controller/benchmarking.rb | 89 + .../lib/action_controller/caching.rb | 616 ++++ .../lib/action_controller/cgi_ext/cgi_ext.rb | 36 + .../action_controller/cgi_ext/cgi_methods.rb | 211 ++ .../cgi_ext/cookie_performance_fix.rb | 125 + .../cgi_ext/raw_post_data_fix.rb | 95 + .../cgi_ext/session_performance_fix.rb | 30 + .../lib/action_controller/cgi_process.rb | 231 ++ .../lib/action_controller/components.rb | 182 + .../lib/action_controller/cookies.rb | 78 + .../deprecated_dependencies.rb | 65 + .../action_controller/deprecated_redirects.rb | 17 + .../deprecated_request_methods.rb | 34 + .../lib/action_controller/filters.rb | 667 ++++ .../actionpack/lib/action_controller/flash.rb | 182 + .../lib/action_controller/helpers.rb | 131 + .../lib/action_controller/integration.rb | 552 +++ .../lib/action_controller/layout.rb | 313 ++ .../action_controller/macros/auto_complete.rb | 53 + .../macros/in_place_editing.rb | 33 + .../lib/action_controller/mime_responds.rb | 181 + .../lib/action_controller/mime_type.rb | 200 ++ .../lib/action_controller/pagination.rb | 402 +++ .../lib/action_controller/request.rb | 265 ++ .../lib/action_controller/rescue.rb | 142 + .../lib/action_controller/resources.rb | 405 +++ .../lib/action_controller/response.rb | 35 + .../lib/action_controller/routing.rb | 1340 +++++++ .../lib/action_controller/scaffolding.rb | 189 + .../session/active_record_store.rb | 335 ++ .../action_controller/session/drb_server.rb | 32 + .../action_controller/session/drb_store.rb | 35 + .../session/mem_cache_store.rb | 105 + .../action_controller/session_management.rb | 142 + .../lib/action_controller/status_codes.rb | 88 + .../lib/action_controller/streaming.rb | 138 + .../rescues/_request_and_response.rhtml | 44 + .../templates/rescues/_trace.rhtml | 26 + .../templates/rescues/diagnostics.rhtml | 11 + .../templates/rescues/layout.rhtml | 29 + .../templates/rescues/missing_template.rhtml | 2 + .../templates/rescues/routing_error.rhtml | 10 + .../templates/rescues/template_error.rhtml | 21 + .../templates/rescues/unknown_action.rhtml | 2 + .../templates/scaffolds/edit.rhtml | 7 + .../templates/scaffolds/layout.rhtml | 69 + .../templates/scaffolds/list.rhtml | 27 + .../templates/scaffolds/new.rhtml | 6 + .../templates/scaffolds/show.rhtml | 9 + .../lib/action_controller/test_process.rb | 504 +++ .../lib/action_controller/url_rewriter.rb | 108 + .../vendor/html-scanner/html/document.rb | 65 + .../vendor/html-scanner/html/node.rb | 530 +++ .../vendor/html-scanner/html/selector.rb | 823 +++++ .../vendor/html-scanner/html/tokenizer.rb | 105 + .../vendor/html-scanner/html/version.rb | 11 + .../lib/action_controller/vendor/xml_node.rb | 97 + .../lib/action_controller/verification.rb | 107 + .../rails/actionpack/lib/action_pack.rb | 24 + .../actionpack/lib/action_pack/version.rb | 9 + .../rails/actionpack/lib/action_view.rb | 32 + .../rails/actionpack/lib/action_view/base.rb | 538 +++ .../lib/action_view/compiled_templates.rb | 70 + .../helpers/active_record_helper.rb | 237 ++ .../action_view/helpers/asset_tag_helper.rb | 218 ++ .../action_view/helpers/benchmark_helper.rb | 24 + .../lib/action_view/helpers/cache_helper.rb | 10 + .../lib/action_view/helpers/capture_helper.rb | 128 + .../lib/action_view/helpers/date_helper.rb | 429 +++ .../lib/action_view/helpers/debug_helper.rb | 17 + .../action_view/helpers/deprecated_helper.rb | 34 + .../lib/action_view/helpers/form_helper.rb | 446 +++ .../helpers/form_options_helper.rb | 363 ++ .../action_view/helpers/form_tag_helper.rb | 176 + .../helpers/java_script_macros_helper.rb | 233 ++ .../action_view/helpers/javascript_helper.rb | 193 + .../helpers/javascripts/controls.js | 833 +++++ .../helpers/javascripts/dragdrop.js | 942 +++++ .../helpers/javascripts/effects.js | 1088 ++++++ .../helpers/javascripts/prototype.js | 2515 +++++++++++++ .../lib/action_view/helpers/number_helper.rb | 155 + .../action_view/helpers/pagination_helper.rb | 86 + .../action_view/helpers/prototype_helper.rb | 876 +++++ .../helpers/scriptaculous_helper.rb | 140 + .../lib/action_view/helpers/tag_helper.rb | 103 + .../lib/action_view/helpers/text_helper.rb | 406 +++ .../lib/action_view/helpers/url_helper.rb | 406 +++ .../actionpack/lib/action_view/partials.rb | 128 + .../lib/action_view/template_error.rb | 110 + .../rails/actionpack/test/abstract_unit.rb | 16 + .../actionpack/test/active_record_unit.rb | 116 + .../active_record_assertions_test.rb | 92 + .../activerecord/active_record_store_test.rb | 142 + .../test/activerecord/pagination_test.rb | 156 + .../controller/action_pack_assertions_test.rb | 610 ++++ .../test/controller/addresses_render_test.rb | 45 + .../test/controller/assert_select_test.rb | 576 +++ .../actionpack/test/controller/base_test.rb | 136 + .../test/controller/benchmark_test.rb | 33 + .../test/controller/caching_test.rb | 228 ++ .../test/controller/capture_test.rb | 82 + .../actionpack/test/controller/cgi_test.rb | 440 +++ .../test/controller/components_test.rb | 151 + .../test/controller/content_type_test.rb | 139 + .../app/controllers/admin/user_controller.rb | 0 .../app/controllers/user_controller.rb | 0 .../bad_plugin/lib/plugin_controller.rb | 0 .../actionpack/test/controller/cookie_test.rb | 88 + .../test/controller/custom_handler_test.rb | 41 + .../deprecated_instance_variables_test.rb | 48 + .../deprecated_base_methods_test.rb | 60 + .../test/controller/fake_controllers.rb | 16 + .../test/controller/filter_params_test.rb | 42 + .../test/controller/filters_test.rb | 695 ++++ .../actionpack/test/controller/flash_test.rb | 102 + .../controller/fragment_store_setting_test.rb | 45 + .../actionpack/test/controller/helper_test.rb | 187 + .../test/controller/integration_test.rb | 154 + .../actionpack/test/controller/layout_test.rb | 187 + .../test/controller/mime_responds_test.rb | 351 ++ .../test/controller/mime_type_test.rb | 33 + .../test/controller/new_render_test.rb | 750 ++++ .../test/controller/raw_post_test.rb | 68 + .../test/controller/redirect_test.rb | 156 + .../actionpack/test/controller/render_test.rb | 293 ++ .../test/controller/request_test.rb | 317 ++ .../test/controller/resources_test.rb | 482 +++ .../test/controller/routing_test.rb | 1801 ++++++++++ .../test/controller/selector_test.rb | 628 ++++ .../test/controller/send_file_test.rb | 117 + .../controller/session_management_test.rb | 156 + .../actionpack/test/controller/test_test.rb | 495 +++ .../test/controller/url_rewriter_test.rb | 115 + .../test/controller/verification_test.rb | 227 ++ .../test/controller/webservice_test.rb | 248 ++ .../test/fixtures/addresses/list.rhtml | 1 + .../actionpack/test/fixtures/companies.yml | 24 + .../rails/actionpack/test/fixtures/company.rb | 9 + ...default_content_types_for_respond_to.rhtml | 1 + .../render_default_for_rhtml.rhtml | 1 + .../content_type/render_default_for_rjs.rjs | 1 + .../content_type/render_default_for_rxml.rxml | 1 + .../test/fixtures/db_definitions/sqlite.sql | 42 + .../_cookies_ivar.rhtml | 1 + .../_cookies_method.rhtml | 1 + .../_flash_ivar.rhtml | 1 + .../_flash_method.rhtml | 1 + .../_headers_ivar.rhtml | 1 + .../_headers_method.rhtml | 1 + .../_params_ivar.rhtml | 1 + .../_params_method.rhtml | 1 + .../_request_ivar.rhtml | 1 + .../_request_method.rhtml | 1 + .../_response_ivar.rhtml | 1 + .../_response_method.rhtml | 1 + .../_session_ivar.rhtml | 1 + .../_session_method.rhtml | 1 + .../actionpack/test/fixtures/developer.rb | 7 + .../actionpack/test/fixtures/developers.yml | 21 + .../test/fixtures/developers_projects.yml | 13 + .../test/fixtures/fun/games/hello_world.rhtml | 1 + .../test/fixtures/helpers/abc_helper.rb | 5 + .../test/fixtures/helpers/fun/games_helper.rb | 3 + .../test/fixtures/helpers/fun/pdf_helper.rb | 3 + .../controller_name_space/nested.rhtml | 1 + .../fixtures/layout_tests/layouts/item.rhtml | 1 + .../layout_tests/layouts/layout_test.rhtml | 1 + .../layouts/third_party_template_library.mab | 1 + .../fixtures/layout_tests/views/hello.rhtml | 1 + .../test/fixtures/layouts/builder.rxml | 3 + .../test/fixtures/layouts/standard.rhtml | 1 + .../fixtures/layouts/talk_from_action.rhtml | 2 + .../test/fixtures/layouts/yield.rhtml | 2 + .../test/fixtures/multipart/binary_file | Bin 0 -> 19846 bytes .../test/fixtures/multipart/large_text_file | 10 + .../test/fixtures/multipart/mixed_files | Bin 0 -> 19937 bytes .../test/fixtures/multipart/mona_lisa.jpg | Bin 0 -> 159528 bytes .../test/fixtures/multipart/single_parameter | 5 + .../test/fixtures/multipart/text_file | 10 + .../rails/actionpack/test/fixtures/project.rb | 3 + .../actionpack/test/fixtures/projects.yml | 7 + .../test/fixtures/public/images/rails.png | Bin 0 -> 1787 bytes .../public/javascripts/application.js | 1 + .../actionpack/test/fixtures/replies.yml | 13 + .../rails/actionpack/test/fixtures/reply.rb | 5 + .../respond_to/all_types_with_layout.rhtml | 1 + .../respond_to/all_types_with_layout.rjs | 1 + .../respond_to/layouts/standard.rhtml | 1 + .../fixtures/respond_to/using_defaults.rhtml | 1 + .../fixtures/respond_to/using_defaults.rjs | 1 + .../fixtures/respond_to/using_defaults.rxml | 1 + .../using_defaults_with_type_list.rhtml | 1 + .../using_defaults_with_type_list.rjs | 1 + .../using_defaults_with_type_list.rxml | 1 + .../test/fixtures/scope/test/modgreet.rhtml | 1 + .../test/fixtures/test/_customer.rhtml | 1 + .../fixtures/test/_customer_greeting.rhtml | 1 + .../test/fixtures/test/_hash_object.rhtml | 1 + .../actionpack/test/fixtures/test/_hello.rxml | 1 + .../test/fixtures/test/_partial_only.rhtml | 1 + .../test/fixtures/test/_person.rhtml | 2 + .../fixtures/test/action_talk_to_layout.rhtml | 2 + .../fixtures/test/block_content_for.rhtml | 2 + .../test/fixtures/test/capturing.rhtml | 4 + .../test/fixtures/test/content_for.rhtml | 2 + .../test/fixtures/test/delete_with_js.rjs | 2 + .../dot.directory/render_file_with_ivar.rhtml | 1 + .../test/fixtures/test/enum_rjs_test.rjs | 6 + .../test/fixtures/test/erb_content_for.rhtml | 2 + .../test/fixtures/test/greeting.rhtml | 1 + .../actionpack/test/fixtures/test/hello.rxml | 4 + .../test/fixtures/test/hello_world.rhtml | 1 + .../test/fixtures/test/hello_world.rxml | 3 + .../fixtures/test/hello_world_container.rxml | 3 + .../test/hello_world_with_layout_false.rhtml | 1 + .../test/fixtures/test/hello_xml_world.rxml | 11 + .../actionpack/test/fixtures/test/list.rhtml | 1 + .../test/non_erb_block_content_for.rxml | 4 + .../fixtures/test/potential_conflicts.rhtml | 4 + .../fixtures/test/render_file_with_ivar.rhtml | 1 + .../test/render_file_with_locals.rhtml | 1 + .../fixtures/test/render_to_string_test.rhtml | 1 + .../test/update_element_with_capture.rhtml | 9 + .../rails/actionpack/test/fixtures/topic.rb | 3 + .../rails/actionpack/test/fixtures/topics.yml | 22 + .../template/active_record_helper_test.rb | 204 ++ .../test/template/asset_tag_helper_test.rb | 232 ++ .../test/template/benchmark_helper_test.rb | 72 + .../test/template/compiled_templates_test.rb | 135 + .../test/template/date_helper_test.rb | 1322 +++++++ .../test/template/deprecated_helper_test.rb | 36 + .../deprecated_instance_variables_test.rb | 43 + .../test/template/form_helper_test.rb | 499 +++ .../test/template/form_options_helper_test.rb | 489 +++ .../test/template/form_tag_helper_test.rb | 172 + .../java_script_macros_helper_test.rb | 109 + .../test/template/javascript_helper_test.rb | 67 + .../test/template/number_helper_test.rb | 92 + .../test/template/prototype_helper_test.rb | 466 +++ .../template/scriptaculous_helper_test.rb | 90 + .../test/template/tag_helper_test.rb | 69 + .../test/template/text_helper_test.rb | 349 ++ .../test/template/url_helper_test.rb | 366 ++ .../rails/actionpack/test/testing_sandbox.rb | 11 + .../vendor/rails/actionwebservice/CHANGELOG | 279 ++ .../vendor/rails/actionwebservice/MIT-LICENSE | 21 + .../vendor/rails/actionwebservice/README | 364 ++ .../vendor/rails/actionwebservice/Rakefile | 171 + .../vendor/rails/actionwebservice/TODO | 32 + .../examples/googlesearch/README | 143 + .../autoloading/google_search_api.rb | 50 + .../autoloading/google_search_controller.rb | 57 + .../delegated/google_search_service.rb | 108 + .../delegated/search_controller.rb | 7 + .../googlesearch/direct/google_search_api.rb | 50 + .../googlesearch/direct/search_controller.rb | 58 + .../examples/metaWeblog/README | 17 + .../examples/metaWeblog/apis/blogger_api.rb | 60 + .../metaWeblog/apis/blogger_service.rb | 34 + .../metaWeblog/apis/meta_weblog_api.rb | 67 + .../metaWeblog/apis/meta_weblog_service.rb | 48 + .../controllers/xmlrpc_controller.rb | 16 + .../vendor/rails/actionwebservice/install.rb | 30 + .../lib/action_web_service.rb | 66 + .../lib/action_web_service/api.rb | 249 ++ .../lib/action_web_service/base.rb | 42 + .../lib/action_web_service/casting.rb | 136 + .../lib/action_web_service/client.rb | 3 + .../lib/action_web_service/client/base.rb | 28 + .../action_web_service/client/soap_client.rb | 113 + .../client/xmlrpc_client.rb | 58 + .../lib/action_web_service/container.rb | 3 + .../container/action_controller_container.rb | 93 + .../container/delegated_container.rb | 86 + .../container/direct_container.rb | 69 + .../lib/action_web_service/dispatcher.rb | 2 + .../action_web_service/dispatcher/abstract.rb | 203 ++ .../action_controller_dispatcher.rb | 376 ++ .../lib/action_web_service/invocation.rb | 202 ++ .../lib/action_web_service/protocol.rb | 4 + .../action_web_service/protocol/abstract.rb | 112 + .../action_web_service/protocol/discovery.rb | 37 + .../protocol/soap_protocol.rb | 176 + .../protocol/soap_protocol/marshaler.rb | 241 ++ .../protocol/xmlrpc_protocol.rb | 110 + .../lib/action_web_service/scaffolding.rb | 283 ++ .../lib/action_web_service/struct.rb | 68 + .../support/class_inheritable_options.rb | 26 + .../support/signature_types.rb | 222 ++ .../templates/scaffolds/layout.rhtml | 65 + .../templates/scaffolds/methods.rhtml | 6 + .../templates/scaffolds/parameters.rhtml | 29 + .../templates/scaffolds/result.rhtml | 30 + .../lib/action_web_service/test_invoke.rb | 110 + .../lib/action_web_service/version.rb | 9 + .../vendor/rails/actionwebservice/setup.rb | 1379 ++++++++ .../actionwebservice/test/abstract_client.rb | 183 + .../test/abstract_dispatcher.rb | 505 +++ .../actionwebservice/test/abstract_unit.rb | 45 + .../rails/actionwebservice/test/api_test.rb | 102 + .../test/apis/auto_load_api.rb | 3 + .../test/apis/broken_auto_load_api.rb | 2 + .../rails/actionwebservice/test/base_test.rb | 42 + .../actionwebservice/test/casting_test.rb | 86 + .../actionwebservice/test/client_soap_test.rb | 152 + .../test/client_xmlrpc_test.rb | 151 + .../actionwebservice/test/container_test.rb | 73 + .../dispatcher_action_controller_soap_test.rb | 137 + ...ispatcher_action_controller_xmlrpc_test.rb | 59 + .../test/fixtures/db_definitions/mysql.sql | 7 + .../actionwebservice/test/fixtures/users.yml | 10 + .../vendor/rails/actionwebservice/test/gencov | 3 + .../actionwebservice/test/invocation_test.rb | 185 + .../vendor/rails/actionwebservice/test/run | 6 + .../test/scaffolded_controller_test.rb | 146 + .../actionwebservice/test/struct_test.rb | 52 + .../actionwebservice/test/test_invoke_test.rb | 112 + .../vendor/rails/activerecord/CHANGELOG | 3043 ++++++++++++++++ .../vendor/rails/activerecord/MIT-LICENSE | 20 + .../vendor/rails/activerecord/README | 360 ++ .../rails/activerecord/RUNNING_UNIT_TESTS | 64 + .../vendor/rails/activerecord/Rakefile | 226 ++ .../activerecord/benchmarks/benchmark.rb | 26 + .../benchmarks/mysql_benchmark.rb | 19 + .../activerecord/examples/associations.png | Bin 0 -> 40623 bytes .../activerecord/examples/associations.rb | 87 + .../activerecord/examples/shared_setup.rb | 15 + .../rails/activerecord/examples/validation.rb | 85 + .../vendor/rails/activerecord/install.rb | 30 + .../rails/activerecord/lib/active_record.rb | 85 + .../lib/active_record/acts/list.rb | 244 ++ .../lib/active_record/acts/nested_set.rb | 211 ++ .../lib/active_record/acts/tree.rb | 89 + .../lib/active_record/aggregations.rb | 191 + .../lib/active_record/associations.rb | 1627 +++++++++ .../associations/association_collection.rb | 190 + .../associations/association_proxy.rb | 158 + .../associations/belongs_to_association.rb | 56 + .../belongs_to_polymorphic_association.rb | 50 + .../has_and_belongs_to_many_association.rb | 169 + .../associations/has_many_association.rb | 210 ++ .../has_many_through_association.rb | 247 ++ .../associations/has_one_association.rb | 80 + .../lib/active_record/attribute_methods.rb | 75 + .../activerecord/lib/active_record/base.rb | 2164 ++++++++++++ .../lib/active_record/calculations.rb | 270 ++ .../lib/active_record/callbacks.rb | 367 ++ .../abstract/connection_specification.rb | 279 ++ .../abstract/database_statements.rb | 130 + .../connection_adapters/abstract/quoting.rb | 58 + .../abstract/schema_definitions.rb | 343 ++ .../abstract/schema_statements.rb | 303 ++ .../connection_adapters/abstract_adapter.rb | 161 + .../connection_adapters/db2_adapter.rb | 228 ++ .../connection_adapters/firebird_adapter.rb | 728 ++++ .../connection_adapters/frontbase_adapter.rb | 861 +++++ .../connection_adapters/mysql_adapter.rb | 414 +++ .../connection_adapters/openbase_adapter.rb | 350 ++ .../connection_adapters/oracle_adapter.rb | 689 ++++ .../connection_adapters/postgresql_adapter.rb | 584 +++ .../connection_adapters/sqlite_adapter.rb | 407 +++ .../connection_adapters/sqlserver_adapter.rb | 591 ++++ .../connection_adapters/sybase_adapter.rb | 662 ++++ .../active_record/deprecated_associations.rb | 104 + .../lib/active_record/deprecated_finders.rb | 44 + .../lib/active_record/fixtures.rb | 628 ++++ .../lib/active_record/locking/optimistic.rb | 106 + .../lib/active_record/locking/pessimistic.rb | 77 + .../lib/active_record/migration.rb | 394 +++ .../lib/active_record/observer.rb | 178 + .../lib/active_record/query_cache.rb | 64 + .../lib/active_record/reflection.rb | 222 ++ .../activerecord/lib/active_record/schema.rb | 58 + .../lib/active_record/schema_dumper.rb | 149 + .../lib/active_record/timestamp.rb | 51 + .../lib/active_record/transactions.rb | 136 + .../lib/active_record/validations.rb | 843 +++++ .../lib/active_record/vendor/db2.rb | 362 ++ .../lib/active_record/vendor/mysql.rb | 1214 +++++++ .../lib/active_record/vendor/simple.rb | 693 ++++ .../activerecord/lib/active_record/version.rb | 9 + .../active_record/wrappers/yaml_wrapper.rb | 15 + .../lib/active_record/wrappings.rb | 58 + .../lib/active_record/xml_serialization.rb | 308 ++ .../test/aaa_create_tables_test.rb | 59 + .../rails/activerecord/test/abstract_unit.rb | 77 + .../test/active_schema_test_mysql.rb | 31 + .../rails/activerecord/test/adapter_test.rb | 87 + .../test/adapter_test_sqlserver.rb | 81 + .../activerecord/test/aggregations_test.rb | 95 + .../vendor/rails/activerecord/test/all.sh | 8 + .../rails/activerecord/test/ar_schema_test.rb | 33 + .../test/association_inheritance_reload.rb | 14 + .../test/associations/callbacks_test.rb | 126 + .../cascaded_eager_loading_test.rb | 138 + .../test/associations/eager_test.rb | 393 +++ .../test/associations/extension_test.rb | 42 + .../test/associations/join_model_test.rb | 497 +++ .../activerecord/test/associations_test.rb | 1809 ++++++++++ .../test/attribute_methods_test.rb | 49 + .../rails/activerecord/test/base_test.rb | 1586 +++++++++ .../rails/activerecord/test/binary_test.rb | 37 + .../activerecord/test/calculations_test.rb | 219 ++ .../rails/activerecord/test/callbacks_test.rb | 377 ++ .../test/class_inheritable_attributes_test.rb | 32 + .../activerecord/test/column_alias_test.rb | 17 + .../test/connection_test_firebird.rb | 8 + .../test/connections/native_db2/connection.rb | 25 + .../connections/native_firebird/connection.rb | 26 + .../native_frontbase/connection.rb | 27 + .../connections/native_mysql/connection.rb | 24 + .../connections/native_openbase/connection.rb | 21 + .../connections/native_oracle/connection.rb | 27 + .../native_postgresql/connection.rb | 23 + .../connections/native_sqlite/connection.rb | 34 + .../connections/native_sqlite3/connection.rb | 34 + .../native_sqlite3/in_memory_connection.rb | 18 + .../native_sqlserver/connection.rb | 23 + .../native_sqlserver_odbc/connection.rb | 25 + .../connections/native_sybase/connection.rb | 23 + .../activerecord/test/copy_table_sqlite.rb | 64 + .../test/datatype_test_postgresql.rb | 52 + .../test/default_test_firebird.rb | 16 + .../rails/activerecord/test/defaults_test.rb | 60 + .../test/deprecated_associations_test.rb | 396 +++ .../test/deprecated_finder_test.rb | 151 + .../activerecord/test/empty_date_time_test.rb | 25 + .../rails/activerecord/test/finder_test.rb | 504 +++ .../activerecord/test/fixtures/accounts.yml | 28 + .../activerecord/test/fixtures/author.rb | 99 + .../test/fixtures/author_favorites.yml | 4 + .../activerecord/test/fixtures/authors.yml | 7 + .../activerecord/test/fixtures/auto_id.rb | 4 + .../bad_fixtures/attr_with_numeric_first_char | 1 + .../fixtures/bad_fixtures/attr_with_spaces | 1 + .../test/fixtures/bad_fixtures/blank_line | 3 + .../bad_fixtures/duplicate_attributes | 3 + .../test/fixtures/bad_fixtures/missing_value | 1 + .../activerecord/test/fixtures/binary.rb | 2 + .../activerecord/test/fixtures/categories.yml | 14 + .../categories/special_categories.yml | 9 + .../subsubdir/arbitrary_filename.yml | 4 + .../test/fixtures/categories_ordered.yml | 7 + .../test/fixtures/categories_posts.yml | 23 + .../test/fixtures/categorization.rb | 5 + .../test/fixtures/categorizations.yml | 17 + .../activerecord/test/fixtures/category.rb | 20 + .../activerecord/test/fixtures/column_name.rb | 3 + .../activerecord/test/fixtures/comment.rb | 23 + .../activerecord/test/fixtures/comments.yml | 59 + .../activerecord/test/fixtures/companies.yml | 55 + .../activerecord/test/fixtures/company.rb | 107 + .../test/fixtures/company_in_module.rb | 59 + .../activerecord/test/fixtures/computer.rb | 3 + .../activerecord/test/fixtures/computers.yml | 4 + .../activerecord/test/fixtures/course.rb | 3 + .../activerecord/test/fixtures/courses.yml | 7 + .../activerecord/test/fixtures/customer.rb | 55 + .../activerecord/test/fixtures/customers.yml | 17 + .../test/fixtures/db_definitions/db2.drop.sql | 32 + .../test/fixtures/db_definitions/db2.sql | 231 ++ .../fixtures/db_definitions/db22.drop.sql | 2 + .../test/fixtures/db_definitions/db22.sql | 5 + .../fixtures/db_definitions/firebird.drop.sql | 63 + .../test/fixtures/db_definitions/firebird.sql | 304 ++ .../db_definitions/firebird2.drop.sql | 2 + .../fixtures/db_definitions/firebird2.sql | 6 + .../db_definitions/frontbase.drop.sql | 32 + .../fixtures/db_definitions/frontbase.sql | 268 ++ .../db_definitions/frontbase2.drop.sql | 1 + .../fixtures/db_definitions/frontbase2.sql | 4 + .../fixtures/db_definitions/mysql.drop.sql | 32 + .../test/fixtures/db_definitions/mysql.sql | 234 ++ .../fixtures/db_definitions/mysql2.drop.sql | 2 + .../test/fixtures/db_definitions/mysql2.sql | 5 + .../fixtures/db_definitions/openbase.drop.sql | 2 + .../test/fixtures/db_definitions/openbase.sql | 302 ++ .../db_definitions/openbase2.drop.sql | 2 + .../fixtures/db_definitions/openbase2.sql | 7 + .../fixtures/db_definitions/oracle.drop.sql | 65 + .../test/fixtures/db_definitions/oracle.sql | 325 ++ .../fixtures/db_definitions/oracle2.drop.sql | 2 + .../test/fixtures/db_definitions/oracle2.sql | 6 + .../db_definitions/postgresql.drop.sql | 37 + .../fixtures/db_definitions/postgresql.sql | 263 ++ .../db_definitions/postgresql2.drop.sql | 2 + .../fixtures/db_definitions/postgresql2.sql | 5 + .../test/fixtures/db_definitions/schema.rb | 60 + .../fixtures/db_definitions/sqlite.drop.sql | 32 + .../test/fixtures/db_definitions/sqlite.sql | 215 ++ .../fixtures/db_definitions/sqlite2.drop.sql | 2 + .../test/fixtures/db_definitions/sqlite2.sql | 5 + .../db_definitions/sqlserver.drop.sql | 34 + .../fixtures/db_definitions/sqlserver.sql | 243 ++ .../db_definitions/sqlserver2.drop.sql | 2 + .../fixtures/db_definitions/sqlserver2.sql | 5 + .../fixtures/db_definitions/sybase.drop.sql | 34 + .../test/fixtures/db_definitions/sybase.sql | 218 ++ .../fixtures/db_definitions/sybase2.drop.sql | 4 + .../test/fixtures/db_definitions/sybase2.sql | 5 + .../activerecord/test/fixtures/default.rb | 2 + .../activerecord/test/fixtures/developer.rb | 52 + .../activerecord/test/fixtures/developers.yml | 21 + .../test/fixtures/developers_projects.yml | 17 + .../david_action_controller | 3 + .../developers_projects/david_active_record | 3 + .../developers_projects/jamis_active_record | 2 + .../rails/activerecord/test/fixtures/edge.rb | 5 + .../activerecord/test/fixtures/edges.yml | 6 + .../activerecord/test/fixtures/entrant.rb | 3 + .../activerecord/test/fixtures/entrants.yml | 14 + .../test/fixtures/fk_test_has_fk.yml | 3 + .../test/fixtures/fk_test_has_pk.yml | 2 + .../activerecord/test/fixtures/flowers.jpg | Bin 0 -> 19512 bytes .../test/fixtures/funny_jokes.yml | 10 + .../rails/activerecord/test/fixtures/joke.rb | 6 + .../activerecord/test/fixtures/keyboard.rb | 3 + .../test/fixtures/legacy_thing.rb | 3 + .../test/fixtures/legacy_things.yml | 3 + .../migrations/1_people_have_last_names.rb | 9 + .../migrations/2_we_need_reminders.rb | 12 + .../migrations/3_innocent_jointable.rb | 12 + .../1_give_me_big_numbers.rb | 15 + .../1_people_have_last_names.rb | 9 + .../2_we_need_reminders.rb | 12 + .../migrations_with_duplicate/3_foo.rb | 7 + .../3_innocent_jointable.rb | 12 + .../1000_people_have_middle_names.rb | 9 + .../1_people_have_last_names.rb | 9 + .../3_we_need_reminders.rb | 12 + .../4_innocent_jointable.rb | 12 + .../test/fixtures/mixed_case_monkey.rb | 3 + .../test/fixtures/mixed_case_monkeys.yml | 6 + .../rails/activerecord/test/fixtures/mixin.rb | 63 + .../activerecord/test/fixtures/mixins.yml | 127 + .../rails/activerecord/test/fixtures/movie.rb | 5 + .../activerecord/test/fixtures/movies.yml | 7 + .../test/fixtures/naked/csv/accounts.csv | 1 + .../test/fixtures/naked/yml/accounts.yml | 1 + .../test/fixtures/naked/yml/companies.yml | 1 + .../test/fixtures/naked/yml/courses.yml | 1 + .../rails/activerecord/test/fixtures/order.rb | 4 + .../activerecord/test/fixtures/people.yml | 3 + .../activerecord/test/fixtures/person.rb | 4 + .../rails/activerecord/test/fixtures/post.rb | 58 + .../activerecord/test/fixtures/posts.yml | 48 + .../activerecord/test/fixtures/project.rb | 27 + .../activerecord/test/fixtures/projects.yml | 7 + .../activerecord/test/fixtures/reader.rb | 4 + .../activerecord/test/fixtures/readers.yml | 4 + .../rails/activerecord/test/fixtures/reply.rb | 37 + .../activerecord/test/fixtures/subject.rb | 4 + .../activerecord/test/fixtures/subscriber.rb | 6 + .../test/fixtures/subscribers/first | 2 + .../test/fixtures/subscribers/second | 2 + .../rails/activerecord/test/fixtures/tag.rb | 7 + .../activerecord/test/fixtures/tagging.rb | 6 + .../activerecord/test/fixtures/taggings.yml | 18 + .../rails/activerecord/test/fixtures/tags.yml | 7 + .../rails/activerecord/test/fixtures/task.rb | 3 + .../activerecord/test/fixtures/tasks.yml | 7 + .../rails/activerecord/test/fixtures/topic.rb | 25 + .../activerecord/test/fixtures/topics.yml | 22 + .../activerecord/test/fixtures/vertex.rb | 9 + .../activerecord/test/fixtures/vertices.yml | 4 + .../rails/activerecord/test/fixtures_test.rb | 401 +++ .../activerecord/test/inheritance_test.rb | 205 ++ .../rails/activerecord/test/lifecycle_test.rb | 137 + .../rails/activerecord/test/locking_test.rb | 190 + .../activerecord/test/method_scoping_test.rb | 416 +++ .../rails/activerecord/test/migration_test.rb | 768 ++++ .../test/migration_test_firebird.rb | 124 + .../test/mixin_nested_set_test.rb | 196 + .../rails/activerecord/test/mixin_test.rb | 550 +++ .../rails/activerecord/test/modules_test.rb | 34 + .../activerecord/test/multiple_db_test.rb | 60 + .../vendor/rails/activerecord/test/pk_test.rb | 104 + .../rails/activerecord/test/readonly_test.rb | 107 + .../activerecord/test/reflection_test.rb | 159 + .../schema_authorization_test_postgresql.rb | 75 + .../activerecord/test/schema_dumper_test.rb | 96 + .../test/schema_test_postgresql.rb | 64 + .../activerecord/test/synonym_test_oracle.rb | 17 + .../test/table_name_test_sqlserver.rb | 23 + .../test/threaded_connections_test.rb | 48 + .../activerecord/test/transactions_test.rb | 230 ++ .../activerecord/test/unconnected_test.rb | 32 + .../activerecord/test/validations_test.rb | 1097 ++++++ .../test/xml_serialization_test.rb | 125 + .../vendor/rails/activesupport/CHANGELOG | 703 ++++ .../vendor/rails/activesupport/MIT-LICENSE | 20 + .../vendor/rails/activesupport/README | 43 + .../vendor/rails/activesupport/Rakefile | 82 + .../vendor/rails/activesupport/install.rb | 30 + .../rails/activesupport/lib/active_support.rb | 44 + .../lib/active_support/binding_of_caller.rb | 84 + .../lib/active_support/breakpoint.rb | 528 +++ .../lib/active_support/caching_tools.rb | 62 + .../lib/active_support/clean_logger.rb | 38 + .../lib/active_support/core_ext.rb | 1 + .../lib/active_support/core_ext/array.rb | 7 + .../core_ext/array/conversions.rb | 72 + .../active_support/core_ext/array/grouping.rb | 55 + .../lib/active_support/core_ext/bigdecimal.rb | 3 + .../core_ext/bigdecimal/formatting.rb | 7 + .../lib/active_support/core_ext/blank.rb | 50 + .../lib/active_support/core_ext/cgi.rb | 5 + .../core_ext/cgi/escape_skipping_slashes.rb | 14 + .../lib/active_support/core_ext/class.rb | 3 + .../core_ext/class/attribute_accessors.rb | 48 + .../core_ext/class/inheritable_attributes.rb | 140 + .../active_support/core_ext/class/removal.rb | 24 + .../lib/active_support/core_ext/date.rb | 6 + .../core_ext/date/conversions.rb | 39 + .../lib/active_support/core_ext/enumerable.rb | 62 + .../lib/active_support/core_ext/exception.rb | 33 + .../lib/active_support/core_ext/hash.rb | 13 + .../core_ext/hash/conversions.rb | 155 + .../lib/active_support/core_ext/hash/diff.rb | 11 + .../core_ext/hash/indifferent_access.rb | 88 + .../lib/active_support/core_ext/hash/keys.rb | 53 + .../core_ext/hash/reverse_merge.rb | 25 + .../lib/active_support/core_ext/integer.rb | 7 + .../core_ext/integer/even_odd.rb | 24 + .../core_ext/integer/inflections.rb | 21 + .../lib/active_support/core_ext/kernel.rb | 4 + .../core_ext/kernel/agnostics.rb | 11 + .../core_ext/kernel/daemonizing.rb | 15 + .../core_ext/kernel/reporting.rb | 51 + .../core_ext/kernel/requires.rb | 24 + .../lib/active_support/core_ext/load_error.rb | 38 + .../lib/active_support/core_ext/logger.rb | 16 + .../lib/active_support/core_ext/module.rb | 7 + .../core_ext/module/aliasing.rb | 58 + .../core_ext/module/attr_internal.rb | 31 + .../core_ext/module/attribute_accessors.rb | 48 + .../core_ext/module/delegation.rb | 41 + .../core_ext/module/inclusion.rb | 11 + .../core_ext/module/introspection.rb | 21 + .../active_support/core_ext/module/loading.rb | 13 + .../lib/active_support/core_ext/name_error.rb | 17 + .../lib/active_support/core_ext/numeric.rb | 7 + .../active_support/core_ext/numeric/bytes.rb | 44 + .../active_support/core_ext/numeric/time.rb | 72 + .../lib/active_support/core_ext/object.rb | 2 + .../core_ext/object/extending.rb | 47 + .../active_support/core_ext/object/misc.rb | 34 + .../lib/active_support/core_ext/pathname.rb | 7 + .../core_ext/pathname/clean_within.rb | 14 + .../lib/active_support/core_ext/proc.rb | 12 + .../lib/active_support/core_ext/range.rb | 5 + .../core_ext/range/conversions.rb | 21 + .../lib/active_support/core_ext/string.rb | 15 + .../active_support/core_ext/string/access.rb | 58 + .../core_ext/string/conversions.rb | 19 + .../core_ext/string/inflections.rb | 153 + .../core_ext/string/iterators.rb | 17 + .../core_ext/string/starts_ends_with.rb | 20 + .../active_support/core_ext/string/unicode.rb | 42 + .../lib/active_support/core_ext/symbol.rb | 12 + .../lib/active_support/core_ext/time.rb | 17 + .../core_ext/time/calculations.rb | 191 + .../core_ext/time/conversions.rb | 33 + .../lib/active_support/dependencies.rb | 539 +++ .../lib/active_support/deprecation.rb | 202 ++ .../lib/active_support/inflections.rb | 52 + .../lib/active_support/inflector.rb | 275 ++ .../activesupport/lib/active_support/json.rb | 48 + .../lib/active_support/json/encoders.rb | 25 + .../lib/active_support/json/encoders/core.rb | 68 + .../lib/active_support/multibyte.rb | 7 + .../lib/active_support/multibyte/chars.rb | 129 + .../multibyte/generators/generate_tables.rb | 149 + .../multibyte/handlers/passthru_handler.rb | 9 + .../multibyte/handlers/utf8_handler.rb | 454 +++ .../multibyte/handlers/utf8_handler_proc.rb | 43 + .../lib/active_support/option_merger.rb | 25 + .../lib/active_support/ordered_options.rb | 44 + .../lib/active_support/reloadable.rb | 60 + .../lib/active_support/values/time_zone.rb | 180 + .../active_support/values/unicode_tables.dat | Bin 0 -> 656156 bytes .../lib/active_support/vendor/builder.rb | 13 + .../vendor/builder/blankslate.rb | 63 + .../active_support/vendor/builder/xchar.rb | 112 + .../active_support/vendor/builder/xmlbase.rb | 145 + .../vendor/builder/xmlevents.rb | 63 + .../vendor/builder/xmlmarkup.rb | 327 ++ .../lib/active_support/vendor/xml_simple.rb | 1021 ++++++ .../lib/active_support/version.rb | 9 + .../lib/active_support/whiny_nil.rb | 38 + .../rails/activesupport/test/abstract_unit.rb | 7 + .../test/autoloading_fixtures/a/b.rb | 2 + .../test/autoloading_fixtures/a/c/d.rb | 2 + .../test/autoloading_fixtures/a/c/e/f.rb | 2 + .../test/autoloading_fixtures/application.rb | 1 + .../test/autoloading_fixtures/class_folder.rb | 3 + .../class_folder/class_folder_subclass.rb | 3 + .../class_folder/inline_class.rb | 2 + .../class_folder/nested_class.rb | 7 + .../test/autoloading_fixtures/conflict.rb | 1 + .../autoloading_fixtures/counting_loader.rb | 5 + .../cross_site_dependency.rb | 2 + .../test/autoloading_fixtures/e.rb | 2 + .../module_folder/inline_class.rb | 2 + .../module_folder/nested_class.rb | 4 + .../module_folder/nested_sibling.rb | 2 + .../module_with_custom_const_missing/a/b.rb | 1 + .../multiple_constant_file.rb | 2 + .../autoloading_fixtures/raises_name_error.rb | 3 + .../raises_no_method_error.rb | 3 + .../activesupport/test/caching_tools_test.rb | 79 + .../activesupport/test/clean_logger_test.rb | 80 + .../test/core_ext/array_ext_test.rb | 182 + .../activesupport/test/core_ext/blank_test.rb | 11 + .../test/core_ext/cgi_ext_test.rb | 14 + .../core_ext/class/attribute_accessor_test.rb | 31 + .../class_inheritable_attributes_test.rb | 208 ++ .../activesupport/test/core_ext/class_test.rb | 36 + .../test/core_ext/date_ext_test.rb | 20 + .../test/core_ext/enumerable_test.rb | 61 + .../test/core_ext/exception_test.rb | 64 + .../test/core_ext/hash_ext_test.rb | 472 +++ .../test/core_ext/integer_ext_test.rb | 37 + .../test/core_ext/kernel_test.rb | 43 + .../test/core_ext/load_error_tests.rb | 16 + .../module/attr_accessor_with_default.rb | 30 + .../core_ext/module/attr_internal_test.rb | 52 + .../module/attribute_accessor_test.rb | 33 + .../module/attribute_aliasing_test.rb | 31 + .../test/core_ext/module_test.rb | 221 ++ .../test/core_ext/name_error_test.rb | 24 + .../test/core_ext/numeric_ext_test.rb | 57 + .../core_ext/object_and_class_ext_test.rb | 151 + .../test/core_ext/pathname_test.rb | 9 + .../activesupport/test/core_ext/proc_test.rb | 11 + .../test/core_ext/range_ext_test.rb | 13 + .../test/core_ext/string_ext_test.rb | 152 + .../test/core_ext/symbol_test.rb | 9 + .../test/core_ext/time_ext_test.rb | 335 ++ .../test/dependencies/check_warnings.rb | 2 + .../test/dependencies/conflict.rb | 1 + .../test/dependencies/cross_site_depender.rb | 3 + .../test/dependencies/mutual_one.rb | 4 + .../test/dependencies/mutual_two.rb | 4 + .../test/dependencies/raises_exception.rb | 3 + .../dependencies/requires_nonexistent0.rb | 1 + .../dependencies/requires_nonexistent1.rb | 1 + .../test/dependencies/service_one.rb | 5 + .../test/dependencies/service_two.rb | 2 + .../activesupport/test/dependencies_test.rb | 741 ++++ .../activesupport/test/deprecation_test.rb | 151 + .../activesupport/test/inflector_test.rb | 404 +++ .../vendor/rails/activesupport/test/json.rb | 87 + .../test/multibyte_chars_test.rb | 164 + .../test/multibyte_conformance.rb | 141 + .../test/multibyte_handler_test.rb | 274 ++ .../activesupport/test/option_merger_test.rb | 50 + .../test/ordered_options_test.rb | 80 + .../activesupport/test/reloadable_test.rb | 123 + .../activesupport/test/time_zone_test.rb | 91 + .../activesupport/test/whiny_nil_test.rb | 38 + .../vendor/rails/cleanlogs.sh | 1 + .../vendor/rails/pushgems.rb | 15 + .../vendor/rails/railties/CHANGELOG | 1366 +++++++ .../vendor/rails/railties/MIT-LICENSE | 20 + .../vendor/rails/railties/README | 182 + .../vendor/rails/railties/Rakefile | 334 ++ .../vendor/rails/railties/bin/about | 3 + .../vendor/rails/railties/bin/breakpointer | 3 + .../vendor/rails/railties/bin/console | 3 + .../vendor/rails/railties/bin/destroy | 3 + .../vendor/rails/railties/bin/generate | 3 + .../railties/bin/performance/benchmarker | 3 + .../rails/railties/bin/performance/profiler | 3 + .../vendor/rails/railties/bin/plugin | 3 + .../rails/railties/bin/process/inspector | 3 + .../vendor/rails/railties/bin/process/reaper | 3 + .../vendor/rails/railties/bin/process/spawner | 3 + .../vendor/rails/railties/bin/rails | 19 + .../vendor/rails/railties/bin/runner | 3 + .../vendor/rails/railties/bin/server | 3 + .../railties/builtin/rails_info/rails/info.rb | 123 + .../rails_info/rails/info_controller.rb | 9 + .../builtin/rails_info/rails/info_helper.rb | 2 + .../rails_info/rails_info_controller.rb | 2 + .../vendor/rails/railties/configs/apache.conf | 40 + .../railties/configs/databases/frontbase.yml | 28 + .../railties/configs/databases/mysql.yml | 48 + .../railties/configs/databases/oracle.yml | 39 + .../railties/configs/databases/postgresql.yml | 44 + .../railties/configs/databases/sqlite2.yml | 16 + .../railties/configs/databases/sqlite3.yml | 19 + .../vendor/rails/railties/configs/empty.log | 0 .../rails/railties/configs/lighttpd.conf | 54 + .../vendor/rails/railties/configs/routes.rb | 23 + .../rails/railties/dispatches/dispatch.fcgi | 24 + .../rails/railties/dispatches/dispatch.rb | 10 + .../rails/railties/dispatches/gateway.cgi | 97 + .../vendor/rails/railties/doc/README_FOR_APP | 2 + .../rails/railties/environments/boot.rb | 45 + .../railties/environments/development.rb | 21 + .../railties/environments/environment.rb | 60 + .../rails/railties/environments/production.rb | 18 + .../rails/railties/environments/test.rb | 19 + .../vendor/rails/railties/fresh_rakefile | 10 + .../rails/railties/helpers/application.rb | 7 + .../railties/helpers/application_helper.rb | 3 + .../rails/railties/helpers/test_helper.rb | 28 + .../vendor/rails/railties/html/404.html | 30 + .../vendor/rails/railties/html/500.html | 30 + .../vendor/rails/railties/html/favicon.ico | 0 .../rails/railties/html/images/rails.png | Bin 0 -> 1787 bytes .../vendor/rails/railties/html/index.html | 277 ++ .../railties/html/javascripts/application.js | 2 + .../railties/html/javascripts/controls.js | 833 +++++ .../railties/html/javascripts/dragdrop.js | 942 +++++ .../railties/html/javascripts/effects.js | 1088 ++++++ .../railties/html/javascripts/prototype.js | 2515 +++++++++++++ .../vendor/rails/railties/html/robots.txt | 1 + .../rails/railties/lib/binding_of_caller.rb | 85 + .../vendor/rails/railties/lib/breakpoint.rb | 553 +++ .../rails/railties/lib/breakpoint_client.rb | 196 + .../rails/railties/lib/code_statistics.rb | 107 + .../vendor/rails/railties/lib/commands.rb | 17 + .../rails/railties/lib/commands/about.rb | 2 + .../railties/lib/commands/breakpointer.rb | 1 + .../rails/railties/lib/commands/console.rb | 25 + .../rails/railties/lib/commands/destroy.rb | 6 + .../rails/railties/lib/commands/generate.rb | 6 + .../rails/railties/lib/commands/ncgi/listener | 86 + .../rails/railties/lib/commands/ncgi/tracker | 69 + .../lib/commands/performance/benchmarker.rb | 24 + .../lib/commands/performance/profiler.rb | 50 + .../rails/railties/lib/commands/plugin.rb | 918 +++++ .../lib/commands/process/inspector.rb | 68 + .../railties/lib/commands/process/reaper.rb | 149 + .../railties/lib/commands/process/spawner.rb | 209 ++ .../railties/lib/commands/process/spinner.rb | 57 + .../rails/railties/lib/commands/runner.rb | 48 + .../rails/railties/lib/commands/server.rb | 39 + .../railties/lib/commands/servers/base.rb | 19 + .../railties/lib/commands/servers/lighttpd.rb | 94 + .../railties/lib/commands/servers/mongrel.rb | 65 + .../railties/lib/commands/servers/webrick.rb | 59 + .../rails/railties/lib/commands/update.rb | 4 + .../vendor/rails/railties/lib/console_app.rb | 27 + .../rails/railties/lib/console_sandbox.rb | 6 + .../railties/lib/console_with_helpers.rb | 23 + .../vendor/rails/railties/lib/dispatcher.rb | 173 + .../vendor/rails/railties/lib/fcgi_handler.rb | 225 ++ .../vendor/rails/railties/lib/initializer.rb | 702 ++++ .../rails/railties/lib/rails/version.rb | 9 + .../rails/railties/lib/rails_generator.rb | 43 + .../railties/lib/rails_generator/base.rb | 261 ++ .../railties/lib/rails_generator/commands.rb | 581 +++ .../rails_generator/generated_attribute.rb | 42 + .../generators/applications/app/USAGE | 16 + .../applications/app/app_generator.rb | 160 + .../generators/components/controller/USAGE | 30 + .../controller/controller_generator.rb | 37 + .../controller/templates/controller.rb | 10 + .../controller/templates/functional_test.rb | 18 + .../components/controller/templates/helper.rb | 2 + .../controller/templates/view.rhtml | 2 + .../components/integration_test/USAGE | 14 + .../integration_test_generator.rb | 16 + .../templates/integration_test.rb | 10 + .../generators/components/mailer/USAGE | 18 + .../components/mailer/mailer_generator.rb | 34 + .../components/mailer/templates/fixture.rhtml | 3 + .../components/mailer/templates/mailer.rb | 13 + .../components/mailer/templates/unit_test.rb | 37 + .../components/mailer/templates/view.rhtml | 3 + .../generators/components/migration/USAGE | 14 + .../migration/migration_generator.rb | 7 + .../migration/templates/migration.rb | 7 + .../generators/components/model/USAGE | 26 + .../components/model/model_generator.rb | 38 + .../components/model/templates/fixtures.yml | 11 + .../components/model/templates/migration.rb | 13 + .../components/model/templates/model.rb | 2 + .../components/model/templates/unit_test.rb | 10 + .../generators/components/observer/USAGE | 15 + .../components/observer/observer_generator.rb | 16 + .../components/observer/templates/observer.rb | 2 + .../observer/templates/unit_test.rb | 10 + .../generators/components/plugin/USAGE | 35 + .../components/plugin/plugin_generator.rb | 38 + .../components/plugin/templates/README | 4 + .../components/plugin/templates/Rakefile | 22 + .../components/plugin/templates/USAGE | 8 + .../components/plugin/templates/generator.rb | 8 + .../components/plugin/templates/init.rb | 1 + .../components/plugin/templates/install.rb | 1 + .../components/plugin/templates/plugin.rb | 1 + .../components/plugin/templates/tasks.rake | 4 + .../components/plugin/templates/uninstall.rb | 1 + .../components/plugin/templates/unit_test.rb | 8 + .../components/resource/resource_generator.rb | 76 + .../components/resource/templates/USAGE | 18 + .../resource/templates/controller.rb | 2 + .../resource/templates/fixtures.yml | 11 + .../resource/templates/functional_test.rb | 20 + .../components/resource/templates/helper.rb | 2 + .../resource/templates/migration.rb | 13 + .../components/resource/templates/model.rb | 2 + .../resource/templates/unit_test.rb | 10 + .../generators/components/scaffold/USAGE | 32 + .../components/scaffold/scaffold_generator.rb | 193 + .../scaffold/templates/controller.rb | 58 + .../components/scaffold/templates/form.rhtml | 3 + .../scaffold/templates/form_scaffolding.rhtml | 1 + .../scaffold/templates/functional_test.rb | 102 + .../components/scaffold/templates/helper.rb | 2 + .../scaffold/templates/layout.rhtml | 17 + .../components/scaffold/templates/style.css | 74 + .../scaffold/templates/view_edit.rhtml | 9 + .../scaffold/templates/view_list.rhtml | 27 + .../scaffold/templates/view_new.rhtml | 8 + .../scaffold/templates/view_show.rhtml | 8 + .../components/scaffold_resource/USAGE | 29 + .../scaffold_resource_generator.rb | 92 + .../scaffold_resource/templates/controller.rb | 79 + .../scaffold_resource/templates/fixtures.yml | 11 + .../templates/functional_test.rb | 57 + .../scaffold_resource/templates/helper.rb | 2 + .../scaffold_resource/templates/layout.rhtml | 17 + .../scaffold_resource/templates/migration.rb | 13 + .../scaffold_resource/templates/model.rb | 2 + .../scaffold_resource/templates/style.css | 74 + .../scaffold_resource/templates/unit_test.rb | 10 + .../templates/view_edit.rhtml | 19 + .../templates/view_index.rhtml | 24 + .../templates/view_new.rhtml | 18 + .../templates/view_show.rhtml | 10 + .../components/session_migration/USAGE | 15 + .../session_migration_generator.rb | 18 + .../session_migration/templates/migration.rb | 16 + .../generators/components/web_service/USAGE | 28 + .../web_service/templates/api_definition.rb | 5 + .../web_service/templates/controller.rb | 8 + .../web_service/templates/functional_test.rb | 19 + .../web_service/web_service_generator.rb | 29 + .../railties/lib/rails_generator/lookup.rb | 209 ++ .../railties/lib/rails_generator/manifest.rb | 53 + .../railties/lib/rails_generator/options.rb | 143 + .../railties/lib/rails_generator/scripts.rb | 83 + .../lib/rails_generator/scripts/destroy.rb | 7 + .../lib/rails_generator/scripts/generate.rb | 7 + .../lib/rails_generator/scripts/update.rb | 12 + .../lib/rails_generator/simple_logger.rb | 46 + .../railties/lib/rails_generator/spec.rb | 44 + .../rails/railties/lib/railties_path.rb | 1 + .../rails/railties/lib/ruby_version_check.rb | 17 + .../vendor/rails/railties/lib/rubyprof_ext.rb | 35 + .../rails/railties/lib/tasks/databases.rake | 187 + .../railties/lib/tasks/documentation.rake | 82 + .../rails/railties/lib/tasks/framework.rake | 112 + .../vendor/rails/railties/lib/tasks/log.rake | 9 + .../vendor/rails/railties/lib/tasks/misc.rake | 4 + .../lib/tasks/pre_namespace_aliases.rake | 53 + .../vendor/rails/railties/lib/tasks/rails.rb | 8 + .../rails/railties/lib/tasks/statistics.rake | 18 + .../rails/railties/lib/tasks/testing.rake | 120 + .../vendor/rails/railties/lib/tasks/tmp.rake | 37 + .../vendor/rails/railties/lib/test_help.rb | 19 + .../rails/railties/lib/webrick_server.rb | 166 + .../rails/railties/test/abstract_unit.rb | 20 + .../rails/railties/test/dispatcher_test.rb | 141 + .../railties/test/fcgi_dispatcher_test.rb | 294 ++ .../fixtures/environment_with_constant.rb | 1 + .../missing_class/missing_class_generator.rb | 0 .../generators/working/working_generator.rb | 2 + .../fixtures/plugins/default/stubby/init.rb | 7 + .../default/stubby/lib/stubby_mixin.rb | 2 + .../rails/railties/test/initializer_test.rb | 33 + .../rails/railties/test/mocks/dispatcher.rb | 13 + .../vendor/rails/railties/test/mocks/fcgi.rb | 15 + .../rails/railties/test/mocks/routes.rb | 6 + .../railties/test/mocks/stubbed_breakpoint.rb | 2 + .../railties/test/mocks/stubbed_kernel.rb | 5 + .../vendor/rails/railties/test/plugin_test.rb | 111 + .../railties/test/rails_generator_test.rb | 127 + .../test/rails_info_controller_test.rb | 48 + .../rails/railties/test/rails_info_test.rb | 98 + .../vendor/rails/release.rb | 25 + .../vendor/selenium/Blank.html | 8 + .../vendor/selenium/InjectedRemoteRunner.html | 8 + .../vendor/selenium/RemoteRunner.html | 109 + .../vendor/selenium/SeleniumLog.html | 74 + .../vendor/selenium/TestPrompt.html | 123 + .../vendor/selenium/TestRunner-splash.html | 55 + .../vendor/selenium/TestRunner.hta | 175 + .../vendor/selenium/TestRunner.html | 175 + .../vendor/selenium/domviewer/butmin.gif | Bin 0 -> 843 bytes .../vendor/selenium/domviewer/butplus.gif | Bin 0 -> 848 bytes .../vendor/selenium/domviewer/domviewer.css | 298 ++ .../vendor/selenium/domviewer/domviewer.html | 16 + .../selenium/domviewer/selenium-domviewer.js | 205 ++ .../vendor/selenium/icons/all.png | Bin 0 -> 662 bytes .../vendor/selenium/icons/continue.png | Bin 0 -> 405 bytes .../selenium/icons/continue_disabled.png | Bin 0 -> 374 bytes .../vendor/selenium/icons/pause.png | Bin 0 -> 275 bytes .../vendor/selenium/icons/pause_disabled.png | Bin 0 -> 263 bytes .../vendor/selenium/icons/selected.png | Bin 0 -> 668 bytes .../vendor/selenium/icons/step.png | Bin 0 -> 452 bytes .../vendor/selenium/icons/step_disabled.png | Bin 0 -> 402 bytes .../vendor/selenium/iedoc-core.xml | 1431 ++++++++ .../vendor/selenium/iedoc.xml | 1368 +++++++ .../selenium/lib/cssQuery/cssQuery-p.js | 6 + .../lib/cssQuery/src/cssQuery-level2.js | 142 + .../lib/cssQuery/src/cssQuery-level3.js | 150 + .../lib/cssQuery/src/cssQuery-standard.js | 53 + .../selenium/lib/cssQuery/src/cssQuery.js | 356 ++ .../vendor/selenium/lib/prototype.js | 2006 +++++++++++ .../selenium/lib/scriptaculous/builder.js | 101 + .../selenium/lib/scriptaculous/controls.js | 815 +++++ .../selenium/lib/scriptaculous/dragdrop.js | 915 +++++ .../selenium/lib/scriptaculous/effects.js | 958 +++++ .../lib/scriptaculous/scriptaculous.js | 47 + .../selenium/lib/scriptaculous/slider.js | 283 ++ .../selenium/lib/scriptaculous/unittest.js | 383 ++ .../selenium/scripts/find_matching_child.js | 69 + .../vendor/selenium/scripts/htmlutils.js | 842 +++++ .../vendor/selenium/scripts/injection.html | 79 + .../selenium/scripts/injection_iframe.html | 7 + .../vendor/selenium/scripts/js2html.js | 70 + .../vendor/selenium/scripts/narcissus-defs.js | 175 + .../vendor/selenium/scripts/narcissus-exec.js | 1054 ++++++ .../selenium/scripts/narcissus-parse.js | 1003 ++++++ .../vendor/selenium/scripts/se2html.js | 63 + .../vendor/selenium/scripts/selenium-api.js | 2329 ++++++++++++ .../selenium/scripts/selenium-browserbot.js | 1946 ++++++++++ .../scripts/selenium-browserdetect.js | 142 + .../scripts/selenium-commandhandlers.js | 375 ++ .../scripts/selenium-executionloop.js | 177 + .../selenium/scripts/selenium-logging.js | 139 + .../selenium/scripts/selenium-remoterunner.js | 466 +++ .../selenium/scripts/selenium-testrunner.js | 1281 +++++++ .../selenium/scripts/selenium-version.js | 5 + .../scripts/user-extensions.js.sample | 75 + .../vendor/selenium/scripts/xmlextras.js | 153 + .../vendor/selenium/selenium-logo.png | Bin 0 -> 6714 bytes .../vendor/selenium/selenium-test.css | 43 + .../vendor/selenium/selenium.css | 299 ++ .../vendor/selenium/xpath/dom.js | 428 +++ .../vendor/selenium/xpath/misc.js | 255 ++ .../vendor/selenium/xpath/xpath.js | 2182 ++++++++++++ 1721 files changed, 200174 insertions(+) create mode 100644 tracks/lkm-rails-1.2.3-upgrade/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/README_DEVELOPERS create mode 100644 tracks/lkm-rails-1.2.3-upgrade/README_RAILS create mode 100644 tracks/lkm-rails-1.2.3-upgrade/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/apis/todo_api.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/application.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/backend_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/contexts_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/data_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/feedlist_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/login_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/mobile_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/notes_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/preferences_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/projects_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/todos_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/controllers/users_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/application_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/backend_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/contexts_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/data_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/feedlist_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/login_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/mobile_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/notes_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/preferences_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/projects_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/todos_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/helpers/users_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/models/context.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/models/note.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/models/preference.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/models/project.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/models/tag.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/models/tagging.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/models/todo.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/models/user.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context_form.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context_listing.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_text_context.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/create.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/destroy.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/error.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/index_text.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/show.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/update.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/data/export.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/data/import.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/data/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_export.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_form.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_import.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/feedlist/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/login.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/mobile.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/scaffold.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/standard.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/login/_redirect_to_login.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/login/check_expiry.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/login/login.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/mobile/_mobile_actions.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/mobile/_mobile_edit.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/mobile/detail.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/mobile/filter.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/mobile/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/mobile/show_add_form.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/notes/_note_edit_form.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/notes/_notes.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/notes/_notes_summary.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/notes/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/notes/show.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/preferences/edit.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/preferences/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/_default_context_autocomplete.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/_edit_project.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/_project.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/_project_form.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/_project_listing.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/_project_state_group.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/create.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/destroy.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/error.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/index_text.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/show.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/update.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/update_default_context.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/projects/update_status.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/shared/_add_new_item_form.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/shared/_empty.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/shared/_flash.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/shared/_footer.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/sidebar/_context.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/sidebar/_context_list.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/sidebar/_project.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/sidebar/_project_list.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/sidebar/sidebar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/_completed.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/_deferred.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/_done.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/_edit_form.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/_text_todo.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/_todo.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/_toggle_notes.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/check_deferred.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/completed.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/completed_archive.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/create.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/destroy.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/edit.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/error.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/index_ical.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/index_text.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/list.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/list_deferred.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/tag.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/toggle_check.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/todos/update.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/users/change_auth_type.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/users/change_password.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/users/destroy.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/users/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/users/new.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/app/views/users/nosignup.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/config/boot.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/config/database.yml.tmpl create mode 100644 tracks/lkm-rails-1.2.3-upgrade/config/environment.rb.tmpl create mode 100644 tracks/lkm-rails-1.2.3-upgrade/config/environments/development.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/config/environments/production.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/config/environments/test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/config/routes.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/001_create_tracks_db.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/002_add_user_id.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/003_created_at.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/004_notes.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/005_add_project_description.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/006_add_preferences_to_user_table.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/007_add_sessions_table.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/008_add_subclass_attr_to_todos.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/009_add_user_pref_refresh.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/010_add_first_and_last_name_to_user.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/011_pref_to_show_hide_sidebar_items.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/012_add_preferences_model.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/013_convert_preferences.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/014_convert_project_to_state_machine.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/015_add_verbose_action_descriptors_preference.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/016_add_user_auth_type.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/017_add_open_id_tables.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/018_add_user_open_id_url.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/019_convert_todo_to_state_machine.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/020_pref_to_show_hidden_projects_in_sidebar.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/021_add_time_zone_preference.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/022_add_indices.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/023_index_on_user_login.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/024_add_find_by_name_indices.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/025_add_tag_support.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/026_add_project_timestamps.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/027_add_context_timestamps.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/028_add_show_project_on_todo_done_preference.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/029_add_title_date_format_preference.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/030_set_nil_timestamps.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/migrate/031_add_default_context_to_project.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/schema.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/tracks-1041.db create mode 100644 tracks/lkm-rails-1.2.3-upgrade/db/tracks_1.04_content.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/doc/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/doc/README_FOR_APP create mode 100644 tracks/lkm-rails-1.2.3-upgrade/installation.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/activerecord_base_tag_extensions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/config.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/login_system.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/name_part_finder.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/redcloth.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/source_view.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/tasks/extract_fixtures.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/tasks/gems.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/tasks/load_exported_fixtures.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/tasks/setup_tracks.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/tasks/upgrade_sqlite_db.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/todo_list.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/lib/url_friendly_name.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/log.tmpl/apache.log create mode 100755 tracks/lkm-rails-1.2.3-upgrade/log.tmpl/development.log create mode 100755 tracks/lkm-rails-1.2.3-upgrade/log.tmpl/production.log create mode 100755 tracks/lkm-rails-1.2.3-upgrade/log.tmpl/test.log create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/.htaccess create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/404.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/500.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/_doc/index.html create mode 100755 tracks/lkm-rails-1.2.3-upgrade/public/dispatch.cgi create mode 100755 tracks/lkm-rails-1.2.3-upgrade/public/dispatch.fcgi create mode 100755 tracks/lkm-rails-1.2.3-upgrade/public/dispatch.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/favicon.ico create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/blank.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/bottom_off.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/bottom_on.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/close.gif create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/collapse.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/delete_off.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/delete_on.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/done.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/down_off.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/down_on.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/edit_off.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/edit_on.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/expand.png create mode 100755 tracks/lkm-rails-1.2.3-upgrade/public/images/feed-icon.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/menuarrow.gif create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/notes_off.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/notes_on.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/open-id-login-bg.gif create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/spinner.gif create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/top_off.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/top_on.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/up_off.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/images/up_on.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/accesskey-hints.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/application.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/calendar-en.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/calendar-setup.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/calendar.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/controls.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/dragdrop.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/effects.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/lowpro.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/prototype.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/scriptaculous.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/selector-addon-v1.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/slider.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/javascripts/todo-items.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/robots.txt create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/stylesheets/calendar-system.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/stylesheets/mobile.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/stylesheets/print.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/stylesheets/scaffold.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/public/stylesheets/standard.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/script/about create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/benchmarker create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/breakpointer create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/console create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/console_sandbox create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/console_sandbox.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/destroy create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/generate create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/performance/benchmarker create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/performance/profiler create mode 100644 tracks/lkm-rails-1.2.3-upgrade/script/plugin create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/process/inspector create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/process/reaper create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/process/spawner create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/profiler create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/runner create mode 100755 tracks/lkm-rails-1.2.3-upgrade/script/server create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/fixtures/contexts.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/fixtures/notes.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/fixtures/preferences.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/fixtures/projects.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/fixtures/taggings.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/fixtures/tags.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/fixtures/todos.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/fixtures/users.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/backend_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/contexts_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/data_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/feedlist_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/login_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/mobile_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/notes_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/preferences_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/projects_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/todo_container_controller_test_base.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/todos_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/functional/users_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/integration/context_xml_api_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/integration/feed_smoke_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/test/integration/ldap_auth_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/integration/project_xml_api_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/integration/stories_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/integration/users_xml_api_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/context_listing/delete.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/context_listing/edit_then_delete.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/context_listing/edit_twice.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/home/mark_todo_complete_1.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/home/mark_todo_complete_2.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/home/mark_todo_complete_3.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/home/mark_todo_incomplete.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/login/_login.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/login/first_run_shows_signup.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/login/login_failure.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/login/login_success.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/notes/link_to_note.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/notes/see_all_notes.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_detail/_add_deferred_todo.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_detail/activate_deferred_todo.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_detail/activate_last_deferred_todo.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_detail/change_project_status.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_detail/change_todos_project_to_blank.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_detail/create_deferred_todo.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_detail/defer_todo.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_detail/mark_deferred_todo_complete.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_detail/mark_last_deferred_todo_complete.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_listing/delete.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_listing/edit_then_delete.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/project_listing/edit_twice.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/tags/find_tagged.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium/tickler/see_all_deferred.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/selenium_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/test_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/unit/context_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/unit/notes_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/unit/preference_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/unit/project_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/unit/tag_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/unit/tagging_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/unit/todo_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/test/unit/user_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/MIT-LICENSE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/TODO create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/lib/acts_as_state_machine.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/test/acts_as_state_machine_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/test/database.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/test/fixtures/conversation.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/test/fixtures/conversations.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/test/fixtures/person.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/test/schema.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/acts_as_state_machine/test/test_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/arts/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/arts/about.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/arts/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/arts/install.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/arts/lib/arts.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/arts/test/arts_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/extra_validations/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/extra_validations/lib/extra_validations.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/LICENSE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/aquatic/fish.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/aquatic/little_whale_pupils.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/aquatic/whales.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/bow_wows.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/cats.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/eaters_foodstuffs.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/frogs.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/keep_your_enemies_close.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/petfoods.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/fixtures/wild_boars.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/aquatic/fish.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/aquatic/pupils_whale.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/aquatic/whale.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/beautiful_fight_relationship.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/cat.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/dog.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/eaters_foodstuff.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/frog.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/kitten.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/petfood.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/tabby.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/models/wild_boar.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/schema.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/test_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/has_many_polymorphs/test/unit/polymorph_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/memory_test_fix/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/memory_test_fix/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/memory_test_fix/about.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/memory_test_fix/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/memory_test_fix/lib/memory_test_fix.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/LICENSE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/generators/open_id_consumer_controller/open_id_consumer_controller_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/generators/open_id_consumer_controller/templates/controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/generators/open_id_consumer_controller/templates/functional_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/generators/open_id_consumer_controller/templates/helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/generators/open_id_consumer_controller/templates/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/generators/open_id_migration/open_id_migration_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/generators/open_id_migration/templates/migration.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/install.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/lib/open_id_consumer/active_record_open_id_store.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/lib/open_id_consumer/association.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/lib/open_id_consumer/controller_methods.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/lib/open_id_consumer/nonce.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/openid_consumer_plugin/lib/open_id_consumer/setting.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/resource_feeder/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/resource_feeder/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/resource_feeder/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/resource_feeder/lib/resource_feeder.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/resource_feeder/lib/resource_feeder/atom.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/resource_feeder/lib/resource_feeder/rss.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/resource_feeder/test/atom_feed_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/resource_feeder/test/rss_feed_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/resource_feeder/test/test_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/LICENSE-2.0.txt create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/config.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/config.yml.example create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumController.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumHelper.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/FixtureLoader.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/PartialsSupport.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Paths.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/RSelenese.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Renderer.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Selenese.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/SuiteRenderer.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilder.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderAccessors.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderActions.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRailsConfig.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/README.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/controllers/selenium_controller_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_helper_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/acceptance_test_runner_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/fixture_loader_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/partials_support_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/paths_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/renderer_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/rselenese_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/selenese_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/suite_renderer_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_accessors_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_actions_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_config_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_rb.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/fr_class_index.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/fr_file_index.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/fr_method_index.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/index.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/doc/rdoc-style.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/generators/selenium/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/generators/selenium/selenium_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/generators/selenium/templates/rhtml.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/generators/selenium/templates/rselenese.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/generators/selenium/templates/selenese.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/controllers/selenium_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/acceptance_test_runner.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/fixture_loader.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/partials_support.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/paths.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/renderer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/rselenese.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/selenese.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/suite_renderer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_accessors.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_actions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/selenium_on_rails_config.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/views/layout.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/views/record.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/views/setup.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/lib/views/test_suite.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/routes.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/switch_environment/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/switch_environment/switch_environment_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/tasks/test_acceptance.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test/renderer_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test/rselenese_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test/selenese_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test/selenium_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test/selenium_support_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test/setup_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test/suite_renderer_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test/test_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/_partial.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/html.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/own_layout.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/partials/_html.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/partials/_nesting.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/partials/_rhtml.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/partials/_rsel.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/partials/_sel.sel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/partials/all_partials.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/rhtml.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/rselenese.rsel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/selenese.sel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/suite_one/subsuite/suite_one_subsuite_testcase.sel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase1.sel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase2.sel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/selenium-on-rails/test_data/suite_two/suite_two_testcase.sel create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simple_ldap_authenticator/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simple_ldap_authenticator/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simple_ldap_authenticator/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simple_ldap_authenticator/install.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simple_ldap_authenticator/lib/simple_ldap_authenticator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simple_ldap_authenticator/tasks/simple_ldap_authenticator_tasks.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simple_ldap_authenticator/test/simple_ldap_authenticator_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/lib/simply_helpful.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/lib/simply_helpful/av_extensions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/lib/simply_helpful/controller_extensions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/lib/simply_helpful/form_helper_extensions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/lib/simply_helpful/jsg_extensions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/lib/simply_helpful/record_identification_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/lib/simply_helpful/record_identifier.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/lib/simply_helpful/record_tag_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/test/controller_extensions_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/test/form_helper_extensions_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/test/record_identifier_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/test/record_tag_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/test/simply_helpful_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/simply_helpful/test/test_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/about.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/assets/javascripts/lowpro.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/install.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/actionview_helpers_patches.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/asset_tag_helper_patches.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/behaviour_caching.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/controllers/unobtrusive_javascript_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/prototype_helper_patches.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/scriptaculous_helper_patches.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/tag_helper_patches.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/ujs.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/ujs/behaviour_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/ujs/behaviour_script.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/ujs/behaviour_script_converter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/ujs/controller_methods.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/ujs/helpers.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/lib/ujs/javascript_proxies.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/tasks/unobtrusive_javascript_tasks.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/asset_tag_helper_patches_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/behaviour_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/behaviour_script_converter_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/behaviour_script_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/config/database.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/config/environment.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/config/routes.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/config/schema.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/controller_methods_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/helpers_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/javascript_proxies_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/lib/ptk/boot.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/lib/ptk/gem/action_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/lib/ptk/gem/action_mailer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/lib/ptk/gem/active_record.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/lib/ptk/gem/rails.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/lib/ptk/ptk.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/lib/ptk/suite/difference.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/lib/stubs/controller_stub.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/ptk_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/tag_helper_patches_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/test_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/test/unobtrusive_javascript_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/plugins/unobtrusive_javascript/uninstall.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/TAG_rel_1-2-3 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/MIT-LICENSE create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/README create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/install.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/base.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/helpers.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/part.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/part_container.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/quoting.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/utils.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/text/format.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/address.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/attachments.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/base64.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/config.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/encode.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/header.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/info.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/loader.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mailbox.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/mbox.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/parser.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/port.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/quoting.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/scanner.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/scanner_r.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/stringio.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/tmail.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail/utils.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/lib/action_mailer/version.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/abstract_unit.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/first_mailer/share.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_test_helper.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/helpers/test_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/path.with.dots/multipart_with_template_path_with_dots.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email10 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email11 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email12 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email13 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email2 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email3 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email4 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email5 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email6 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email7 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email8 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email9 create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/second_mailer/share.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/templates/signed_up.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/mail_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/mail_render_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/mail_service_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/quoting_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/tmail_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionmailer/test/url_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/MIT-LICENSE create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/RUNNING_UNIT_TESTS create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/.htaccess create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/address_book/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/address_book/layout.rhtml create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/address_book_controller.cgi create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/address_book_controller.fcgi create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/address_book_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/address_book_controller.rbx create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/benchmark.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/benchmark_with_ar.fcgi create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/blog_controller.cgi create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/debate/index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/debate/new_topic.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/debate/topic.rhtml create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/examples/debate_controller.cgi create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/install.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/assertions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/assertions/deprecated_assertions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/base.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/benchmarking.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/caching.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/cgi_ext/cgi_ext.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie_performance_fix.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/cgi_ext/session_performance_fix.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/cgi_process.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/components.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/cookies.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/deprecated_dependencies.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/deprecated_redirects.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/deprecated_request_methods.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/filters.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/flash.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/helpers.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/integration.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/layout.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/macros/auto_complete.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/macros/in_place_editing.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/mime_responds.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/mime_type.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/pagination.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/request.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/rescue.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/resources.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/response.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/routing.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/scaffolding.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/session/active_record_store.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/session/drb_server.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/session/drb_store.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/session_management.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/status_codes.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/streaming.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/edit.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/layout.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/list.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/new.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/templates/scaffolds/show.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/test_process.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/vendor/xml_node.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_controller/verification.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_pack.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_pack/version.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/base.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/compiled_templates.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/deprecated_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/java_script_macros_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/javascripts/controls.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/javascripts/dragdrop.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/javascripts/effects.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/javascripts/prototype.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/pagination_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/partials.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/lib/action_view/template_error.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/abstract_unit.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/active_record_unit.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/activerecord/active_record_assertions_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/activerecord/pagination_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/addresses_render_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/assert_select_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/base_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/benchmark_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/caching_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/capture_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/cgi_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/components_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/content_type_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/cookie_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/custom_handler_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/deprecated_instance_variables_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/fake_controllers.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/filter_params_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/filters_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/flash_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/fragment_store_setting_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/integration_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/layout_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/mime_responds_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/mime_type_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/new_render_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/raw_post_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/redirect_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/render_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/request_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/resources_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/routing_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/selector_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/send_file_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/session_management_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/test_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/url_rewriter_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/verification_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/controller/webservice_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/addresses/list.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/companies.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/company.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_cookies_ivar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_cookies_method.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_flash_ivar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_flash_method.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_headers_ivar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_headers_method.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_params_ivar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_params_method.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_request_ivar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_request_method.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_response_ivar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_response_method.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_session_ivar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/deprecated_instance_variables/_session_method.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/developer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/developers.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/developers_projects.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/layouts/builder.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/layouts/standard.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/layouts/yield.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/multipart/binary_file create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/multipart/large_text_file create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/multipart/mixed_files create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/multipart/single_parameter create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/multipart/text_file create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/project.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/projects.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/public/images/rails.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/replies.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/reply.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/_customer.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/_hash_object.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/_hello.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/_partial_only.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/_person.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/block_content_for.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/capturing.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/content_for.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/erb_content_for.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/greeting.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/hello.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/hello_world.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/hello_world.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/hello_world_container.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/list.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.rxml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/topic.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/fixtures/topics.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/active_record_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/benchmark_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/compiled_templates_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/date_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/deprecated_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/deprecated_instance_variables_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/form_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/form_options_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/form_tag_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/java_script_macros_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/javascript_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/number_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/prototype_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/tag_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/text_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/template/url_helper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionpack/test/testing_sandbox.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/MIT-LICENSE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/TODO create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/googlesearch/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_api.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/googlesearch/delegated/google_search_service.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/googlesearch/delegated/search_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/googlesearch/direct/google_search_api.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/googlesearch/direct/search_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/metaWeblog/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_api.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_service.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_api.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_service.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/examples/metaWeblog/controllers/xmlrpc_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/install.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/api.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/base.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/casting.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/client.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/client/base.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/client/soap_client.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/client/xmlrpc_client.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/container.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/container/action_controller_container.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/container/delegated_container.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/container/direct_container.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/dispatcher.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/abstract.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/action_controller_dispatcher.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/invocation.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/protocol.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/protocol/abstract.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/protocol/discovery.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol/marshaler.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/scaffolding.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/struct.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/support/class_inheritable_options.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/support/signature_types.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/layout.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/methods.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/parameters.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/result.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/test_invoke.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/lib/action_web_service/version.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/setup.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/abstract_client.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/abstract_dispatcher.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/abstract_unit.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/api_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/apis/auto_load_api.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/apis/broken_auto_load_api.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/base_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/casting_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/client_soap_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/client_xmlrpc_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/container_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/dispatcher_action_controller_soap_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/dispatcher_action_controller_xmlrpc_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/fixtures/db_definitions/mysql.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/fixtures/users.yml create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/gencov create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/invocation_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/run create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/scaffolded_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/struct_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/actionwebservice/test/test_invoke_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/MIT-LICENSE create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/RUNNING_UNIT_TESTS create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/benchmarks/benchmark.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/benchmarks/mysql_benchmark.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/examples/associations.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/examples/associations.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/examples/shared_setup.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/examples/validation.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/install.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/acts/list.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/acts/nested_set.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/acts/tree.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/aggregations.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/associations.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/attribute_methods.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/base.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/calculations.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/callbacks.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/db2_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/firebird_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/frontbase_adapter.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/openbase_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/oracle_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/connection_adapters/sybase_adapter.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/deprecated_associations.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/deprecated_finders.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/fixtures.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/migration.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/observer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/query_cache.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/reflection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/schema.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/schema_dumper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/timestamp.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/transactions.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/validations.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/vendor/db2.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/vendor/mysql.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/vendor/simple.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/version.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/wrappers/yaml_wrapper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/wrappings.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/lib/active_record/xml_serialization.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/aaa_create_tables_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/abstract_unit.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/active_schema_test_mysql.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/adapter_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/adapter_test_sqlserver.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/aggregations_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/all.sh create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/ar_schema_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/association_inheritance_reload.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/associations/callbacks_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/associations/cascaded_eager_loading_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/associations/eager_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/associations/extension_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/associations/join_model_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/associations_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/attribute_methods_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/base_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/binary_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/calculations_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/callbacks_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/class_inheritable_attributes_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/column_alias_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connection_test_firebird.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_db2/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_firebird/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_mysql/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_openbase/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_oracle/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_sqlserver/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_sqlserver_odbc/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/connections/native_sybase/connection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/copy_table_sqlite.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/datatype_test_postgresql.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/default_test_firebird.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/defaults_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/deprecated_associations_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/deprecated_finder_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/empty_date_time_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/finder_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/accounts.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/author.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/author_favorites.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/authors.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/auto_id.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_numeric_first_char create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/bad_fixtures/attr_with_spaces create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/bad_fixtures/blank_line create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/bad_fixtures/duplicate_attributes create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/bad_fixtures/missing_value create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/binary.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/categories.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/categories_ordered.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/categories_posts.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/categorization.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/categorizations.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/category.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/column_name.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/comment.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/comments.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/companies.yml create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/company.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/company_in_module.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/computer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/computers.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/course.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/courses.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/customer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/customers.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/db2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/db2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/db22.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/db22.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/firebird.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/firebird2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/frontbase2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/mysql.drop.sql create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/mysql.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/mysql2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/mysql2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/openbase.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/openbase2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/oracle.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/oracle2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/postgresql2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/schema.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sqlite2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sqlserver2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sybase.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.drop.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/db_definitions/sybase2.sql create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/default.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/developer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/developers.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/developers_projects.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/developers_projects/david_action_controller create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/developers_projects/david_active_record create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/developers_projects/jamis_active_record create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/edge.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/edges.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/entrant.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/entrants.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/flowers.jpg create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/funny_jokes.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/joke.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/keyboard.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/legacy_thing.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/legacy_things.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations/1_people_have_last_names.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations/2_we_need_reminders.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations/3_innocent_jointable.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations_with_decimal/1_give_me_big_numbers.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/1_people_have_last_names.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/2_we_need_reminders.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_foo.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations_with_duplicate/3_innocent_jointable.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1000_people_have_middle_names.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/1_people_have_last_names.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/3_we_need_reminders.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/migrations_with_missing_versions/4_innocent_jointable.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/mixed_case_monkey.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/mixin.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/mixins.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/movie.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/movies.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/order.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/people.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/person.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/post.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/posts.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/project.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/projects.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/reader.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/readers.yml create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/reply.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/subject.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/subscriber.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/subscribers/first create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/subscribers/second create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/tag.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/tagging.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/taggings.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/tags.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/task.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/tasks.yml create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/topic.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/topics.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/vertex.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures/vertices.yml create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/fixtures_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/inheritance_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/lifecycle_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/locking_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/method_scoping_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/migration_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/migration_test_firebird.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/mixin_nested_set_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/mixin_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/modules_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/multiple_db_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/pk_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/readonly_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/reflection_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/schema_authorization_test_postgresql.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/schema_dumper_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/schema_test_postgresql.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/synonym_test_oracle.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/table_name_test_sqlserver.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/threaded_connections_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/transactions_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/unconnected_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/validations_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activerecord/test/xml_serialization_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/MIT-LICENSE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/install.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/binding_of_caller.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/breakpoint.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/caching_tools.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/clean_logger.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/array.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/formatting.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/class.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/date.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/module.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/object.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/range.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/string.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/string/unicode.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/time.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/dependencies.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/deprecation.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/inflections.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/inflector.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/json.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/json/encoders.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/json/encoders/core.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/multibyte.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/multibyte/generators/generate_tables.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/option_merger.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/ordered_options.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/reloadable.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/values/time_zone.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/vendor/builder.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/vendor/builder/blankslate.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/vendor/builder/xchar.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlbase.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlevents.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/vendor/builder/xmlmarkup.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/vendor/xml_simple.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/version.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/lib/active_support/whiny_nil.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/abstract_unit.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/application.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/e.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/caching_tools_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/clean_logger_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/array_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/blank_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/class_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/date_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/enumerable_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/exception_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/kernel_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/load_error_tests.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/module_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/name_error_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/pathname_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/proc_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/range_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/string_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/symbol_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/core_ext/time_ext_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/check_warnings.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/conflict.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/mutual_one.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/mutual_two.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/raises_exception.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/service_one.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies/service_two.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/dependencies_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/deprecation_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/inflector_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/json.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/multibyte_chars_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/multibyte_conformance.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/multibyte_handler_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/option_merger_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/ordered_options_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/reloadable_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/time_zone_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/activesupport/test/whiny_nil_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/cleanlogs.sh create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/pushgems.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/CHANGELOG create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/MIT-LICENSE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/README create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/about create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/breakpointer create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/console create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/destroy create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/generate create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/performance/benchmarker create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/performance/profiler create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/plugin create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/process/inspector create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/process/reaper create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/process/spawner create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/rails create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/runner create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/bin/server create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/builtin/rails_info/rails/info.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/apache.conf create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/databases/frontbase.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/databases/mysql.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/databases/oracle.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/databases/postgresql.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/databases/sqlite2.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/databases/sqlite3.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/empty.log create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/lighttpd.conf create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/configs/routes.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/dispatches/dispatch.fcgi create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/dispatches/dispatch.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/dispatches/gateway.cgi create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/doc/README_FOR_APP create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/environments/boot.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/environments/development.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/environments/environment.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/environments/production.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/environments/test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/fresh_rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/helpers/application.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/helpers/application_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/helpers/test_helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/404.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/500.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/favicon.ico create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/images/rails.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/index.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/javascripts/application.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/javascripts/controls.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/javascripts/dragdrop.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/javascripts/effects.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/javascripts/prototype.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/html/robots.txt create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/binding_of_caller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/breakpoint.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/breakpoint_client.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/code_statistics.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/about.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/breakpointer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/console.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/destroy.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/generate.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/ncgi/listener create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/ncgi/tracker create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/performance/benchmarker.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/performance/profiler.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/plugin.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/process/inspector.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/process/reaper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/process/spawner.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/process/spinner.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/runner.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/server.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/servers/base.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/servers/lighttpd.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/servers/mongrel.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/servers/webrick.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/commands/update.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/console_app.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/console_sandbox.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/console_with_helpers.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/dispatcher.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/fcgi_handler.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/initializer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails/version.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/base.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/commands.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generated_attribute.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/fixtures.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/migration.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/model.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/unit_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/form.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/form_scaffolding.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/scaffold_resource_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/fixtures.yml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/functional_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/helper.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/layout.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/migration.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/model.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/style.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/unit_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_edit.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_index.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_new.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_show.rhtml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/web_service/USAGE create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/api_definition.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/controller.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/web_service/templates/functional_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/generators/components/web_service/web_service_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/lookup.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/manifest.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/options.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/scripts.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/scripts/generate.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/scripts/update.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/simple_logger.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rails_generator/spec.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/railties_path.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/ruby_version_check.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/rubyprof_ext.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/databases.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/documentation.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/framework.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/log.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/misc.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/pre_namespace_aliases.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/rails.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/statistics.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/testing.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/tasks/tmp.rake create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/test_help.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/lib/webrick_server.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/abstract_unit.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/dispatcher_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/fcgi_dispatcher_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/fixtures/environment_with_constant.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/initializer_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/mocks/dispatcher.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/mocks/fcgi.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/mocks/routes.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/mocks/stubbed_breakpoint.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/mocks/stubbed_kernel.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/plugin_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/rails_generator_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/rails_info_controller_test.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/railties/test/rails_info_test.rb create mode 100755 tracks/lkm-rails-1.2.3-upgrade/vendor/rails/release.rb create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/Blank.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/InjectedRemoteRunner.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/RemoteRunner.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/SeleniumLog.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/TestPrompt.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/TestRunner-splash.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/TestRunner.hta create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/TestRunner.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/domviewer/butmin.gif create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/domviewer/butplus.gif create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/domviewer/domviewer.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/domviewer/domviewer.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/domviewer/selenium-domviewer.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/icons/all.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/icons/continue.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/icons/continue_disabled.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/icons/pause.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/icons/pause_disabled.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/icons/selected.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/icons/step.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/icons/step_disabled.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/iedoc-core.xml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/iedoc.xml create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/cssQuery/cssQuery-p.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/cssQuery/src/cssQuery-level2.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/cssQuery/src/cssQuery-level3.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/cssQuery/src/cssQuery-standard.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/cssQuery/src/cssQuery.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/prototype.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/scriptaculous/builder.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/scriptaculous/controls.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/scriptaculous/dragdrop.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/scriptaculous/effects.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/scriptaculous/scriptaculous.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/scriptaculous/slider.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/lib/scriptaculous/unittest.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/find_matching_child.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/htmlutils.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/injection.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/injection_iframe.html create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/js2html.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-defs.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-exec.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-parse.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/se2html.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/selenium-api.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/selenium-browserbot.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/selenium-browserdetect.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/selenium-commandhandlers.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/selenium-executionloop.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/selenium-logging.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/selenium-remoterunner.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/selenium-testrunner.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/selenium-version.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/user-extensions.js.sample create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/xmlextras.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/selenium-logo.png create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/selenium-test.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/selenium.css create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/xpath/dom.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/xpath/misc.js create mode 100644 tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/xpath/xpath.js diff --git a/tracks/lkm-rails-1.2.3-upgrade/CHANGELOG b/tracks/lkm-rails-1.2.3-upgrade/CHANGELOG new file mode 100644 index 00000000..269b908f --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/CHANGELOG @@ -0,0 +1,709 @@ +*0.14.1* (October 19th, 2005) + +* Don't clean RAILS_ROOT on windows + +* Remove trailing '/' from RAILS_ROOT [Nicholas Seckar] + +* Upgraded to Active Record 1.12.1 and Action Pack 1.10.1 + + +*0.14.0* (October 16th, 2005) + +* Moved generator folder from RAILS_ROOT/generators to RAILS_ROOT/lib/generators [Tobias Luetke] + +* Fix rake dev and related commands [Nicholas Seckar] + +* The rails command tries to deduce your MySQL socket by running `mysql_config +--socket`. If it fails, default to /path/to/your/mysql.sock + +* Made the rails command use the application name for database names in the tailored database.yml file. Example: "rails ~/projects/blog" will use "blog_development" instead of "rails_development". [Florian Weber] + +* Added Rails framework freezing tasks: freeze_gems (freeze to current gems), freeze_edge (freeze to Rails SVN trunk), unfreeze_rails (float with newest gems on system) + +* Added update_javascripts task which will fetch all the latest js files from your current rails install. Use after updating rails. [Tobias Luetke] + +* Added cleaning of RAILS_ROOT to useless elements such as '../non-dot-dot/'. Provides cleaner backtraces and error messages. [Nicholas Seckar] + +* Made the instantiated/transactional fixtures settings be controlled through Rails::Initializer. Transactional and non-instantiated fixtures are default from now on. [Florian Weber] + +* Support using different database adapters for development and test with ActiveRecord::Base.schema_format = :ruby [Sam Stephenson] + +* Make webrick work with session(:off) + +* Add --version, -v option to the Rails command. Closes #1840. [stancell] + +* Update Prototype to V1.4.0_pre11, script.aculo.us to V1.5_rc3 [2504] and fix the rails generator to include the new .js files [Thomas Fuchs] + +* Make the generator skip a file if it already exists and is identical to the new file. + +* Add experimental plugin support #2335 + +* Made Rakefile aware of new .js files in script.aculo.us [Thomas Fuchs] + +* Make table_name and controller_name in generators honor AR::Base.pluralize_table_names. #1216 #2213 [kazuhiko@fdiary.net] + +* Clearly label functional and unit tests in rake stats output. #2297 [lasse.koskela@gmail.com] + +* Make the migration generator only check files ending in *.rb when calculating the next file name #2317 [Chad Fowler] + +* Added prevention of duplicate migrations from the generator #2240 [fbeausoleil@ftml.net] + +* Add db_schema_dump and db_schema_import rake tasks to work with the new ActiveRecord::SchemaDumper (for dumping a schema to and reading a schema from a ruby file). + +* Reformed all the config/environments/* files to conform to the new Rails::Configuration approach. Fully backwards compatible. + +* Added create_sessions_table, drop_sessions_table, and purge_sessions_table as rake tasks for databases that supports migrations (MySQL, PostgreSQL, SQLite) to get a table for use with CGI::Session::ActiveRecordStore + +* Added dump of schema version to the db_structure_dump task for databases that support migrations #1835 [Rick Olson] + +* Fixed script/profiler for Ruby 1.8.2 #1863 [Rick Olson] + +* Fixed clone_structure_to_test task for SQLite #1864 [jon@burningbush.us] + +* Added -m/--mime-types option to the WEBrick server, so you can specify a Apache-style mime.types file to load #2059 [ask@develooper.com] + +* Added -c/--svn option to the generator that'll add new files and remove destroyed files using svn add/revert/remove as appropriate #2064 [kevin.clark@gmail.com] + +* Added -c/--charset option to WEBrick server, so you can specify a default charset (which without changes is UTF-8) #2084 [wejn@box.cz] + +* Make the default stats task extendable by modifying the STATS_DIRECTORIES constant + +* Allow the selected environment to define RAILS_DEFAULT_LOGGER, and have Rails::Initializer use it if it exists. + +* Moved all the shared tasks from Rakefile into Rails, so that the Rakefile is empty and doesn't require updating. + +* Added Rails::Initializer and Rails::Configuration to abstract all of the common setup out of config/environment.rb (uses config/boot.rb to bootstrap the initializer and paths) + +* Fixed the scaffold generator to fail right away if the database isn't accessible instead of in mid-air #1169 [Chad Fowler] + +* Corrected project-local generator location in scripts.rb #2010 [Michael Schuerig] + +* Don't require the environment just to clear the logs #2093 [Scott Barron] + +* Make the default rakefile read *.rake files from config/tasks (for easy extension of the rakefile by e.g. generators) + +* Only load breakpoint in development mode and when BREAKPOINT_SERVER_PORT is defined. + +* Allow the --toggle-spin switch on process/reaper to be negated + +* Replace render_partial with render :partial in scaffold generator [Nicholas Seckar] + +* Added -w flag to ps in process/reaper #1934 [Scott Barron] + +* Allow ERb in the database.yml file (just like with fixtures), so you can pull out the database configuration in environment variables #1822 [Duane Johnson] + +* Added convenience controls for FCGI processes (especially when managed remotely): spinner, spawner, and reaper. They reside in script/process. More details can be had by calling them with -h/--help. + +* Added load_fixtures task to the Rakefile, which will load all the fixtures into the database for the current environment #1791 [Marcel Molina] + +* Added an empty robots.txt to public/, so that web servers asking for it won't trigger a dynamic call, like favicon.ico #1738 [michael@schubert] + +* Dropped the 'immediate close-down' of FCGI processes since it didn't work consistently and produced bad responses when it didn't. So now a TERM ensures exit after the next request (just as if the process is handling a request when it receives the signal). This means that you'll have to 'nudge' all FCGI processes with a request in order to ensure that they have all reloaded. This can be done by something like ./script/process/repear --nudge 'http://www.myapp.com' --instances 10, which will load the myapp site 10 times (and thus hit all of the 10 FCGI processes once, enough to shut down). + + +*0.13.1* (11 July, 2005) + +* Look for app-specific generators in RAILS_ROOT/generators rather than the clunky old RAILS_ROOT/script/generators. Nobody really uses this feature except for the unit tests, so it's a negligible-impact change. If you want to work with third-party generators, drop them in ~/.rails/generators or simply install gems. + +* Fixed that each request with the WEBrick adapter would open a new database connection #1685 [Sam Stephenson] + +* Added support for SQL Server in the database rake tasks #1652 [ken.barker@gmail.com] Note: osql and scptxfr may need to be installed on your development environment. This involves getting the .exes and a .rll (scptxfr) from a production SQL Server (not developer level SQL Server). Add their location to your Environment PATH and you are all set. + +* Added a VERSION parameter to the migrate task that allows you to do "rake migrate VERSION=34" to migrate to the 34th version traveling up or down depending on the current version + +* Extend Ruby version check to include RUBY_RELEASE_DATE >= '2005-12-25', the final Ruby 1.8.2 release #1674 [court3nay@gmail.com] + +* Improved documentation for environment config files #1625 [court3nay@gmail.com] + + +*0.13.0* (6 July, 2005) + +* Changed the default logging level in config/environment.rb to INFO for production (so SQL statements won't be logged) + +* Added migration generator: ./script/generate migration add_system_settings + +* Added "migrate" as rake task to execute all the pending migrations from db/migrate + +* Fixed that model generator would make fixtures plural, even if ActiveRecord::Base.pluralize_table_names was false #1185 [Marcel Molina] + +* Added a DOCTYPE of HTML transitional to the HTML files generated by Rails #1124 [Michael Koziarski] + +* SIGTERM also gracefully exits dispatch.fcgi. Ignore SIGUSR1 on Windows. + +* Add the option to manually manage garbage collection in the FastCGI dispatcher. Set the number of requests between GC runs in your public/dispatch.fcgi [skaes@web.de] + +* Allow dynamic application reloading for dispatch.fcgi processes by sending a SIGHUP. If the process is currently handling a request, the request will be allowed to complete first. This allows production fcgi's to be reloaded without having to restart them. + +* RailsFCGIHandler (dispatch.fcgi) no longer tries to explicitly flush $stdout (CgiProcess#out always calls flush) + +* Fixed rakefile actions against PostgreSQL when the password is all numeric #1462 [michael@schubert.cx] + +* ActionMailer::Base subclasses are reloaded with the other rails components #1262 + +* Made the WEBrick adapter not use a mutex around action performance if ActionController::Base.allow_concurrency is true (default is false) + +* Fixed that mailer generator generated fixtures/plural while units expected fixtures/singular #1457 [Scott Barron] + +* Added a 'whiny nil' that's aim to ensure that when users pass nil to methods where that isn't appropriate, instead of NoMethodError? and the name of some method used by the framework users will see a message explaining what type of object was expected. Only active in test and development environments by default #1209 [Michael Koziarski] + +* Fixed the test_helper.rb to be safe for requiring controllers from multiple spots, like app/controllers/article_controller.rb and app/controllers/admin/article_controller.rb, without reloading the environment twice #1390 [Nicholas Seckar] + +* Fixed Webrick to escape + characters in URL's the same way that lighttpd and apache do #1397 [Nicholas Seckar] + +* Added -e/--environment option to script/runner #1408 [fbeausoleil@ftml.net] + +* Modernize the scaffold generator to use the simplified render and test methods and to change style from @params["id"] to params[:id]. #1367 + +* Added graceful exit from pressing CTRL-C during the run of the rails command #1150 [Caleb Tennis] + +* Allow graceful exits for dispatch.fcgi processes by sending a SIGUSR1. If the process is currently handling a request, the request will be allowed to complete and then will terminate itself. If a request is not being handled, the process is terminated immediately (via #exit). This basically works like restart graceful on Apache. [Jamis Buck] + +* Made dispatch.fcgi more robust by catching fluke errors and retrying unless its a permanent condition. [Jamis Buck] + +* Added console --profile for profiling an IRB session #1154 [Jeremy Kemper] + +* Changed console_sandbox into console --sandbox #1154 [Jeremy Kemper] + + +*0.12.1* (20th April, 2005) + +* Upgraded to Active Record 1.10.1, Action Pack 1.8.1, Action Mailer 0.9.1, Action Web Service 0.7.1 + + +*0.12.0* (19th April, 2005) + +* Fixed that purge_test_database would use database settings from the development environment when recreating the test database #1122 [rails@cogentdude.com] + +* Added script/benchmarker to easily benchmark one or more statement a number of times from within the environment. Examples: + + # runs the one statement 10 times + script/benchmarker 10 'Person.expensive_method(10)' + + # pits the two statements against each other with 50 runs each + script/benchmarker 50 'Person.expensive_method(10)' 'Person.cheap_method(10)' + +* Added script/profiler to easily profile a single statement from within the environment. Examples: + + script/profiler 'Person.expensive_method(10)' + script/profiler 'Person.expensive_method(10)' 10 # runs the statement 10 times + +* Added Rake target clear_logs that'll truncate all the *.log files in log/ to zero #1079 [Lucas Carlson] + +* Added lazy typing for generate, such that ./script/generate cn == ./script/generate controller and the likes #1051 [k@v2studio.com] + +* Fixed that ownership is brought over in pg_dump during tests for PostgreSQL #1060 [pburleson@gmail.com] + +* Upgraded to Active Record 1.10.0, Action Pack 1.8.0, Action Mailer 0.9.0, Action Web Service 0.7.0, Active Support 1.0.4 + + +*0.11.1* (27th March, 2005) + +* Fixed the dispatch.fcgi use of a logger + +* Upgraded to Active Record 1.9.1, Action Pack 1.7.0, Action Mailer 0.8.1, Action Web Service 0.6.2, Active Support 1.0.3 + + +*0.11.0* (22th March, 2005) + +* Removed SCRIPT_NAME from the WEBrick environment to prevent conflicts with PATH_INFO #896 [Nicholas Seckar] + +* Removed ?$1 from the dispatch.f/cgi redirect line to get rid of 'complete/path/from/request.html' => nil being in the @params now that the ENV["REQUEST_URI"] is used to determine the path #895 [dblack/Nicholas Seckar] + +* Added additional error handling to the FastCGI dispatcher to catch even errors taking down the entire process + +* Improved the generated scaffold code a lot to take advantage of recent Rails developments #882 [Tobias Luetke] + +* Combined the script/environment.rb used for gems and regular files version. If vendor/rails/* has all the frameworks, then files version is used, otherwise gems #878 [Nicholas Seckar] + +* Changed .htaccess to allow dispatch.* to be called from a sub-directory as part of the push with Action Pack to make Rails work on non-vhost setups #826 [Nicholas Seckar/Tobias Luetke] + +* Added script/runner which can be used to run code inside the environment by eval'ing the first parameter. Examples: + + ./script/runner 'ReminderService.deliver' + ./script/runner 'Mailer.receive(STDIN.read)' + + This makes it easier to do CRON and postfix scripts without actually making a script just to trigger 1 line of code. + +* Fixed webrick_server cookie handling to allow multiple cookes to be set at once #800, #813 [dave@cherryville.org] + +* Fixed the Rakefile's interaction with postgresql to: + + 1. Use PGPASSWORD and PGHOST in the environment to fix prompting for + passwords when connecting to a remote db and local socket connections. + 2. Add a '-x' flag to pg_dump which stops it dumping privileges #807 [rasputnik] + 3. Quote the user name and use template0 when dumping so the functions doesn't get dumped too #855 [pburleson] + 4. Use the port if available #875 [madrobby] + +* Upgraded to Active Record 1.9.0, Action Pack 1.6.0, Action Mailer 0.8.0, Action Web Service 0.6.1, Active Support 1.0.2 + + +*0.10.1* (7th March, 2005) + +* Fixed rake stats to ignore editor backup files like model.rb~ #791 [skanthak] + +* Added exception shallowing if the DRb server can't be started (not worth making a fuss about to distract new users) #779 [Tobias Luetke] + +* Added an empty favicon.ico file to the public directory of new applications (so the logs are not spammed by its absence) + +* Fixed that scaffold generator new template should use local variable instead of instance variable #778 [Dan Peterson] + +* Allow unit tests to run on a remote server for PostgreSQL #781 [adamm@galacticasoftware.com] + +* Added web_service generator (run ./script/generate web_service for help) #776 [Leon Bredt] + +* Added app/apis and components to code statistics report #729 [Scott Barron] + +* Fixed WEBrick server to use ABSOLUTE_RAILS_ROOT instead of working_directory #687 [Nicholas Seckar] + +* Fixed rails_generator to be usable without RubyGems #686 [Cristi BALAN] + +* Fixed -h/--help for generate and destroy generators #331 + +* Added begin/rescue around the FCGI dispatcher so no uncaught exceptions can bubble up to kill the process (logs to log/fastcgi.crash.log) + +* Fixed that association#count would produce invalid sql when called sequentialy #659 [kanis@comcard.de] + +* Fixed test/mocks/testing to the correct test/mocks/test #740 + +* Added early failure if the Ruby version isn't 1.8.2 or above #735 + +* Removed the obsolete -i/--index option from the WEBrick servlet #743 + +* Upgraded to Active Record 1.8.0, Action Pack 1.5.1, Action Mailer 0.7.1, Action Web Service 0.6.0, Active Support 1.0.1 + + +*0.10.0* (24th February, 2005) + +* Changed default IP binding for WEBrick from 127.0.0.1 to 0.0.0.0 so that the server is accessible both locally and remotely #696 [Marcel] + +* Fixed that script/server -d was broken so daemon mode couldn't be used #687 [Nicholas Seckar] + +* Upgraded to breakpoint 92 which fixes: + + * overload IRB.parse_opts(), fixes #443 + => breakpoints in tests work even when running them via rake + * untaint handlers, might fix an issue discussed on the Rails ML + * added verbose mode to breakpoint_client + * less noise caused by breakpoint_client by default + * ignored TerminateLineInput exception in signal handler + => quiet exit on Ctrl-C + +* Added support for independent components residing in /components. Example: + + Controller: components/list/items_controller.rb + (holds a List::ItemsController class with uses_component_template_root called) + + Model : components/list/item.rb + (namespace is still shared, so an Item model in app/models will take precedence) + + Views : components/list/items/show.rhtml + + +* Added --sandbox option to script/console that'll roll back all changes made to the database when you quit #672 [Jeremy Kemper] + +* Added 'recent' as a rake target that'll run tests for files that changed in the last 10 minutes #612 [Jeremy Kemper] + +* Changed script/console to default to development environment and drop --no-inspect #650 [Jeremy Kemper] + +* Added that the 'fixture :posts' syntax can be used for has_and_belongs_to_many fixtures where a model doesn't exist #572 [Jeremy Kemper] + +* Added that running test_units and test_functional now performs the clone_structure_to_test as well #566 [rasputnik] + +* Added new generator framework that informs about its doings on generation and enables updating and destruction of generated artifacts. See the new script/destroy and script/update for more details #487 [Jeremy Kemper] + +* Added Action Web Service as a new add-on framework for Action Pack [Leon Bredt] + +* Added Active Support as an independent utility and standard library extension bundle + +* Upgraded to Active Record 1.7.0, Action Pack 1.5.0, Action Mailer 0.7.0 + + +*0.9.5* (January 25th, 2005) + +* Fixed dependency reloading by switching to a remove_const approach where all Active Records, Active Record Observers, and Action Controllers are reloading by undefining their classes. This enables you to remove methods in all three types and see the change reflected immediately and it fixes #539. This also means that only those three types of classes will benefit from the const_missing and reloading approach. If you want other classes (like some in lib/) to reload, you must use require_dependency to do it. + +* Added Florian Gross' latest version of Breakpointer and friends that fixes a variaty of bugs #441 [Florian Gross] + +* Fixed skeleton Rakefile to work with sqlite3 out of the box #521 [rasputnik] + +* Fixed that script/breakpointer didn't get the Ruby path rewritten as the other scripts #523 [brandt@kurowski.net] + +* Fixed handling of syntax errors in models that had already been succesfully required once in the current interpreter + +* Fixed that models that weren't referenced in associations weren't being reloaded in the development mode by reinstating the reload + +* Fixed that generate scaffold would produce bad functional tests + +* Fixed that FCGI can also display SyntaxErrors + +* Upgraded to Active Record 1.6.0, Action Pack 1.4.0 + + +*0.9.4.1* (January 18th, 2005) + +* Added 5-second timeout to WordNet alternatives on creating reserved-word models #501 [Marcel Molina] + +* Fixed binding of caller #496 [Alexey] + +* Upgraded to Active Record 1.5.1, Action Pack 1.3.1, Action Mailer 0.6.1 + + +*0.9.4* (January 17th, 2005) + +* Added that ApplicationController will catch a ControllerNotFound exception if someone attempts to access a url pointing to an unexisting controller [Tobias Luetke] + +* Flipped code-to-test ratio around to be more readable #468 [Scott Baron] + +* Fixed log file permissions to be 666 instead of 777 (so they're not executable) #471 [Lucas Carlson] + +* Fixed that auto reloading would some times not work or would reload the models twice #475 [Tobias Luetke] + +* Added rewrite rules to deal with caching to public/.htaccess + +* Added the option to specify a controller name to "generate scaffold" and made the default controller name the plural form of the model. + +* Added that rake clone_structure_to_test, db_structure_dump, and purge_test_database tasks now pick up the source database to use from + RAILS_ENV instead of just forcing development #424 [Tobias Luetke] + +* Fixed script/console to work with Windows (that requires the use of irb.bat) #418 [octopod] + +* Fixed WEBrick servlet slowdown over time by restricting the load path reloading to mod_ruby + +* Removed Fancy Indexing as a default option on the WEBrick servlet as it made it harder to use various caching schemes + +* Upgraded to Active Record 1.5, Action Pack 1.3, Action Mailer 0.6 + + +*0.9.3* (January 4th, 2005) + +* Added support for SQLite in the auto-dumping/importing of schemas for development -> test #416 + +* Added automated rewriting of the shebang lines on installs through the gem rails command #379 [Manfred Stienstra] + +* Added ActionMailer::Base.deliver_method = :test to the test environment so that mail objects are available in ActionMailer::Base.deliveries + for functional testing. + +* Added protection for creating a model through the generators with a name of an existing class, like Thread or Date. + It'll even offer you a synonym using wordnet.princeton.edu as a look-up. No, I'm not kidding :) [Florian Gross] + +* Fixed dependency management to happen in a unified fashion for Active Record and Action Pack using the new Dependencies module. This means that + the environment options needs to change from: + + Before in development.rb: + ActionController::Base.reload_dependencies = true   + ActiveRecord::Base.reload_associations     = true + + Now in development.rb: + Dependencies.mechanism = :load + + Before in production.rb and test.rb: + ActionController::Base.reload_dependencies = false + ActiveRecord::Base.reload_associations     = false + + Now in production.rb and test.rb: + Dependencies.mechanism = :require + +* Fixed problems with dependency caching and controller hierarchies on Ruby 1.8.2 in development mode #351 + +* Fixed that generated action_mailers doesnt need to require the action_mailer since thats already done in the environment #382 [Lucas Carlson] + +* Upgraded to Action Pack 1.2.0 and Active Record 1.4.0 + + +*0.9.2* + +* Fixed CTRL-C exists from the Breakpointer to be a clean affair without error dumping [Kent Sibilev] + +* Fixed "rake stats" to work with sub-directories in models and controllers and to report the code to test ration [Scott Baron] + +* Added that Active Record associations are now reloaded instead of cleared to work with the new const_missing hook in Active Record. + +* Added graceful handling of an inaccessible log file by redirecting output to STDERR with a warning #330 [rainmkr] + +* Added support for a -h/--help parameter in the generator #331 [Ulysses] + +* Fixed that File.expand_path in config/environment.rb would fail when dealing with symlinked public directories [mjobin] + +* Upgraded to Action Pack 1.1.0 and Active Record 1.3.0 + + +*0.9.1* + +* Upgraded to Action Pack 1.0.1 for important bug fix + +* Updated gem dependencies + + +*0.9.0* + +* Renamed public/dispatch.servlet to script/server -- it wasn't really dispatching anyway as its delegating calls to public/dispatch.rb + +* Renamed AbstractApplicationController and abstract_application.rb to ApplicationController and application.rb, so that it will be possible + for the framework to automatically pick up on app/views/layouts/application.rhtml and app/helpers/application.rb + +* Added script/console that makes it even easier to start an IRB session for interacting with the domain model. Run with no-args to + see help. + +* Added breakpoint support through the script/breakpointer client. This means that you can break out of execution at any point in + the code, investigate and change the model, AND then resume execution! Example: + + class WeblogController < ActionController::Base + def index + @posts = Post.find_all + breakpoint "Breaking out from the list" + end + end + + So the controller will accept the action, run the first line, then present you with a IRB prompt in the breakpointer window. + Here you can do things like: + + Executing breakpoint "Breaking out from the list" at .../webrick_server.rb:16 in 'breakpoint' + + >> @posts.inspect + => "[#nil, \"body\"=>nil, \"id\"=>\"1\"}>, + #\"Rails you know!\", \"body\"=>\"Only ten..\", \"id\"=>\"2\"}>]" + >> @posts.first.title = "hello from a breakpoint" + => "hello from a breakpoint" + + ...and even better is that you can examine how your runtime objects actually work: + + >> f = @posts.first + => #nil, "body"=>nil, "id"=>"1"}> + >> f. + Display all 152 possibilities? (y or n) + + Finally, when you're ready to resume execution, you press CTRL-D + +* Changed environments to be configurable through an environment variable. By default, the environment is "development", but you + can change that and set your own by configuring the Apache vhost with a string like (mod_env must be available on the server): + + SetEnv RAILS_ENV production + + ...if you're using WEBrick, you can pick the environment to use with the command-line parameters -e/--environment, like this: + + ruby public/dispatcher.servlet -e production + +* Added a new default environment called "development", which leaves the production environment to be tuned exclusively for that. + +* Added a start_server in the root of the Rails application to make it even easier to get started + +* Fixed public/.htaccess to use RewriteBase and share the same rewrite rules for all the dispatch methods + +* Fixed webrick_server to handle requests in a serialized manner (the Rails reloading infrastructure is not thread-safe) + +* Added support for controllers in directories. So you can have: + + app/controllers/account_controller.rb # URL: /account/ + app/controllers/admin/account_controller.rb # URL: /admin/account/ + + NOTE: You need to update your public/.htaccess with the new rules to pick it up + +* Added reloading for associations and dependencies under cached environments like FastCGI and mod_ruby. This makes it possible to use + those environments for development. This is turned on by default, but can be turned off with + ActiveRecord::Base.reload_associations = false and ActionController::Base.reload_dependencies = false in production environments. + +* Added support for sub-directories in app/models. So now you can have something like Basecamp with: + + app/models/accounting + app/models/project + app/models/participants + app/models/settings + + It's poor man's namespacing, but only for file-system organization. You still require files just like before. + Nothing changes inside the files themselves. + + +* Fixed a few references in the tests generated by new_mailer [Jeremy Kemper] + +* Added support for mocks in testing with test/mocks + +* Cleaned up the environments a bit and added global constant RAILS_ROOT + + +*0.8.5* (9) + +* Made dev-util available to all tests, so you can insert breakpoints in any test case to get an IRB prompt at that point [Jeremy Kemper]: + + def test_complex_stuff + @david.projects << @new_project + breakpoint "Let's have a closer look at @david" + end + + You need to install dev-utils yourself for this to work ("gem install dev-util"). + +* Added shared generator behavior so future upgrades should be possible without manually copying over files [Jeremy Kemper] + +* Added the new helper style to both controller and helper templates [Jeremy Kemper] + +* Added new_crud generator for creating a model and controller at the same time with explicit scaffolding [Jeremy Kemper] + +* Added configuration of Test::Unit::TestCase.fixture_path to test_helper to concide with the new AR fixtures style + +* Fixed that new_model was generating singular table/fixture names + +* Upgraded to Action Mailer 0.4.0 + +* Upgraded to Action Pack 0.9.5 + +* Upgraded to Active Record 1.1.0 + + +*0.8.0 (15)* + +* Removed custom_table_name option for new_model now that the Inflector is as powerful as it is + +* Changed the default rake action to just do testing and separate API generation and coding statistics into a "doc" task. + +* Fixed WEBrick dispatcher to handle missing slashes in the URLs gracefully [alexey] + +* Added user option for all postgresql tool calls in the rakefile [elvstone] + +* Fixed problem with running "ruby public/dispatch.servlet" instead of "cd public; ruby dispatch.servlet" [alexey] + +* Fixed WEBrick server so that it no longer hardcodes the ruby interpreter used to "ruby" but will get the one used based + on the Ruby runtime configuration. [Marcel Molina Jr.] + +* Fixed Dispatcher so it'll route requests to magic_beans to MagicBeansController/magic_beans_controller.rb [Caio Chassot] + +* "new_controller MagicBeans" and "new_model SubscriptionPayments" will now both behave properly as they use the new Inflector. + +* Fixed problem with MySQL foreign key constraint checks in Rake :clone_production_structure_to_test target [Andreas Schwarz] + +* Changed WEBrick server to by default be auto-reloading, which is slower but makes source changes instant. + Class compilation cache can be turned on with "-c" or "--cache-classes". + +* Added "-b/--binding" option to WEBrick dispatcher to bind the server to a specific IP address (default: 127.0.0.1) [Kevin Temp] + +* dispatch.fcgi now DOESN'T set FCGI_PURE_RUBY as it was slowing things down for now reason [Andreas Schwarz] + +* Added new_mailer generator to work with Action Mailer + +* Included new framework: Action Mailer 0.3 + +* Upgraded to Action Pack 0.9.0 + +* Upgraded to Active Record 1.0.0 + + +*0.7.0* + +* Added an optional second argument to the new_model script that allows the programmer to specify the table name, + which will used to generate a custom table_name method in the model and will also be used in the creation of fixtures. + [Kevin Radloff] + +* script/new_model now turns AccountHolder into account_holder instead of accountholder [Kevin Radloff] + +* Fixed the faulty handleing of static files with WEBrick [Andreas Schwarz] + +* Unified function_test_helper and unit_test_helper into test_helper + +* Fixed bug with the automated production => test database dropping on PostgreSQL [dhawkins] + +* create_fixtures in both the functional and unit test helper now turns off the log during fixture generation + and can generate more than one fixture at a time. Which makes it possible for assignments like: + + @people, @projects, @project_access, @companies, @accounts = + create_fixtures "people", "projects", "project_access", "companies", "accounts" + +* Upgraded to Action Pack 0.8.5 (locally-scoped variables, partials, advanced send_file) + +* Upgraded to Active Record 0.9.5 (better table_name guessing, cloning, find_all_in_collection) + + +*0.6.5* + +* No longer specifies a template for rdoc, so it'll use whatever is default (you can change it in the rakefile) + +* The new_model generator will now use the same rules for plural wordings as Active Record + (so Category will give categories, not categorys) [Kevin Radloff] + +* dispatch.fcgi now sets FCGI_PURE_RUBY to true to ensure that it's the Ruby version that's loaded [danp] + +* Made the GEM work with Windows + +* Fixed bug where mod_ruby would "forget" the load paths added when switching between controllers + +* PostgreSQL are now supported for the automated production => test database dropping [Kevin Radloff] + +* Errors thrown by the dispatcher are now properly handled in FCGI. + +* Upgraded to Action Pack 0.8.0 (lots and lots and lots of fixes) + +* Upgraded to Active Record 0.9.4 (a bunch of fixes) + + +*0.6.0* + +* Added AbstractionApplicationController as a superclass for all controllers generated. This class can be used + to carry filters and methods that are to be shared by all. It has an accompanying ApplicationHelper that all + controllers will also automatically have available. + +* Added environments that can be included from any script to get the full Active Record and Action Controller + context running. This can be used by maintenance scripts or to interact with the model through IRB. Example: + + require 'config/environments/production' + + for account in Account.find_all + account.recalculate_interests + end + + A short migration script for an account model that had it's interest calculation strategy changed. + +* Accessing the index of a controller with "/weblog" will now redirect to "/weblog/" (only on Apache, not WEBrick) + +* Simplified the default Apache config so even remote requests are served off CGI as a default. + You'll now have to do something specific to activate mod_ruby and FCGI (like using the force urls). + This should make it easier for new comers that start on an external server. + +* Added more of the necessary Apache options to .htaccess to make it easier to setup + +* Upgraded to Action Pack 0.7.9 (lots of fixes) + +* Upgraded to Active Record 0.9.3 (lots of fixes) + + +*0.5.7* + +* Fixed bug in the WEBrick dispatcher that prevented it from getting parameters from the URL + (through GET requests or otherwise) + +* Added lib in root as a place to store app specific libraries + +* Added lib and vendor to load_path, so anything store within can be loaded directly. + Hence lib/redcloth.rb can be loaded with require "redcloth" + +* Upgraded to Action Pack 0.7.8 (lots of fixes) + +* Upgraded to Active Record 0.9.2 (minor upgrade) + + +*0.5.6* + +* Upgraded to Action Pack 0.7.7 (multipart form fix) + +* Updated the generated template stubs to valid XHTML files + +* Ensure that controllers generated are capitalized, so "new_controller TodoLists" + gives the same as "new_controller Todolists" and "new_controller todolists". + + +*0.5.5* + +* Works on Windows out of the box! (Dropped symlinks) + +* Added webrick dispatcher: Try "ruby public/dispatch.servlet --help" [Florian Gross] + +* Report errors about initialization to browser (instead of attempting to use uninitialized logger) + +* Upgraded to Action Pack 0.7.6 + +* Upgraded to Active Record 0.9.1 + +* Added distinct 500.html instead of reusing 404.html + +* Added MIT license + + +*0.5.0* + +* First public release diff --git a/tracks/lkm-rails-1.2.3-upgrade/README_DEVELOPERS b/tracks/lkm-rails-1.2.3-upgrade/README_DEVELOPERS new file mode 100644 index 00000000..5849fdc0 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/README_DEVELOPERS @@ -0,0 +1,11 @@ +To run selenium tests, start Tracks in test mode using + + script/server -e test + +Then open a browser to + + http://localhost:3000/selenium/ + +and interact with the test runner. + +For more information about Selenium on Rails, see vendor/plugins/selenium-on-rails/README \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/README_RAILS b/tracks/lkm-rails-1.2.3-upgrade/README_RAILS new file mode 100644 index 00000000..7860e2bf --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/README_RAILS @@ -0,0 +1,190 @@ +== Welcome to Rails + +Rails is a web-application and persistance framework that includes everything +needed to create database-backed web-applications according to the +Model-View-Control pattern of separation. This pattern splits the view (also +called the presentation) into "dumb" templates that are primarily responsible +for inserting pre-build data in between HTML tags. The model contains the +"smart" domain objects (such as Account, Product, Person, Post) that holds all +the business logic and knows how to persist themselves to a database. The +controller handles the incoming requests (such as Save New Account, Update +Product, Show Post) by manipulating the model and directing data to the view. + +In Rails, the model is handled by what's called a object-relational mapping +layer entitled Active Record. This layer allows you to present the data from +database rows as objects and embellish these data objects with business logic +methods. You can read more about Active Record in +link:files/vendor/rails/activerecord/README.html. + +The controller and view is handled by the Action Pack, which handles both +layers by its two parts: Action View and Action Controller. These two layers +are bundled in a single package due to their heavy interdependence. This is +unlike the relationship between the Active Record and Action Pack that is much +more separate. Each of these packages can be used independently outside of +Rails. You can read more about Action Pack in +link:files/vendor/rails/actionpack/README.html. + + +== Requirements + +* Database and driver (MySQL, PostgreSQL, or SQLite) +* Rake[http://rake.rubyforge.org] for running tests and the generating documentation + +== Optionals + +* Apache 1.3.x or 2.x or lighttpd 1.3.11+ (or any FastCGI-capable webserver with a + mod_rewrite-like module) +* FastCGI (or mod_ruby) for better performance on Apache + +== Getting started + +1. Run the WEBrick servlet: ruby script/server + (run with --help for options) +2. Go to http://localhost:3000/ and get "Congratulations, you've put Ruby on Rails!" +3. Follow the guidelines on the "Congratulations, you've put Ruby on Rails!" screen + + +== Example for Apache conf + + + ServerName rails + DocumentRoot /path/application/public/ + ErrorLog /path/application/log/server.log + + + Options ExecCGI FollowSymLinks + AllowOverride all + Allow from all + Order allow,deny + + + +NOTE: Be sure that CGIs can be executed in that directory as well. So ExecCGI +should be on and ".cgi" should respond. All requests from 127.0.0.1 goes +through CGI, so no Apache restart is necessary for changes. All other requests +goes through FCGI (or mod_ruby) that requires restart to show changes. + + +== Example for lighttpd conf (with FastCGI) + + server.port = 8080 + server.bind = "127.0.0.1" + # server.event-handler = "freebsd-kqueue" # needed on OS X + + server.modules = ( "mod_rewrite", "mod_fastcgi" ) + + url.rewrite = ( "^/$" => "index.html", "^([^.]+)$" => "$1.html" ) + server.error-handler-404 = "/dispatch.fcgi" + + server.document-root = "/path/application/public" + server.errorlog = "/path/application/log/server.log" + + fastcgi.server = ( ".fcgi" => + ( "localhost" => + ( + "min-procs" => 1, + "max-procs" => 5, + "socket" => "/tmp/application.fcgi.socket", + "bin-path" => "/path/application/public/dispatch.fcgi", + "bin-environment" => ( "RAILS_ENV" => "development" ) + ) + ) + ) + + +== Debugging Rails + +Have "tail -f" commands running on both the server.log, production.log, and +test.log files. Rails will automatically display debugging and runtime +information to these files. Debugging info will also be shown in the browser +on requests from 127.0.0.1. + + +== Breakpoints + +Breakpoint support is available through the script/breakpointer client. This +means that you can break out of execution at any point in the code, investigate +and change the model, AND then resume execution! Example: + + class WeblogController < ActionController::Base + def index + @posts = Post.find_all + breakpoint "Breaking out from the list" + end + end + +So the controller will accept the action, run the first line, then present you +with a IRB prompt in the breakpointer window. Here you can do things like: + +Executing breakpoint "Breaking out from the list" at .../webrick_server.rb:16 in 'breakpoint' + + >> @posts.inspect + => "[#nil, \"body\"=>nil, \"id\"=>\"1\"}>, + #\"Rails you know!\", \"body\"=>\"Only ten..\", \"id\"=>\"2\"}>]" + >> @posts.first.title = "hello from a breakpoint" + => "hello from a breakpoint" + +...and even better is that you can examine how your runtime objects actually work: + + >> f = @posts.first + => #nil, "body"=>nil, "id"=>"1"}> + >> f. + Display all 152 possibilities? (y or n) + +Finally, when you're ready to resume execution, you press CTRL-D + + +== Console + +You can interact with the domain model by starting the console through script/console. +Here you'll have all parts of the application configured, just like it is when the +application is running. You can inspect domain models, change values, and save to the +database. Start the script without arguments will launch it in the development environment. +Passing an argument will specify a different environment, like console production. + + +== Description of contents + +app + Holds all the code that's specific to this particular application. + +app/controllers + Holds controllers that should be named like weblog_controller.rb for + automated URL mapping. All controllers should descend from + ActionController::Base. + +app/models + Holds models that should be named like post.rb. + Most models will descent from ActiveRecord::Base. + +app/views + Holds the template files for the view that should be named like + weblog/index.rhtml for the WeblogController#index action. All views uses eRuby + syntax. This directory can also be used to keep stylesheets, images, and so on + that can be symlinked to public. + +app/helpers + Holds view helpers that should be named like weblog_helper.rb. + +config + Configuration files for the Rails environment, the routing map, the database, and other dependencies. + +components + Self-contained mini-applications that can bundle controllers, models, and views together. + +lib + Application specific libraries. Basically, any kind of custom code that doesn't + belong controllers, models, or helpers. This directory is in the load path. + +public + The directory available for the web server. Contains sub-directories for images, stylesheets, + and javascripts. Also contains the dispatchers and the default HTML files. + +script + Helper scripts for automation and generation. + +test + Unit and functional tests along with fixtures. + +vendor + External libraries that the application depend on. This directory is in the load path. diff --git a/tracks/lkm-rails-1.2.3-upgrade/Rakefile b/tracks/lkm-rails-1.2.3-upgrade/Rakefile new file mode 100644 index 00000000..3bb0e859 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/Rakefile @@ -0,0 +1,10 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require(File.join(File.dirname(__FILE__), 'config', 'boot')) + +require 'rake' +require 'rake/testtask' +require 'rake/rdoctask' + +require 'tasks/rails' diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/apis/todo_api.rb b/tracks/lkm-rails-1.2.3-upgrade/app/apis/todo_api.rb new file mode 100644 index 00000000..06f359a0 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/apis/todo_api.rb @@ -0,0 +1,18 @@ +class TodoApi < ActionWebService::API::Base + api_method :new_todo, + :expects => [{:username => :string}, {:token => :string}, {:context_id => :int}, {:description => :string}], + :returns => [:int] + + api_method :new_rich_todo, + :expects => [{:username => :string}, {:token => :string}, {:default_context_id => :int}, {:description => :string}], + :returns => [:int] + + api_method :list_contexts, + :expects => [{:username => :string}, {:token => :string}], + :returns => [[Context]] + + api_method :list_projects, + :expects => [{:username => :string}, {:token => :string}], + :returns => [[Project]] + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/application.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/application.rb new file mode 100644 index 00000000..52d4b533 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/application.rb @@ -0,0 +1,176 @@ +# The filters added to this controller will be run for all controllers in the application. +# Likewise will all the methods added be available for all controllers. + +require_dependency "login_system" +require_dependency "source_view" +require "redcloth" + +require 'date' +require 'time' +Tag # We need this in development mode, or you get 'method missing' errors + +class ApplicationController < ActionController::Base + + helper :application + include LoginSystem + + layout 'standard' + + before_filter :set_session_expiration + prepend_before_filter :login_required + + after_filter :set_charset + + include ActionView::Helpers::TextHelper + helper_method :format_date, :markdown + + # By default, sets the charset to UTF-8 if it isn't already set + def set_charset + headers["Content-Type"] ||= "text/html; charset=UTF-8" + end + + def set_session_expiration + # http://wiki.rubyonrails.com/rails/show/HowtoChangeSessionOptions + unless session == nil + return if @controller_name == 'feed' or session['noexpiry'] == "on" + # If the method is called by the feed controller (which we don't have under session control) + # or if we checked the box to keep logged in on login + # don't set the session expiry time. + if session + # Get expiry time (allow ten seconds window for the case where we have none) + expiry_time = session['expiry_time'] || Time.now + 10 + if expiry_time < Time.now + # Too late, matey... bang goes your session! + reset_session + else + # Okay, you get another hour + session['expiry_time'] = Time.now + (60*60) + end + end + end + end + + def render_failure message, status = 404 + render :text => message, :status => status + end + + def rescue_action(exception) + log_error(exception) if logger + respond_to do |wants| + wants.html do + notify :warning, "An error occurred on the server." + render :action => "index" + end + wants.js { render :action => 'error' } + wants.xml { render :text => 'An error occurred on the server.' + $! } + end + end + + # Returns a count of next actions in the given context or project + # The result is count and a string descriptor, correctly pluralised if there are no + # actions or multiple actions + # + def count_undone_todos_phrase(todos_parent, string="actions") + count = count_undone_todos(todos_parent) + if count == 1 + word = string.singularize + else + word = string.pluralize + end + return count.to_s + " " + word + end + + def count_undone_todos(todos_parent) + if todos_parent.nil? + count = 0 + elsif (todos_parent.is_a?(Project) && todos_parent.hidden?) + count = eval "@project_project_hidden_todo_counts[#{todos_parent.id}]" + else + count = eval "@#{todos_parent.class.to_s.downcase}_not_done_counts[#{todos_parent.id}]" + end + count || 0 + end + + # Convert a date object to the format specified + # in config/settings.yml + # + def format_date(date) + if date + date_format = @user.prefs.date_format + formatted_date = date.strftime("#{date_format}") + else + formatted_date = '' + end + formatted_date + end + + # Uses RedCloth to transform text using either Textile or Markdown + # Need to require redcloth above + # RedCloth 3.0 or greater is needed to use Markdown, otherwise it only handles Textile + # + def markdown(text) + RedCloth.new(text).to_html + end + + def build_default_project_context_name_map(projects) + Hash[*projects.reject{ |p| p.default_context.nil? }.map{ |p| [p.name, p.default_context.name] }.flatten].to_json + end + + protected + + def admin_login_required + unless User.find_by_id_and_is_admin(session['user_id'], true) + render :text => "401 Unauthorized: Only admin users are allowed access to this function.", :status => 401 + return false + end + end + + def redirect_back_or_home + redirect_back_or_default home_url + end + + def boolean_param(param_name) + return false if param_name.blank? + s = params[param_name] + return false if s.blank? || s == false || s =~ /^false$/i + return true if s == true || s =~ /^true$/i + raise ArgumentError.new("invalid value for Boolean: \"#{s}\"") + end + + private + + def parse_date_per_user_prefs( s ) + return nil if s.blank? + Date.strptime(s, @user.prefs.date_format) + end + + def init_data_for_sidebar + @projects = @user.projects + @contexts = @user.contexts + init_not_done_counts + if @prefs.show_hidden_projects_in_sidebar + init_project_hidden_todo_counts(['project']) + end + end + + def init_not_done_counts(parents = ['project','context']) + parents.each do |parent| + eval("@#{parent}_not_done_counts = Todo.count(:conditions => ['user_id = ? and state = ?', @user.id, 'active'], :group => :#{parent}_id)") + end + end + + def init_project_hidden_todo_counts(parents = ['project','context']) + parents.each do |parent| + eval("@#{parent}_project_hidden_todo_counts = Todo.count(:conditions => ['user_id = ? and state = ?', @user.id, 'project_hidden'], :group => :#{parent}_id)") + end + end + + # Set the contents of the flash message from a controller + # Usage: notify :warning, "This is the message" + # Sets the flash of type 'warning' to "This is the message" + def notify(type, message) + flash[type] = message + logger.error("ERROR: #{message}") if type == :error + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/backend_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/backend_controller.rb new file mode 100644 index 00000000..8bb073fa --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/backend_controller.rb @@ -0,0 +1,96 @@ +class BackendController < ApplicationController + wsdl_service_name 'Backend' + web_service_api TodoApi + web_service_scaffold :invoke + skip_before_filter :login_required + + + def new_todo(username, token, context_id, description) + check_token_against_user_word(username, token) + check_context_belongs_to_user(context_id) + item = create_todo(description, context_id) + item.id + end + + def new_rich_todo(username, token, default_context_id, description) + check_token_against_user_word(username,token) + description,context = split_by_char('@',description) + description,project = split_by_char('>',description) + if(!context.nil? && project.nil?) + context,project = split_by_char('>',context) + end + + context_id = default_context_id + unless(context.nil?) + found_context = @user.contexts.find_by_namepart(context) + context_id = found_context.id unless found_context.nil? + end + check_context_belongs_to_user(context_id) + + project_id = nil + unless(project.blank?) + if(project[0..3].downcase == "new:") + found_project = @user.projects.build + found_project.name = project[4..255+4].strip + found_project.save! + else + found_project = @user.projects.find_by_namepart(project) + end + project_id = found_project.id unless found_project.nil? + end + + todo = create_todo(description, context_id, project_id) + todo.id + end + + def list_contexts(username, token) + check_token_against_user_word(username, token) + + @user.contexts + end + + def list_projects(username, token) + check_token_against_user_word(username, token) + + @user.projects + end + + private + + # Check whether the token in the URL matches the word in the User's table + def check_token_against_user_word(username, token) + @user = User.find_by_login( username ) + unless (token == @user.word) + raise(InvalidToken, "Sorry, you don't have permission to perform this action.") + end + end + + def check_context_belongs_to_user(context_id) + unless @user.contexts.exists? context_id + raise(CannotAccessContext, "Cannot access a context that does not belong to this user.") + end + end + + def create_todo(description, context_id, project_id = nil) + item = @user.todos.build + item.description = description + item.context_id = context_id + item.project_id = project_id unless project_id.nil? + item.save + raise item.errors.full_messages.to_s if item.new_record? + item + end + + def split_by_char(separator,string) + parts = string.split(separator) + return safe_strip(parts[0]), safe_strip(parts[1]) + end + + def safe_strip(s) + s.strip! unless s.nil? + s + end +end + +class InvalidToken < RuntimeError; end +class CannotAccessContext < RuntimeError; end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/contexts_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/contexts_controller.rb new file mode 100644 index 00000000..b92d7107 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/contexts_controller.rb @@ -0,0 +1,150 @@ +class ContextsController < ApplicationController + + helper :todos + + before_filter :init, :except => [:create, :destroy, :order] + before_filter :init_todos, :only => :show + before_filter :set_context_from_params, :only => [:update, :destroy] + skip_before_filter :login_required, :only => [:index] + prepend_before_filter :login_or_feed_token_required, :only => [:index] + session :off, :only => :index, :if => Proc.new { |req| ['rss','atom','txt'].include?(req.parameters[:format]) } + + def index + respond_to do |format| + format.html &render_contexts_html + format.xml { render :xml => @contexts.to_xml( :except => :user_id ) } + format.rss &render_contexts_rss_feed + format.atom &render_contexts_atom_feed + format.text { render :action => 'index_text', :layout => false, :content_type => Mime::TEXT } + end + end + + def show + @page_title = "TRACKS::Context: #{@context.name}" + end + + # Example XML usage: curl -H 'Accept: application/xml' -H 'Content-Type: application/xml' + # -u username:password + # -d 'new context_name' + # http://our.tracks.host/contexts + # + def create + if params[:format] == 'application/xml' && params['exception'] + render_failure "Expected post format is valid xml like so: context name." + return + end + @context = @user.contexts.build + params_are_invalid = true + if (params['context'] || (params['request'] && params['request']['context'])) + @context.attributes = params['context'] || params['request']['context'] + params_are_invalid = false + end + @saved = @context.save + @context_not_done_counts = { @context.id => 0 } + respond_to do |wants| + wants.js + wants.xml do + if @context.new_record? && params_are_invalid + render_failure "Expected post format is valid xml like so: context name." + elsif @context.new_record? + render_failure @context.errors.to_xml + else + render :xml => @context.to_xml( :except => :user_id ) + end + end + end + end + + # Edit the details of the context + # + def update + params['context'] ||= {} + success_text = if params['field'] == 'name' && params['value'] + params['context']['id'] = params['id'] + params['context']['name'] = params['value'] + end + @context.attributes = params["context"] + if @context.save + if params['wants_render'] + render + else + render :text => success_text || 'Success' + end + else + notify :warning, "Couldn't update new context" + render :text => "" + end + end + + # Fairly self-explanatory; deletes the context + # If the context contains actions, you'll get a warning dialogue. + # If you choose to go ahead, any actions in the context will also be deleted. + def destroy + @context.destroy + respond_to do |format| + format.js + format.xml { render :text => "Deleted context #{@context.name}" } + end + end + + # Methods for changing the sort order of the contexts in the list + # + def order + params["list-contexts"].each_with_index do |id, position| + @user.contexts.update(id, :position => position + 1) + end + render :nothing => true + end + + protected + + def render_contexts_html + lambda do + @page_title = "TRACKS::List Contexts" + @no_contexts = @contexts.empty? + render + end + end + + def render_contexts_rss_feed + lambda do + render_rss_feed_for @contexts, :feed => Context.feed_options(@user), + :item => { :description => lambda { |c| c.summary(count_undone_todos_phrase(c)) } } + end + end + + def render_contexts_atom_feed + lambda do + render_atom_feed_for @contexts, :feed => Context.feed_options(@user), + :item => { :description => lambda { |c| c.summary(count_undone_todos_phrase(c)) }, + :author => lambda { |c| nil } } + end + end + + def set_context_from_params + @context = @user.contexts.find_by_params(params) + end + + def init + @source_view = params['_source_view'] || 'context' + # If we exclude completed projects, then we can't display them in the sidebar + # if the user sets the preference for them to be shown + # @projects = @user.projects.reject { |x| x.completed? } + init_data_for_sidebar + @todos = @user.todos + @done = @user.todos.find_in_state(:all, :completed, :order => "todos.completed_at DESC") + end + + def init_todos + set_context_from_params + @done = @context.done_todos + # @not_done_todos = @context.not_done_todos + # TODO: Temporarily doing this search manually until I can work out a way + # to do the same thing using not_done_todos acts_as_todo_container method + # Hides actions in hidden projects from context. + @not_done_todos = @context.todos.find(:all, :conditions => ['todos.state = ?', 'active'], :order => "todos.due IS NULL, todos.due ASC, todos.created_at ASC", :include => :project) + @count = @not_done_todos.size + @default_project_context_name_map = build_default_project_context_name_map(@projects).to_json + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/data_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/data_controller.rb new file mode 100644 index 00000000..7e911b28 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/data_controller.rb @@ -0,0 +1,87 @@ +class DataController < ApplicationController + + require 'csv' + + def index + end + + def import + end + + def export + # Show list of formats for export + end + + # Thanks to a tip by Gleb Arshinov + # + def yaml_export + all_tables = {} + + all_tables['todos'] = @user.todos.find(:all) + all_tables['contexts'] = @user.contexts.find(:all) + all_tables['projects'] = @user.projects.find(:all) + all_tables['notes'] = @user.notes.find(:all) + + result = all_tables.to_yaml + result.gsub!(/\n/, "\r\n") # TODO: general functionality for line endings + send_data(result, :filename => "tracks_backup.yml", :type => 'text/plain') + end + + def csv_actions + content_type = 'text/csv' + CSV::Writer.generate(result = "") do |csv| + csv << ["ID", "Context", "Project", "Description", "Notes", + "Created at", "Due", "Completed at", "User ID", "Show from", + "state"] + @user.todos.find(:all, :include => [:context, :project]).each do |todo| + # Format dates in ISO format for easy sorting in spreadsheet + # Print context and project names for easy viewing + csv << [todo.id, todo.context.name, + todo.project_id = todo.project_id.nil? ? "" : todo.project.name, + todo.description, + todo.notes, todo.created_at.to_formatted_s(:db), + todo.due = todo.due? ? todo.due.to_formatted_s(:db) : "", + todo.completed_at = todo.completed_at? ? todo.completed_at.to_formatted_s(:db) : "", + todo.user_id, + todo.show_from = todo.show_from? ? todo.show_from.to_formatted_s(:db) : "", + todo.state] + end + end + send_data(result, :filename => "todos.csv", :type => content_type) + end + + def csv_notes + content_type = 'text/csv' + CSV::Writer.generate(result = "") do |csv| + csv << ["ID", "User ID", "Project", "Note", + "Created at", "Updated at"] + @user.notes.find(:all, :include => [:project]).each do |note| + # Format dates in ISO format for easy sorting in spreadsheet + # Print context and project names for easy viewing + csv << [note.id, note.user_id, + note.project_id = note.project_id.nil? ? "" : note.project.name, + note.body, note.created_at.to_formatted_s(:db), + note.updated_at.to_formatted_s(:db)] + end + end + send_data(result, :filename => "notes.csv", :type => content_type) + end + + def xml_export + result = "" + result << @user.todos.find(:all).to_xml + result << @user.contexts.find(:all).to_xml(:skip_instruct => true) + result << @user.projects.find(:all).to_xml(:skip_instruct => true) + result << @user.notes.find(:all).to_xml(:skip_instruct => true) + send_data(result, :filename => "tracks_backup.xml", :type => 'text/xml') + end + + def yaml_form + # Draw the form to input the YAML text data + end + + def yaml_import + # Logic to load the YAML text file and create new records from data + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/feedlist_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/feedlist_controller.rb new file mode 100644 index 00000000..383125e7 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/feedlist_controller.rb @@ -0,0 +1,11 @@ +class FeedlistController < ApplicationController + + helper :feedlist + + def index + @page_title = 'TRACKS::Feeds' + init_data_for_sidebar + render :layout => 'standard' + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/login_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/login_controller.rb new file mode 100644 index 00000000..abef4a15 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/login_controller.rb @@ -0,0 +1,129 @@ +class LoginController < ApplicationController + + layout 'login' + skip_before_filter :set_session_expiration + skip_before_filter :login_required + before_filter :get_current_user + open_id_consumer if Tracks::Config.openid_enabled? + + def login + @page_title = "TRACKS::Login" + @openid_url = cookies[:openid_url] if Tracks::Config.openid_enabled? + case request.method + when :post + if @user = User.authenticate(params['user_login'], params['user_password']) + session['user_id'] = @user.id + # If checkbox on login page checked, we don't expire the session after 1 hour + # of inactivity + session['noexpiry'] = params['user_noexpiry'] + msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire." + notify :notice, "Login successful: session #{msg}" + cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year } + redirect_back_or_home + else + @login = params['user_login'] + notify :warning, "Login unsuccessful" + end + when :get + if User.no_users_yet? + redirect_to :controller => 'users', :action => 'new' + end + end + end + + def begin + # If the URL was unusable (either because of network conditions, + # a server error, or that the response returned was not an OpenID + # identity page), the library will return HTTP_FAILURE or PARSE_ERROR. + # Let the user know that the URL is unusable. + case open_id_response.status + when OpenID::SUCCESS + session['openid_url'] = params[:openid_url] + session['user_noexpiry'] = params[:user_noexpiry] + # The URL was a valid identity URL. Now we just need to send a redirect + # to the server using the redirect_url the library created for us. + + # redirect to the server + redirect_to open_id_response.redirect_url((request.protocol + request.host_with_port + "/"), url_for(:action => 'complete')) + else + notify :warning, "Unable to find openid server for #{openid_url}" + redirect_to :action => 'login' + end + end + + def complete + openid_url = session['openid_url'] + if openid_url.blank? + notify :error, "expected an openid_url" + end + + case open_id_response.status + when OpenID::FAILURE + # In the case of failure, if info is non-nil, it is the + # URL that we were verifying. We include it in the error + # message to help the user figure out what happened. + if open_id_response.identity_url + msg = "Verification of #{openid_url}(#{open_id_response.identity_url}) failed. " + else + msg = "Verification failed. " + end + notify :error, open_id_response.msg.to_s + msg + + when OpenID::SUCCESS + # Success means that the transaction completed without + # error. If info is nil, it means that the user cancelled + # the verification. + @user = User.find_by_open_id_url(openid_url) + unless (@user.nil?) + session['user_id'] = @user.id + session['noexpiry'] = session['user_noexpiry'] + msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire." + notify :notice, "You have successfully verified #{openid_url} as your identity. Login successful: session #{msg}" + cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year } + cookies[:openid_url] = { :value => openid_url, :expires => Time.now + 1.year } + redirect_back_or_home + else + notify :warning, "You have successfully verified #{openid_url} as your identity, but you do not have a Tracks account. Please ask your administrator to sign you up." + end + + when OpenID::CANCEL + notify :warning, "Verification cancelled." + + else + notify :warning, "Unknown response status: #{open_id_response.status}" + end + redirect_to :action => 'login' unless performed? + end + + def logout + session['user_id'] = nil + reset_session + notify :notice, "You have been logged out of Tracks." + redirect_to :action => "login" + end + + def check_expiry + # Gets called by periodically_call_remote to check whether + # the session has timed out yet + unless session == nil + if session + return unless should_expire_sessions? + # Get expiry time (allow ten seconds window for the case where we have none) + expiry_time = session['expiry_time'] || Time.now + 10 + @time_left = expiry_time - Time.now + if @time_left < (10*60) # Session will time out before the next check + @msg = "Session has timed out. Please " + else + @msg = "" + end + end + end + end + + private + + def should_expire_sessions? + session['noexpiry'] != "on" + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/mobile_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/mobile_controller.rb new file mode 100644 index 00000000..90459347 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/mobile_controller.rb @@ -0,0 +1,89 @@ +class MobileController < ApplicationController + + layout 'mobile' + + before_filter :init, :except => :update + + # Plain list of all next actions, paginated 6 per page + # Sorted by due date, then creation date + # + def index + @page_title = @desc = "All actions" + @todos_pages, @todos = paginate( :todos, :order => 'due IS NULL, due ASC, created_at ASC', + :conditions => ['user_id = ? and state = ?', @user.id, "active"], + :per_page => 6 ) + @count = @all_todos.reject { |x| !x.active? || x.context.hide? }.size + end + + def detail + @item = check_user_return_item + @place = @item.context.id + end + + def update + if params[:id] + @item = check_user_return_item + @item.update_attributes params[:todo] + if params[:todo][:state] == "1" + @item.state = "completed" + else + @item.state = "active" + end + else + params[:todo][:user_id] = @user.id + @item = Todo.new(params[:todo]) if params[:todo] + end + + if @item.save + redirect_to :action => 'index' + else + self.init + if params[:id] + render :partial => 'mobile_edit' + else + render :action => 'show_add_form' + end + end + end + + def show_add_form + # Just render the view + end + + def filter + @type = params[:type] + case params[:type] + when 'context' + @context = Context.find( params[:context][:id] ) + @page_title = @desc = "#{@context.name}" + @todos = Todo.find( :all, :order => 'due IS NULL, due ASC, created_at ASC', + :conditions => ['user_id = ? and state = ? and context_id = ?', @user.id, "active", @context.id] ) + @count = @all_todos.reject { |x| x.completed? || x.context_id != @context.id }.size + when 'project' + @project = Project.find( params[:project][:id] ) + @page_title = @desc = "#{@project.name}" + @todos = Todo.find( :all, :order => 'due IS NULL, due ASC, created_at ASC', + :conditions => ['user_id = ? and state = ? and project_id = ?', @user.id, "active", @project.id] ) + @count = @all_todos.reject { |x| x.completed? || x.project_id != @project.id }.size + end + end + + protected + + def check_user_return_item + item = Todo.find( params['id'] ) + if @user == item.user + return item + else + notify :warning, "Item and session user mis-match: #{item.user.name} and #{@user.name}!" + render_text "" + end + end + + def init + @contexts = @user.contexts.find(:all, :order => 'position ASC') + @projects = @user.projects.find_in_state(:all, :active, :order => 'position ASC') + @all_todos = @user.todos.find(:all, :conditions => ['state = ? or state = ?', "active", "completed"]) + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/notes_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/notes_controller.rb new file mode 100644 index 00000000..03447eb7 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/notes_controller.rb @@ -0,0 +1,61 @@ +class NotesController < ApplicationController + + def index + @all_notes = @user.notes + @page_title = "TRACKS::All notes" + respond_to do |wants| + wants.html + wants.xml { render :xml => @all_notes.to_xml( :except => :user_id ) } + end + end + + def show + @note = check_user_return_note + @page_title = "TRACKS::Note " + @note.id.to_s + end + + # Add a new note to this project + # + def create + note = @user.notes.build + note.attributes = params["new_note"] + + if note.save + render :partial => 'notes_summary', :object => note + else + render :text => '' + end + end + + def destroy + note = check_user_return_note + if note.destroy + render :text => '' + else + notify :warning, "Couldn't delete note \"#{note.id.to_s}\"" + render :text => '' + end + end + + def update + note = check_user_return_note + note.attributes = params["note"] + if note.save + render :partial => 'notes', :object => note + else + notify :warning, "Couldn't update note \"#{note.id.to_s}\"" + render :text => '' + end + end + + protected + + def check_user_return_note + note = Note.find_by_id( params['id'] ) + if @user == note.user + return note + else + render :text => '' + end + end +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/preferences_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/preferences_controller.rb new file mode 100644 index 00000000..89ae0a51 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/preferences_controller.rb @@ -0,0 +1,25 @@ +class PreferencesController < ApplicationController + + def index + @page_title = "TRACKS::Preferences" + @prefs = @user.preference + end + + def edit + @page_title = "TRACKS::Edit Preferences" + @prefs = @user.preference + + render :object => @prefs + end + + def update + user_success = @user.update_attributes(params['user']) + prefs_success = @user.preference.update_attributes(params['prefs']) + if user_success && prefs_success + redirect_to :action => 'index' + else + render :action => 'edit' + end + end + +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/projects_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/projects_controller.rb new file mode 100644 index 00000000..f9bee11f --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/projects_controller.rb @@ -0,0 +1,204 @@ +class ProjectsController < ApplicationController + + helper :application, :todos, :notes + before_filter :init, :except => [:create, :destroy, :order] + before_filter :set_project_from_params, :only => [:update, :destroy, :show] + before_filter :default_context_filter, :only => [:create,:update] + skip_before_filter :login_required, :only => [:index] + prepend_before_filter :login_or_feed_token_required, :only => [:index] + session :off, :only => :index, :if => Proc.new { |req| ['rss','atom','txt'].include?(req.parameters[:format]) } + + def index + if params[:only_active_with_no_next_actions] + @projects = @projects.select { |p| p.active? && count_undone_todos(p) == 0 } + end + respond_to do |format| + format.html &render_projects_html + format.xml { render :xml => @projects.to_xml( :except => :user_id ) } + format.rss &render_rss_feed + format.atom &render_atom_feed + format.text &render_text_feed + end + end + + def show + @page_title = "TRACKS::Project: #{@project.name}" + @not_done = @project.not_done_todos(:include_project_hidden_todos => true) + @deferred = @project.deferred_todos + @done = @project.done_todos + @count = @not_done.size + @next_project = @user.projects.next_from(@project) + @previous_project = @user.projects.previous_from(@project) + @default_project_context_name_map = build_default_project_context_name_map(@projects).to_json + end + + # Example XML usage: curl -H 'Accept: application/xml' -H 'Content-Type: application/xml' + # -u username:password + # -d 'new project_name' + # http://our.tracks.host/projects + # + def create + if params[:format] == 'application/xml' && params['exception'] + render_failure "Expected post format is valid xml like so: project name." + return + end + @project = @user.projects.build + params_are_invalid = true + if (params['project'] || (params['request'] && params['request']['project'])) + @project.attributes = params['project'] || params['request']['project'] + params_are_invalid = false + end + @go_to_project = params['go_to_project'] + @saved = @project.save + @project_not_done_counts = { @project.id => 0 } + @active_projects_count = @user.projects.count(:conditions => "state = 'active'") + @contexts = @user.contexts + respond_to do |wants| + wants.js + wants.xml do + if @project.new_record? && params_are_invalid + render_failure "Expected post format is valid xml like so: project name." + elsif @project.new_record? + render_failure @project.errors.full_messages.join(', ') + else + render :xml => @project.to_xml( :except => :user_id ) + end + end + end + end + + # Edit the details of the project + # + def update + params['project'] ||= {} + if params['project']['state'] + @state_changed = @project.state != params['project']['state'] + logger.info "@state_changed: #{@project.state} == #{params['project']['state']} != #{@state_changed}" + @project.transition_to(params['project']['state']) + params['project'].delete('state') + end + success_text = if params['field'] == 'name' && params['value'] + params['project']['id'] = params['id'] + params['project']['name'] = params['value'] + end + @project.attributes = params['project'] + if @project.save + if boolean_param('wants_render') + if (@project.hidden?) + @project_project_hidden_todo_counts = Hash.new + @project_project_hidden_todo_counts[@project.id] = @project.reload().not_done_todo_count(:include_project_hidden_todos => true) + else + @project_not_done_counts[@project.id] = @project.reload().not_done_todo_count(:include_project_hidden_todos => true) + end + @active_projects_count = @user.projects.count(:conditions => "state = 'active'") + @hidden_projects_count = @user.projects.count(:conditions => "state = 'hidden'") + @completed_projects_count = @user.projects.count(:conditions => "state = 'completed'") + render + elsif boolean_param('update_status') + render :action => 'update_status' + elsif boolean_param('update_default_context') + render :action => 'update_default_context' + else + render :text => success_text || 'Success' + end + else + notify :warning, "Couldn't update project" + render :text => '' + end + end + + def destroy + @project.destroy + @active_projects_count = @user.projects.count(:conditions => "state = 'active'") + @hidden_projects_count = @user.projects.count(:conditions => "state = 'hidden'") + @completed_projects_count = @user.projects.count(:conditions => "state = 'completed'") + respond_to do |format| + format.js + format.xml { render :text => "Deleted project #{@project.name}" } + end + end + + def order + project_ids = params["list-active-projects"] || params["list-hidden-projects"] || params["list-completed-projects"] + projects = @user.projects.update_positions( project_ids ) + render :nothing => true + rescue + notify :error, $! + redirect_to :action => 'index' + end + + protected + + def render_projects_html + lambda do + init_project_hidden_todo_counts + @page_title = "TRACKS::List Projects" + @active_projects = @projects.select{ |p| p.active? } + @hidden_projects = @projects.select{ |p| p.hidden? } + @completed_projects = @projects.select{ |p| p.completed? } + @no_projects = @projects.empty? + @projects.cache_note_counts + @new_project = @user.projects.build + render + end + end + + def render_rss_feed + lambda do + render_rss_feed_for @projects, :feed => Project.feed_options(@user), + :item => { :title => :name, :description => lambda { |p| summary(p) } } + end + end + + def render_atom_feed + lambda do + render_atom_feed_for @projects, :feed => Project.feed_options(@user), + :item => { :description => lambda { |p| summary(p) }, + :title => :name, + :author => lambda { |p| nil } } + end + end + + def render_text_feed + lambda do + init_project_hidden_todo_counts(['project']) + render :action => 'index_text', :layout => false, :content_type => Mime::TEXT + end + end + + def set_project_from_params + @project = @user.projects.find_by_params(params) + end + + def init + @source_view = params['_source_view'] || 'project' + @projects = @user.projects + @contexts = @user.contexts + @todos = @user.todos + @done = @user.todos.find_in_state(:all, :completed, :order => "completed_at DESC") + init_data_for_sidebar + end + + def default_context_filter + p = params['project'] + p = params['request']['project'] if p.nil? && params['request'] + p = {} if p.nil? + default_context_name = p['default_context_name'] + p.delete('default_context_name') + + unless default_context_name.blank? + default_context = Context.find_or_create_by_name(default_context_name) + p['default_context_id'] = default_context.id + end + end + + def summary(project) + project_description = '' + project_description += sanitize(markdown( project.description )) unless project.description.blank? + project_description += "

#{count_undone_todos_phrase(p)}. " + project_description += "Project is #{project.state}." + project_description += "

" + project_description + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/todos_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/todos_controller.rb new file mode 100644 index 00000000..36575c90 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/todos_controller.rb @@ -0,0 +1,490 @@ +class TodosController < ApplicationController + + helper :todos + + append_before_filter :init, :except => [ :destroy, :completed, :completed_archive, :check_deferred ] + append_before_filter :get_todo_from_params, :only => [ :edit, :toggle_check, :show, :update, :destroy ] + skip_before_filter :login_required, :only => [:index] + prepend_before_filter :login_or_feed_token_required, :only => [:index] + session :off, :only => :index, :if => Proc.new { |req| is_feed_request(req) } + + layout 'standard' + + def index + @projects = @user.projects.find(:all, :include => [ :todos ]) + @contexts = @user.contexts.find(:all, :include => [ :todos ]) + + @contexts_to_show = @contexts.reject {|x| x.hide? } + + respond_to do |format| + format.html &render_todos_html + format.xml { render :action => 'list.rxml', :layout => false } + format.rss &render_rss_feed + format.atom &render_atom_feed + format.text &render_text_feed + format.ics &render_ical_feed + end + end + + def create + @todo = @user.todos.build + p = params['request'] || params + + if p['todo']['show_from'] + p['todo']['show_from'] = parse_date_per_user_prefs(p['todo']['show_from']) + end + + @todo.attributes = p['todo'] + + if p['todo']['project_id'].blank? && !p['project_name'].blank? && p['project_name'] != 'None' + project = @user.projects.find_by_name(p['project_name'].strip) + unless project + project = @user.projects.build + project.name = p['project_name'].strip + project.save + @new_project_created = true + end + @todo.project_id = project.id + end + + if p['todo']['context_id'].blank? && !p['context_name'].blank? + context = @user.contexts.find_by_name(p['context_name'].strip) + unless context + context = @user.contexts.build + context.name = p['context_name'].strip + context.save + @new_context_created = true + @not_done_todos = [@todo] + end + @todo.context_id = context.id + end + + if @todo.due? + @todo.due = parse_date_per_user_prefs(p['todo']['due']) + else + @todo.due = "" + end + + @saved = @todo.save + if @saved + @todo.tag_with(params[:tag_list],@user) + @todo.reload + end + + respond_to do |wants| + wants.html { redirect_to :action => "index" } + wants.js do + if @saved + determine_down_count + end + render :action => 'create' + end + wants.xml { render :xml => @todo.to_xml( :root => 'todo', :except => :user_id ) } + end + end + + def edit + end + + def show + respond_to do |format| + format.xml { render :xml => @todo.to_xml( :root => 'todo', :except => :user_id ) } + end + end + + # Toggles the 'done' status of the action + # + def toggle_check + @todo.toggle_completion! + @saved = @todo.save + respond_to do |format| + format.js do + if @saved + @remaining_undone_in_context = @user.contexts.find(@todo.context_id).not_done_todo_count + determine_down_count + determine_completed_count + end + render + end + format.html do + if @saved + # TODO: I think this will work, but can't figure out how to test it + notify :notice, "The action '#{@todo.description}' was marked as #{@todo.completed? ? 'complete' : 'incomplete' }" + redirect_to :action => "index" + else + notify :notice, "The action '#{@todo.description}' was NOT marked as #{@todo.completed? ? 'complete' : 'incomplete' } due to an error on the server.", "index" + redirect_to :action => "index" + end + end + end + end + + def update + @todo.tag_with(params[:tag_list],@user) + @original_item_context_id = @todo.context_id + @original_item_project_id = @todo.project_id + @original_item_was_deferred = @todo.deferred? + if params['todo']['project_id'].blank? && !params['project_name'].nil? + if params['project_name'] == 'None' + project = Project.null_object + else + project = @user.projects.find_by_name(params['project_name'].strip) + unless project + project = @user.projects.build + project.name = params['project_name'].strip + project.save + @new_project_created = true + end + end + params["todo"]["project_id"] = project.id + end + + if params['todo']['context_id'].blank? && !params['context_name'].blank? + context = @user.contexts.find_by_name(params['context_name'].strip) + unless context + context = @user.contexts.build + context.name = params['context_name'].strip + context.save + @new_context_created = true + end + params["todo"]["context_id"] = context.id + end + + if params["todo"].has_key?("due") + params["todo"]["due"] = parse_date_per_user_prefs(params["todo"]["due"]) + else + params["todo"]["due"] = "" + end + + if params['todo']['show_from'] + params['todo']['show_from'] = parse_date_per_user_prefs(params['todo']['show_from']) + end + + @saved = @todo.update_attributes params["todo"] + @context_changed = @original_item_context_id != @todo.context_id + @todo_was_activated_from_deferred_state = @original_item_was_deferred && @todo.active? + if @context_changed then @remaining_undone_in_context = @user.contexts.find(@original_item_context_id).not_done_todo_count; end + @project_changed = @original_item_project_id != @todo.project_id + if (@project_changed && !@original_item_project_id.nil?) then @remaining_undone_in_project = @user.projects.find(@original_item_project_id).not_done_todo_count; end + determine_down_count + end + + def destroy + @todo = get_todo_from_params + @context_id = @todo.context_id + @project_id = @todo.project_id + @saved = @todo.destroy + + respond_to do |wants| + + wants.html do + if @saved + notify :notice, "Successfully deleted next action", 2.0 + redirect_to :action => 'index' + else + notify :error, "Failed to delete the action", 2.0 + redirect_to :action => 'index' + end + end + + wants.js do + if @saved + determine_down_count + source_view do |from| + from.todo do + @remaining_undone_in_context = @user.contexts.find(@context_id).not_done_todo_count + end + end + end + render + end + + wants.xml { render :text => '200 OK. Action deleted.', :status => 200 } + + end + end + + def completed + @page_title = "TRACKS::Completed tasks" + @done = @user.completed_todos + @done_today = @done.completed_within @user.time - 1.day + @done_this_week = @done.completed_within @user.time - 1.week + @done_this_month = @done.completed_within @user.time - 4.week + end + + def completed_archive + @page_title = "TRACKS::Archived completed tasks" + @done = @user.completed_todos + @done_archive = @done.completed_more_than @user.time - 28.days + end + + def list_deferred + @source_view = 'deferred' + @page_title = "TRACKS::Tickler" + @tickles = @user.deferred_todos + @count = @tickles.size + @default_project_context_name_map = build_default_project_context_name_map(@projects).to_json + end + + # Check for any due tickler items, activate them + # Called by periodically_call_remote + def check_deferred + @due_tickles = @user.deferred_todos.find_and_activate_ready + respond_to do |format| + format.html { redirect_to home_path } + format.js + end + end + + # /todos/tag/[tag_name] shows all the actions tagged with tag_name + # + def tag + + @tag = tag_name = params[:name] + + if Tag.find_by_name(tag_name).nil? + # TODO: This doesn't work - you get kicked back to the index + # with a generic "Error occured on the server error" + notify :error, "Tag \'#{@tag}\' does not exist", 2.0 + @not_done_todos = [] + else + tag_collection = Tag.find_by_name(tag_name).todos + @not_done_todos = tag_collection.find(:all, :conditions => ['taggings.user_id = ? and state = ?', @user.id, 'active']) + end + + @contexts = @user.contexts.find(:all, :include => [ :todos ]) + @contexts_to_show = @contexts.reject {|x| x.hide? } + + @page_title = "TRACKS::Tagged with \'#{@tag}\'" + # If you've set no_completed to zero, the completed items box + # isn't shown on the home page + max_completed = @user.prefs.show_number_completed + @done = @user.completed_todos.find(:all, :limit => max_completed, :include => [ :context, :project, :tags ]) unless max_completed == 0 + # Set count badge to number of items with this tag + @not_done_todos.empty? ? @count = 0 : @count = @not_done_todos.size + @default_project_context_name_map = build_default_project_context_name_map(@projects).to_json + + end + + private + + def get_todo_from_params + @todo = @user.todos.find(params['id']) + end + + def init + @source_view = params['_source_view'] || 'todo' + init_data_for_sidebar + init_todos + end + + def with_feed_query_scope(&block) + unless TodosController.is_feed_request(request) + yield + return + end + + condition_builder = FindConditionBuilder.new + options = Hash.new + + if params.key?('done') + condition_builder.add 'todos.state = ?', 'completed' + else + condition_builder.add 'todos.state = ?', 'active' + end + + @title = "Tracks - Next Actions" + @description = "Filter: " + + if params.key?('due') + due_within = params['due'].to_i + due_within_when = @user.time + due_within.days + condition_builder.add('todos.due <= ?', due_within_when) + due_within_date_s = due_within_when.strftime("%Y-%m-%d") + @title << " due today" if (due_within == 0) + @title << " due within a week" if (due_within == 6) + @description << " with a due date #{due_within_date_s} or earlier" + end + + if params.key?('done') + done_in_last = params['done'].to_i + condition_builder.add('todos.completed_at >= ?', @user.time - done_in_last.days) + @title << " actions completed" + @description << " in the last #{done_in_last.to_s} days" + end + + Todo.with_scope :find => {:conditions => condition_builder.to_conditions} do + yield + end + + end + + def with_parent_resource_scope(&block) + if (params[:context_id]) + context = @user.contexts.find_by_params(params) + Todo.with_scope :find => {:conditions => ['todos.context_id = ?', context.id]} do + yield + end + elsif (params[:project_id]) + project = @user.projects.find_by_params(params) + Todo.with_scope :find => {:conditions => ['todos.project_id = ?', project.id]} do + yield + end + else + yield + end + end + + def with_limit_scope(&block) + if params.key?('limit') + Todo.with_scope :find => {:limit => params['limit']} do + yield + end + #@description = limit ? "Lists the last #{limit} incomplete next actions" : "Lists incomplete next actions" + else + yield + end + end + + def init_todos + with_feed_query_scope do + with_parent_resource_scope do + with_limit_scope do + + # Exclude hidden projects from count on home page + @todos = @user.todos.find(:all, :conditions => ['todos.state = ? or todos.state = ?', 'active', 'complete'], :include => [ :project, :context, :tags ]) + + # Exclude hidden projects from the home page + @not_done_todos = @user.todos.find(:all, :conditions => ['todos.state = ?', 'active'], :order => "todos.due IS NULL, todos.due ASC, todos.created_at ASC", :include => [ :project, :context, :tags ]) + + end + end + end + end + + def determine_down_count + source_view do |from| + from.todo do + @down_count = Todo.count_by_sql(['SELECT COUNT(*) FROM todos, contexts WHERE todos.context_id = contexts.id and todos.user_id = ? and todos.state = ? and contexts.hide = ?', @user.id, 'active', false]) + end + from.context do + @down_count = @user.contexts.find(@todo.context_id).not_done_todo_count + end + from.project do + unless @todo.project_id == nil + @down_count = @user.projects.find(@todo.project_id).not_done_todo_count + @deferred_count = @user.projects.find(@todo.project_id).deferred_todo_count + end + end + from.deferred do + @down_count = @user.todos.count_in_state(:deferred) + end + end + end + + def determine_completed_count + source_view do |from| + from.todo do + @completed_count = Todo.count_by_sql(['SELECT COUNT(*) FROM todos, contexts WHERE todos.context_id = contexts.id and todos.user_id = ? and todos.state = ? and contexts.hide = ?', @user.id, 'completed', false]) + end + from.context do + @completed_count = @user.contexts.find(@todo.context_id).done_todo_count + end + from.project do + unless @todo.project_id == nil + @completed_count = @user.projects.find(@todo.project_id).done_todo_count + end + end + end + end + + def render_todos_html + lambda do + @page_title = "TRACKS::List tasks" + + # If you've set no_completed to zero, the completed items box + # isn't shown on the home page + max_completed = @user.prefs.show_number_completed + @done = @user.completed_todos.find(:all, :limit => max_completed, :include => [ :context, :project, :tags ]) unless max_completed == 0 + + # Set count badge to number of not-done, not hidden context items + @count = @todos.reject { |x| !x.active? || x.context.hide? }.size + + @default_project_context_name_map = build_default_project_context_name_map(@projects).to_json + + render + end + end + + def render_rss_feed + lambda do + render_rss_feed_for @todos, :feed => Todo.feed_options(@user), + :item => { + :title => :description, + :link => lambda { |t| context_url(t.context) }, + :description => todo_feed_content + } + end + end + + def todo_feed_content + lambda do |i| + item_notes = sanitize(markdown( i.notes )) if i.notes? + due = "
Due: #{format_date(i.due)}
\n" if i.due? + done = "
Completed: #{format_date(i.completed_at)}
\n" if i.completed? + context_link = "#{ i.context.name }" + if i.project_id? + project_link = "#{ i.project.name }" + else + project_link = "none" + end + "#{done||''}#{due||''}#{item_notes||''}\n
Project: #{project_link}
\n
Context: #{context_link}
" + end + end + + def render_atom_feed + lambda do + render_atom_feed_for @todos, :feed => Todo.feed_options(@user), + :item => { + :title => :description, + :link => lambda { |t| context_url(t.context) }, + :description => todo_feed_content, + :author => lambda { |p| nil } + } + end + end + + def render_text_feed + lambda do + render :action => 'index_text', :layout => false, :content_type => Mime::TEXT + end + end + + def render_ical_feed + lambda do + render :action => 'index_ical', :layout => false, :content_type => Mime::ICS + end + end + + def self.is_feed_request(req) + ['rss','atom','txt','ics'].include?(req.parameters[:format]) + end + + class FindConditionBuilder + + def initialize + @queries = Array.new + @params = Array.new + end + + def add(query, param) + @queries << query + @params << param + end + + def to_conditions + [@queries.join(' AND ')] + @params + end + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/controllers/users_controller.rb b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/users_controller.rb new file mode 100644 index 00000000..3821815b --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/controllers/users_controller.rb @@ -0,0 +1,251 @@ +class UsersController < ApplicationController + + if Tracks::Config.openid_enabled? + open_id_consumer + before_filter :begin_open_id_auth, :only => :update_auth_type + end + + before_filter :admin_login_required, :only => [ :index, :show, :destroy ] + skip_before_filter :login_required, :only => [ :new, :create ] + prepend_before_filter :login_optional, :only => [ :new, :create ] + + # GET /users + # GET /users.xml + def index + @users = User.find(:all, :order => 'login') + respond_to do |format| + format.html do + @page_title = "TRACKS::Manage Users" + @user_pages, @users = paginate :users, :order => 'login ASC', :per_page => 10 + @total_users = User.count + # When we call users/signup from the admin page + # we store the URL so that we get returned here when signup is successful + store_location + end + format.xml { render :xml => @users.to_xml(:except => [ :password ]) } + end + end + + # GET /users/somelogin + # GET /users/somelogin.xml + def show + @user = User.find_by_login(params[:id]) + render :xml => @user.to_xml(:except => [ :password ]) + end + + # GET /users/new + def new + if User.no_users_yet? + @page_title = "TRACKS::Sign up as the admin user" + @heading = "Welcome to TRACKS. To get started, please create an admin account:" + @user = get_new_user + elsif @user && @user.is_admin? + @page_title = "TRACKS::Sign up a new user" + @heading = "Sign up a new user:" + @user = get_new_user + else # all other situations (i.e. a non-admin is logged in, or no one is logged in, but we have some users) + @page_title = "TRACKS::No signups" + @admin_email = User.find_admin.preference.admin_email + render :action => "nosignup", :layout => "login" + return + end + render :layout => "login" + end + + # Example usage: curl -H 'Accept: application/xml' -H 'Content-Type: application/xml' + # -u admin:up2n0g00d + # -d 'usernameabc123' + # http://our.tracks.host/users + # + # POST /users + # POST /users.xml + def create + if params['exception'] + render_failure "Expected post format is valid xml like so: usernameabc123." + return + end + respond_to do |format| + format.html do + unless User.no_users_yet? || (@user && @user.is_admin?) + @page_title = "No signups" + @admin_email = User.find_admin.preference.admin_email + render :action => "nosignup", :layout => "login" + return + end + + user = User.new(params['user']) + unless user.valid? + session['new_user'] = user + redirect_to :action => 'new' + return + end + + first_user_signing_up = User.no_users_yet? + user.is_admin = true if first_user_signing_up + if user.save + @user = User.authenticate(user.login, params['user']['password']) + @user.create_preference + @user.save + session['user_id'] = @user.id if first_user_signing_up + notify :notice, "Signup successful for user #{@user.login}." + redirect_back_or_home + end + return + end + format.xml do + unless User.find_by_id_and_is_admin(session['user_id'], true) + render :text => "401 Unauthorized: Only admin users are allowed access to this function.", :status => 401 + return + end + unless check_create_user_params + render_failure "Expected post format is valid xml like so: usernameabc123." + return + end + user = User.new(params[:request]) + user.password_confirmation = params[:request][:password] + if user.save + render :text => "User created.", :status => 200 + else + render_failure user.errors.to_xml + end + return + end + end + end + + # DELETE /users/somelogin + # DELETE /users/somelogin.xml + def destroy + @deleted_user = User.find_by_id(params[:id]) + @saved = @deleted_user.destroy + @total_users = User.find(:all).size + + respond_to do |format| + format.html do + if @saved + notify :notice, "Successfully deleted user #{@deleted_user.login}", 2.0 + else + notify :error, "Failed to delete user #{@deleted_user.login}", 2.0 + end + redirect_to users_url + end + format.js + format.xml { head :ok } + end + end + + + def change_password + @page_title = "TRACKS::Change password" + end + + def update_password + @user.change_password(params[:updateuser][:password], params[:updateuser][:password_confirmation]) + notify :notice, "Password updated." + redirect_to :controller => 'preferences' + rescue Exception => error + notify :error, error.message + redirect_to :action => 'change_password' + end + + def change_auth_type + @page_title = "TRACKS::Change authentication type" + end + + def update_auth_type + if (params[:user][:auth_type] == 'open_id') && Tracks::Config.openid_enabled? + case open_id_response.status + when OpenID::SUCCESS + # The URL was a valid identity URL. Now we just need to send a redirect + # to the server using the redirect_url the library created for us. + session['openid_url'] = params[:openid_url] + + # redirect to the server + redirect_to open_id_response.redirect_url((request.protocol + request.host_with_port + "/"), url_for(:action => 'complete')) + else + notify :warning, "Unable to find openid server for #{openid_url}" + redirect_to :action => 'change_auth_type' + end + return + end + @user.auth_type = params[:user][:auth_type] + if @user.save + notify :notice, "Authentication type updated." + redirect_to :controller => 'preferences' + else + notify :warning, "There was a problem updating your authentication type: #{ @user.errors.full_messages.join(', ')}" + redirect_to :action => 'change_auth_type' + end + end + + def complete + return unless Tracks::Config.openid_enabled? + openid_url = session['openid_url'] + if openid_url.blank? + notify :error, "expected an openid_url" + end + case open_id_response.status + when OpenID::FAILURE + # In the case of failure, if info is non-nil, it is the + # URL that we were verifying. We include it in the error + # message to help the user figure out what happened. + if open_id_response.identity_url + msg = "Verification of #{openid_url}(#{open_id_response.identity_url}) failed. " + else + msg = "Verification failed. " + end + notify :error, open_id_response.msg.to_s + msg + + when OpenID::SUCCESS + # Success means that the transaction completed without + # error. If info is nil, it means that the user cancelled + # the verification. + @user.auth_type = 'open_id' + @user.open_id_url = openid_url + if @user.save + notify :notice, "You have successfully verified #{openid_url} as your identity and set your authentication type to Open ID." + else + notify :warning, "You have successfully verified #{openid_url} as your identity but there was a problem saving your authentication preferences." + end + redirect_to :controller => 'preferences', :action => 'index' + + when OpenID::CANCEL + notify :warning, "Verification cancelled." + + else + notify :warning, "Unknown response status: #{open_id_response.status}" + end + redirect_to :action => 'change_auth_type' unless performed? + end + + + def refresh_token + @user.crypt_word + @user.save + notify :notice, "New token successfully generated" + redirect_to :controller => 'preferences', :action => 'index' + end + + private + + def get_new_user + if session['new_user'] + user = session['new_user'] + session['new_user'] = nil + else + user = User.new + end + user + end + + def check_create_user_params + return false unless params.has_key?(:request) + return false unless params[:request].has_key?(:login) + return false if params[:request][:login].empty? + return false unless params[:request].has_key?(:password) + return false if params[:request][:password].empty? + return true + end + + +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/application_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/application_helper.rb new file mode 100644 index 00000000..676c3c3d --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/application_helper.rb @@ -0,0 +1,140 @@ +# The methods added to this helper will be available to all templates in the application. +module ApplicationHelper + + def user_time + @user.time + end + + # Replicates the link_to method but also checks request.request_uri to find + # current page. If that matches the url, the link is marked + # id = "current" + # + def navigation_link(name, options = {}, html_options = nil, *parameters_for_method_reference) + if html_options + html_options = html_options.stringify_keys + convert_options_to_javascript!(html_options) + tag_options = tag_options(html_options) + else + tag_options = nil + end + url = options.is_a?(String) ? options : self.url_for(options, *parameters_for_method_reference) + id_tag = (request.request_uri == url) ? " id=\"current\"" : "" + + "#{name || url}" + end + + def days_from_today(date) + date.to_date - user_time.to_date + end + + # Check due date in comparison to today's date + # Flag up date appropriately with a 'traffic light' colour code + # + def due_date(due) + if due == nil + return "" + end + + days = days_from_today(due) + + case days + # overdue or due very soon! sound the alarm! + when -1000..-1 + "Overdue by #{pluralize(days * -1, 'day')} " + when 0 + "Due Today " + when 1 + "Due Tomorrow " + # due 2-7 days away + when 2..7 + if @user.prefs.due_style == "1" + "Due on #{due.strftime("%A")} " + else + "Due in #{pluralize(days, 'day')} " + end + # more than a week away - relax + else + "Due in #{pluralize(days, 'day')} " + end + end + + # Check due date in comparison to today's date + # Flag up date appropriately with a 'traffic light' colour code + # Modified method for mobile screen + # + def due_date_mobile(due) + if due == nil + return "" + end + + days = days_from_today(due) + + case days + # overdue or due very soon! sound the alarm! + when -1000..-1 + "" + format_date(due) +"" + when 0 + ""+ format_date(due) + "" + when 1 + "" + format_date(due) + "" + # due 2-7 days away + when 2..7 + "" + format_date(due) + "" + # more than a week away - relax + else + "" + format_date(due) + "" + end + end + + # Returns a count of next actions in the given context or project + # The result is count and a string descriptor, correctly pluralised if there are no + # actions or multiple actions + # + def count_undone_todos_phrase(todos_parent, string="actions") + @controller.count_undone_todos_phrase(todos_parent, string) + end + + def count_undone_todos_phrase_text(todos_parent, string="actions") + count_undone_todos_phrase(todos_parent, string).gsub(" "," ") + end + + def count_undone_todos_and_notes_phrase(project, string="actions") + s = count_undone_todos_phrase(project, string) + s += ", #{pluralize(project.note_count, 'note')}" unless project.note_count == 0 + s + end + + def link_to_context(context, descriptor = sanitize(context.name)) + link_to( descriptor, context_path(context), :title => "View context: #{context.name}" ) + end + + def link_to_project(project, descriptor = sanitize(project.name)) + link_to( descriptor, project_path(project), :title => "View project: #{project.name}" ) + end + + def item_link_to_context(item) + descriptor = "[C]" + descriptor = "[#{item.context.name}]" if (@user.prefs.verbose_action_descriptors) + link_to_context( item.context, descriptor ) + end + + def item_link_to_project(item) + descriptor = "[P]" + descriptor = "[#{item.project.name}]" if (@user.prefs.verbose_action_descriptors) + link_to_project( item.project, descriptor ) + end + + def render_flash + render :partial => 'shared/flash', :locals => { :flash => flash } + end + + # Display a flash message in RJS templates + # Usage: page.notify :warning, "This is the message", 5.0 + # Puts the message into a flash of type 'warning', fades over 5 secs + def notify(type, message, fade_duration) + type = type.to_s # symbol to string + page.replace 'flash', "

#{message}

" + page.visual_effect :fade, 'flash', :duration => fade_duration + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/backend_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/backend_helper.rb new file mode 100644 index 00000000..2414c125 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/backend_helper.rb @@ -0,0 +1,2 @@ +module BackendHelper +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/contexts_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/contexts_helper.rb new file mode 100644 index 00000000..abe5299b --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/contexts_helper.rb @@ -0,0 +1,12 @@ +module ContextsHelper + + def get_listing_sortable_options + { + :tag => 'div', + :handle => 'handle', + :complete => visual_effect(:highlight, 'list-contexts'), + :url => order_contexts_path + } + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/data_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/data_helper.rb new file mode 100644 index 00000000..e68f25eb --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/data_helper.rb @@ -0,0 +1,2 @@ +module DataHelper +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/feedlist_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/feedlist_helper.rb new file mode 100644 index 00000000..562e6521 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/feedlist_helper.rb @@ -0,0 +1,22 @@ +module FeedlistHelper + + def rss_formatted_link(options = {}) + image_tag = image_tag("feed-icon.png", :size => "16X16", :border => 0, :class => "rss-icon") + linkoptions = { :token => @user.word, :format => 'rss' } + linkoptions.merge!(options) + link_to(image_tag, linkoptions, :title => "RSS feed") + end + + def text_formatted_link(options = {}) + linkoptions = { :token => @user.word, :format => 'txt' } + linkoptions.merge!(options) + link_to('TXT', linkoptions, :title => "Plain text feed" ) + end + + def ical_formatted_link(options = {}) + linkoptions = { :token => @user.word, :format => 'ics' } + linkoptions.merge!(options) + link_to('iCal', linkoptions, :title => "iCal feed" ) + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/login_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/login_helper.rb new file mode 100644 index 00000000..b0ac7165 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/login_helper.rb @@ -0,0 +1,3 @@ +module LoginHelper + +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/mobile_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/mobile_helper.rb new file mode 100644 index 00000000..c5b21b82 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/mobile_helper.rb @@ -0,0 +1,2 @@ +module MobileHelper +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/notes_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/notes_helper.rb new file mode 100644 index 00000000..6216f08b --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/notes_helper.rb @@ -0,0 +1,5 @@ +module NotesHelper + def truncated_note(note, characters = 50) + sanitize(textilize(truncate(note.body, characters, "..."))) + end +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/preferences_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/preferences_helper.rb new file mode 100644 index 00000000..8838ec68 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/preferences_helper.rb @@ -0,0 +1,2 @@ +module PreferencesHelper +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/projects_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/projects_helper.rb new file mode 100644 index 00000000..09be149f --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/projects_helper.rb @@ -0,0 +1,34 @@ +module ProjectsHelper + + def get_listing_sortable_options(list_container_id) + { + :tag => 'div', + :handle => 'handle', + :complete => visual_effect(:highlight, list_container_id), + :url => order_projects_path + } + end + + def set_element_visible(id,test) + if (test) + page.show id + else + page.hide id + end + end + + def project_next_prev + html = '' + unless @previous_project.nil? + project_name = truncate(@previous_project.name, 40, "...") + html << link_to_project(@previous_project, "« #{project_name}") + end + html << ' | ' if @previous_project && @next_project + unless @next_project.nil? + project_name = truncate(@next_project.name, 40, "...") + html << link_to_project(@next_project, "#{project_name} »") + end + html + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/todos_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/todos_helper.rb new file mode 100644 index 00000000..7c26ed62 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/todos_helper.rb @@ -0,0 +1,199 @@ +module TodosHelper + + require 'users_controller' + # Counts the number of incomplete items in the specified context + # + def count_items(context) + count = Todo.find_all("done=0 AND context_id=#{context.id}").length + end + + def form_remote_tag_edit_todo( &block ) + form_tag( todo_path(@todo), {:method => :put, :id => dom_id(@todo, 'form'), :class => "edit_todo_form inline-form" }, &block ) + apply_behavior 'form.edit_todo_form', make_remote_form(:method => :put), :prevent_default => true + end + + def remote_delete_icon + str = link_to( image_tag_for_delete, + todo_path(@todo), + :class => "icon delete_icon", :title => "delete the action '#{@todo.description}'") + apply_behavior '.item-container a.delete_icon:click', :prevent_default => true do |page| + page << "if (confirm('Are you sure that you want to ' + this.title + '?')) {" + page << " new Ajax.Request(this.href, { asynchronous : true, evalScripts : true, method : 'delete', parameters : { '_source_view' : '#{@source_view}' }})" + page << "}" + end + str + end + + def remote_edit_icon + if !@todo.completed? + str = link_to( image_tag_for_edit, + edit_todo_path(@todo), + :class => "icon edit_icon") + apply_behavior '.item-container a.edit_icon:click', :prevent_default => true do |page| + page << "new Ajax.Request(this.href, { asynchronous : true, evalScripts : true, method : 'get', parameters : { '_source_view' : '#{@source_view}' }, onLoading: function(request){ Effect.Pulsate(this)}});" + end + else + str = '' + image_tag("blank.png") + " " + end + str + end + + def remote_toggle_checkbox + str = check_box_tag('item_id', toggle_check_todo_path(@todo), @todo.completed?, :class => 'item-checkbox') + apply_behavior '.item-container input.item-checkbox:click', + remote_function(:url => javascript_variable('this.value'), + :with => "{ method : 'post', _source_view : '#{@source_view}' }") + str + end + + def date_span + if @todo.completed? + "#{format_date( @todo.completed_at )}" + elsif @todo.deferred? + show_date( @todo.show_from ) + else + due_date( @todo.due ) + end + end + + def tag_list + @todo.tags.collect{|t| "" + link_to(t.name, :action => "tag", :id => t.name) + ""}.join('') + end + + def deferred_due_date + if @todo.deferred? && @todo.due + "(action due on #{format_date(@todo.due)})" + end + end + + def project_and_context_links(parent_container_type) + if @todo.completed? + "(#{@todo.context.name}#{", " + @todo.project.name unless @todo.project.nil?})" + else + str = '' + if (['project', 'tickler', 'tag'].include?(parent_container_type)) + str << item_link_to_context( @todo ) + end + if (['context', 'tickler', 'tag'].include?(parent_container_type)) && @todo.project_id + str << item_link_to_project( @todo ) + end + str + end + end + + # Uses the 'staleness_starts' value from settings.yml (in days) to colour + # the background of the action appropriately according to the age + # of the creation date: + # * l1: created more than 1 x staleness_starts, but < 2 x staleness_starts + # * l2: created more than 2 x staleness_starts, but < 3 x staleness_starts + # * l3: created more than 3 x staleness_starts + # + def staleness_class(item) + if item.due || item.completed? + return "" + elsif item.created_at < user_time - (@user.prefs.staleness_starts * 3).days + return " stale_l3" + elsif item.created_at < user_time - (@user.prefs.staleness_starts * 2).days + return " stale_l2" + elsif item.created_at < user_time - (@user.prefs.staleness_starts).days + return " stale_l1" + else + return "" + end + end + + # Check show_from date in comparison to today's date + # Flag up date appropriately with a 'traffic light' colour code + # + def show_date(due) + if due == nil + return "" + end + + days = days_from_today(due) + + case days + # overdue or due very soon! sound the alarm! + when -1000..-1 + "Shown on " + (days * -1).to_s + " days " + when 0 + "Show Today " + when 1 + "Show Tomorrow " + # due 2-7 days away + when 2..7 + if @user.prefs.due_style == 1 + "Show on " + due.strftime("%A") + " " + else + "Show in " + days.to_s + " days " + end + # more than a week away - relax + else + "Show in " + days.to_s + " days " + end + end + + def calendar_setup( input_field ) + date_format = @user.prefs.date_format + week_starts = @user.prefs.week_starts + str = "Calendar.setup({ ifFormat:\"#{date_format}\"" + str << ",firstDay:#{week_starts},showOthers:true,range:[2004, 2010]" + str << ",step:1,inputField:\"" + input_field + "\",cache:true,align:\"TR\" })\n" + javascript_tag str + end + + def item_container_id + return "tickler-items" if source_view_is :deferred + if source_view_is :project + return "p#{@todo.project_id}" if @todo.active? + return "tickler" if @todo.deferred? + end + return "c#{@todo.context_id}" + end + + def should_show_new_item + return true if source_view_is(:deferred) && @todo.deferred? + return true if source_view_is(:project) && @todo.project.hidden? && @todo.project_hidden? + return true if source_view_is(:project) && @todo.deferred? + return true if !source_view_is(:deferred) && @todo.active? + return false + end + + def parent_container_type + return 'tickler' if source_view_is :deferred + return 'project' if source_view_is :project + return 'context' + end + + def empty_container_msg_div_id + return "tickler-empty-nd" if source_view_is(:project) && @todo.deferred? + return "p#{@todo.project_id}empty-nd" if source_view_is :project + return "tickler-empty-nd" if source_view_is :deferred + return "c#{@todo.context_id}empty-nd" + end + + def project_names_for_autocomplete + array_or_string_for_javascript( ['None'] + @projects.select{ |p| p.active? }.collect{|p| escape_javascript(p.name) } ) + end + + def context_names_for_autocomplete + return array_or_string_for_javascript(['Create a new context']) if @contexts.empty? + array_or_string_for_javascript( @contexts.collect{|c| escape_javascript(c.name) } ) + end + + def format_ical_notes(notes) + split_notes = notes.split(/\n/) + joined_notes = split_notes.join("\\n") + end + + private + + def image_tag_for_delete + image_tag("blank.png", :title =>"Delete action", :class=>"delete_item") + end + + def image_tag_for_edit + image_tag("blank.png", :title =>"Edit action", :class=>"edit_item", :id=> dom_id(@todo, 'edit_icon')) + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/helpers/users_helper.rb b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/users_helper.rb new file mode 100644 index 00000000..2310a240 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/helpers/users_helper.rb @@ -0,0 +1,2 @@ +module UsersHelper +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/models/context.rb b/tracks/lkm-rails-1.2.3-upgrade/app/models/context.rb new file mode 100644 index 00000000..22912120 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/models/context.rb @@ -0,0 +1,65 @@ +class Context < ActiveRecord::Base + + has_many :todos, :dependent => :delete_all, :include => :project, :order => "completed_at DESC" + belongs_to :user + + acts_as_list :scope => :user + extend NamePartFinder + include Tracks::TodoList + include UrlFriendlyName + + attr_protected :user + + validates_presence_of :name, :message => "context must have a name" + validates_length_of :name, :maximum => 255, :message => "context name must be less than 256 characters" + validates_uniqueness_of :name, :message => "already exists", :scope => "user_id" + validates_does_not_contain :name, :string => '/', :message => "cannot contain the slash ('/') character" + validates_does_not_contain :name, :string => ',', :message => "cannot contain the comma (',') character" + + def self.feed_options(user) + { + :title => 'Tracks Contexts', + :description => "Lists all the contexts for #{user.display_name}" + } + end + + def self.null_object + NullContext.new + end + + def hidden? + self.hide == true || self.hide == 1 + end + + def to_param + url_friendly_name + end + + def title + name + end + + def summary(undone_todo_count) + s = "

#{undone_todo_count}. " + s += "Context is #{hidden? ? 'Hidden' : 'Active'}." + s += "

" + s + end + +end + +class NullContext + + def nil? + true + end + + def id + nil + end + + def name + '' + end + +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/models/note.rb b/tracks/lkm-rails-1.2.3-upgrade/app/models/note.rb new file mode 100644 index 00000000..059773fa --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/models/note.rb @@ -0,0 +1,7 @@ +class Note < ActiveRecord::Base + belongs_to :user + belongs_to :project + + attr_protected :user + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/models/preference.rb b/tracks/lkm-rails-1.2.3-upgrade/app/models/preference.rb new file mode 100644 index 00000000..19d9664e --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/models/preference.rb @@ -0,0 +1,21 @@ +class Preference < ActiveRecord::Base + belongs_to :user + composed_of :tz, + :class_name => 'TimeZone', + :mapping => %w(time_zone name) + + def self.day_number_to_name_map + { 0 => "Sunday", + 1 => "Monday", + 2 => "Tuesday", + 3 => "Wednesday", + 4 => "Thursday", + 5 => "Friday", + 6 => "Saturday"} + end + + def hide_completed_actions? + return show_number_completed == 0 + end + +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/models/project.rb b/tracks/lkm-rails-1.2.3-upgrade/app/models/project.rb new file mode 100644 index 00000000..a0d58e28 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/models/project.rb @@ -0,0 +1,112 @@ +class Project < ActiveRecord::Base + has_many :todos, :dependent => :delete_all, :include => :context + has_many :notes, :dependent => :delete_all, :order => "created_at DESC" + belongs_to :default_context, :dependent => :nullify, :class_name => "Context", :foreign_key => "default_context_id" + belongs_to :user + + validates_presence_of :name, :message => "project must have a name" + validates_length_of :name, :maximum => 255, :message => "project name must be less than 256 characters" + validates_uniqueness_of :name, :message => "already exists", :scope =>"user_id" + validates_does_not_contain :name, :string => '/', :message => "cannot contain the slash ('/') character" + validates_does_not_contain :name, :string => ',', :message => "cannot contain the comma (',') character" + + acts_as_list :scope => 'user_id = #{user_id} AND state = \'#{state}\'' + acts_as_state_machine :initial => :active, :column => 'state' + extend NamePartFinder + include Tracks::TodoList + include UrlFriendlyName + + state :active + state :hidden, :enter => :hide_todos, :exit => :unhide_todos + state :completed + + event :activate do + transitions :to => :active, :from => [:hidden, :completed] + end + + event :hide do + transitions :to => :hidden, :from => [:active, :completed] + end + + event :complete do + transitions :to => :completed, :from => [:active, :hidden] + end + + attr_protected :user + attr_accessor :cached_note_count + + def self.null_object + NullProject.new + end + + def self.feed_options(user) + { + :title => 'Tracks Projects', + :description => "Lists all the projects for #{user.display_name}" + } + end + + def to_param + url_friendly_name + end + + def hide_todos + todos.each do |t| + unless t.completed? || t.deferred? + t.hide! + t.save + end + end + end + + def unhide_todos + todos.each do |t| + if t.project_hidden? + t.unhide! + t.save + end + end + end + + def note_count + cached_note_count || notes.count + end + + alias_method :original_default_context, :default_context + + def default_context + original_default_context.nil? ? Context.null_object : original_default_context + end + + # would prefer to call this method state=(), but that causes an endless loop + # as a result of acts_as_state_machine calling state=() to update the attribute + def transition_to(candidate_state) + case candidate_state.to_sym + when current_state + return + when :hidden + hide! + when :active + activate! + when :completed + complete! + end + end + +end + +class NullProject + + def hidden? + false + end + + def nil? + true + end + + def id + nil + end + +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/models/tag.rb b/tracks/lkm-rails-1.2.3-upgrade/app/models/tag.rb new file mode 100644 index 00000000..d3105eeb --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/models/tag.rb @@ -0,0 +1,11 @@ +class Tag < ActiveRecord::Base + has_many_polymorphs :taggables, + :from => [:todos], + :through => :taggings, + :dependent => :destroy + + def on(taggable, user) + tagging = taggings.create :taggable => taggable, :user => user + end + +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/models/tagging.rb b/tracks/lkm-rails-1.2.3-upgrade/app/models/tagging.rb new file mode 100644 index 00000000..16c1d5da --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/models/tagging.rb @@ -0,0 +1,11 @@ +class Tagging < ActiveRecord::Base + belongs_to :tag + belongs_to :taggable, :polymorphic => true + belongs_to :user + + # def before_destroy + # # disallow orphaned tags + # # TODO: this doesn't seem to be working + # tag.destroy if tag.taggings.count < 2 + # end +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/models/todo.rb b/tracks/lkm-rails-1.2.3-upgrade/app/models/todo.rb new file mode 100644 index 00000000..b0080439 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/models/todo.rb @@ -0,0 +1,94 @@ +class Todo < ActiveRecord::Base + + belongs_to :context, :order => 'name' + belongs_to :project + belongs_to :user + + acts_as_state_machine :initial => :active, :column => 'state' + + state :active, :enter => Proc.new { |t| t[:show_from] = nil } + state :project_hidden + state :completed, :enter => Proc.new { |t| t.completed_at = Time.now.utc }, :exit => Proc.new { |t| t.completed_at = nil } + state :deferred + + event :defer do + transitions :to => :deferred, :from => [:active] + end + + event :complete do + transitions :to => :completed, :from => [:active, :project_hidden, :deferred] + end + + event :activate do + transitions :to => :active, :from => [:project_hidden, :completed, :deferred] + end + + event :hide do + transitions :to => :project_hidden, :from => [:active, :deferred] + end + + event :unhide do + transitions :to => :deferred, :from => [:project_hidden], :guard => Proc.new{|t| !t.show_from.blank? } + transitions :to => :active, :from => [:project_hidden] + end + + attr_protected :user + + # Description field can't be empty, and must be < 100 bytes + # Notes must be < 60,000 bytes (65,000 actually, but I'm being cautious) + validates_presence_of :description + validates_length_of :description, :maximum => 100 + validates_length_of :notes, :maximum => 60000, :allow_nil => true + # validates_chronic_date :due, :allow_nil => true + validates_presence_of :show_from, :if => :deferred? + validates_presence_of :context + + def validate + if !show_from.blank? && show_from < user.date + errors.add("show_from", "must be a date in the future") + end + end + + def toggle_completion! + if completed? + activate! + else + complete! + end + end + + def activate_and_save! + activate! + save! + end + + def show_from=(date) + activate! if deferred? && date.blank? + defer! if active? && !date.blank? && date > user.date + self[:show_from] = date + end + + alias_method :original_project, :project + + def project + original_project.nil? ? Project.null_object : original_project + end + + alias_method :original_set_initial_state, :set_initial_state + + def set_initial_state + if show_from && (show_from > user.date) + write_attribute self.class.state_column, 'deferred' + else + original_set_initial_state + end + end + + def self.feed_options(user) + { + :title => 'Tracks Actions', + :description => "Actions for #{user.display_name}" + } + end + +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/models/user.rb b/tracks/lkm-rails-1.2.3-upgrade/app/models/user.rb new file mode 100644 index 00000000..8a067537 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/models/user.rb @@ -0,0 +1,182 @@ +require 'digest/sha1' + +class User < ActiveRecord::Base + has_many :contexts, + :order => 'position ASC', + :dependent => :delete_all do + def find_by_params(params) + if params['url_friendly_name'] + find_by_url_friendly_name(params['url_friendly_name']) + elsif params['id'] && params['id'] =~ /^\d+$/ + find(params['id']) + elsif params['id'] + find_by_url_friendly_name(params['id']) + elsif params['context'] + find_by_url_friendly_name(params['context']) + elsif params['context_id'] + find_by_url_friendly_name(params['context_id']) + end + end + end + has_many :projects, + :order => 'position ASC', + :dependent => :delete_all do + def find_by_params(params) + if params['url_friendly_name'] + find_by_url_friendly_name(params['url_friendly_name']) + elsif params['id'] && params['id'] =~ /^\d+$/ + find(params['id']) + elsif params['id'] + find_by_url_friendly_name(params['id']) + elsif params['project'] + find_by_url_friendly_name(params['project']) + elsif params['project_id'] + find_by_url_friendly_name(params['project_id']) + end + end + def update_positions(project_ids) + project_ids.each_with_index do |id, position| + project = self.detect { |p| p.id == id.to_i } + raise "Project id #{id} not associated with user id #{@user.id}." if project.nil? + project.update_attribute(:position, position + 1) + end + end + def projects_in_state_by_position(state) + self.sort{ |a,b| a.position <=> b.position }.select{ |p| p.state == state } + end + def next_from(project) + self.offset_from(project, 1) + end + def previous_from(project) + self.offset_from(project, -1) + end + def offset_from(project, offset) + projects = self.projects_in_state_by_position(project.state) + position = projects.index(project) + return nil if position == 0 && offset < 0 + projects.at( position + offset) + end + def cache_note_counts + project_note_counts = Note.count(:group => 'project_id') + self.each do |project| + project.cached_note_count = project_note_counts[project.id] || 0 + end + end + end + has_many :todos, + :order => 'completed_at DESC, todos.created_at DESC', + :dependent => :delete_all + has_many :deferred_todos, + :class_name => 'Todo', + :conditions => [ 'state = ?', 'deferred' ], + :order => 'show_from ASC, todos.created_at DESC' do + def find_and_activate_ready + find(:all, :conditions => ['show_from <= ?', Time.now.utc.to_date.to_time ]).collect { |t| t.activate_and_save! } + end + end + has_many :completed_todos, + :class_name => 'Todo', + :conditions => ['todos.state = ? and todos.completed_at is not null', 'completed'], + :order => 'todos.completed_at DESC', + :include => [ :project, :context ] do + def completed_within( date ) + reject { |x| x.completed_at < date } + end + + def completed_more_than( date ) + reject { |x| x.completed_at > date } + end + end + has_many :notes, :order => "created_at DESC", :dependent => :delete_all + has_one :preference, :dependent => :destroy + has_many :taggings + has_many :tags, :through => :taggings, :select => "DISTINCT tags.*" + + attr_protected :is_admin + + validates_presence_of :login + validates_presence_of :password, :if => :password_required? + validates_length_of :password, :within => 5..40, :if => :password_required? + validates_confirmation_of :password + validates_length_of :login, :within => 3..80 + validates_uniqueness_of :login, :on => :create + validates_presence_of :open_id_url, :if => Proc.new{|user| user.auth_type == 'open_id'} + + def validate + unless Tracks::Config.auth_schemes.include?(auth_type) + errors.add("auth_type", "not a valid authentication type") + end + end + + alias_method :prefs, :preference + + def self.authenticate(login, pass) + candidate = find(:first, :conditions => ["login = ?", login]) + return nil if candidate.nil? + if candidate.auth_type == 'database' + return candidate if candidate.password == sha1(pass) + elsif candidate.auth_type == 'ldap' && Tracks::Config.auth_schemes.include?('ldap') + return candidate if SimpleLdapAuthenticator.valid?(login, pass) + end + nil + end + + def self.no_users_yet? + count == 0 + end + + def self.find_admin + find(:first, :conditions => [ "is_admin = ?", true ]) + end + + def to_param + login + end + + def display_name + if first_name.blank? && last_name.blank? + return login + elsif first_name.blank? + return last_name + elsif last_name.blank? + return first_name + end + "#{first_name} #{last_name}" + end + + def change_password(pass,pass_confirm) + self.password = pass + self.password_confirmation = pass_confirm + save! + end + + def crypt_word + write_attribute("word", self.class.sha1(login + Time.now.to_i.to_s + rand.to_s)) + end + + def time + prefs.tz.adjust(Time.now.utc) + end + + def date + time.to_date + end + +protected + + def self.sha1(pass) + Digest::SHA1.hexdigest("#{Tracks::Config.salt}--#{pass}--") + end + + before_create :crypt_password, :crypt_word + before_update :crypt_password + + def crypt_password + write_attribute("password", self.class.sha1(password)) if password == @password_confirmation + end + + def password_required? + auth_type == 'database' + end + +end diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context.rhtml new file mode 100644 index 00000000..19eecbfd --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context.rhtml @@ -0,0 +1,35 @@ +<% @not_done = @not_done_todos.select {|t| t.context_id == context.id } %> +
> +

+<% if collapsible -%> + <%= image_tag("collapse.png") %> + <% apply_behavior '.container_toggle:click', :prevent_default => true do |page| + page << "containerElem = this.up('.container') + toggleTarget = containerElem.down('.toggle_target') + if (Element.visible(toggleTarget)) + { + todoItems.collapseNextActionListing(this, toggleTarget); + todoItems.contextCollapseCookieManager.setCookie(todoItems.buildCookieName(containerElem), true) + } + else + { + todoItems.expandNextActionListing(this, toggleTarget); + todoItems.contextCollapseCookieManager.clearCookie(todoItems.buildCookieName(containerElem)) + } + " + end + %> +<% end -%> +<% if source_view_is :context %> + <%= in_place_editor_field :context, :name, {}, { :url => url_for(:controller => 'context', :action => 'update', :id => context.id, :field => 'name', :wants_render => false) } %> +<% else %> + <%= link_to_context( context ) %> +<% end %> +

+
+
+

Currently there are no incomplete actions in this context

+
+<%= render :partial => "todos/todo", :collection => @not_done, :locals => { :parent_container_type => "context" } %> +
+
diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context_form.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context_form.rhtml new file mode 100644 index 00000000..76ed4f3b --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context_form.rhtml @@ -0,0 +1,13 @@ +<% + @context = context_form +%> +<%= error_messages_for 'context' %> + + + <%= text_field 'context', 'name', :class => 'context-name' %> + + + + <%= check_box 'context', 'hide', :class => 'context-hide' %> + +<% @context = nil %> \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context_listing.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context_listing.rhtml new file mode 100644 index 00000000..8af019ff --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_context_listing.rhtml @@ -0,0 +1,56 @@ +<% context = context_listing %> +
" class="list"> +
+
+ DRAG +
+
+ <%= link_to_context( context ) %> <%= " (" + count_undone_todos_phrase(context,"actions") + ")" %> +
+ +
+ <% if context.hide? %> + HIDDEN + <% else %> + VISIBLE + <% end %> + <%= image_tag( "blank.png", :title => "Delete context", :class=>"delete_item") %> + <%= apply_behavior "a.delete_context_button:click", { :prevent_default => true, :external => true} do |page| + page << "if (confirm('Are you sure that you want to ' + this.title + '?')) {" + page << " new Ajax.Request(this.href, {asynchronous:true," + page << " evalScripts:true, method:'delete'}); };" + end -%> + <%= image_tag( "blank.png", :title => "Edit context", :class=>"edit_item") %> + <%= apply_behavior 'a.edit_context_button:click', :prevent_default => true do |page, element| + element.up('.context').toggle + editform = element.up('.list').down('.edit-form') + editform.toggle + editform.visual_effect(:appear) + editform.down('input').focus + end + -%> +
+
+ +
+<% if controller.action_name == 'create' %> + +<% end %> diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_text_context.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_text_context.rhtml new file mode 100644 index 00000000..104e357d --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/_text_context.rhtml @@ -0,0 +1,8 @@ +<% +context = text_context +todos_in_context = todos.select { |t| t.context_id == context.id } +if todos_in_context.length > 0 + %> +<%= context.name.upcase %>: +<% end -%> +<%= render :partial => "todos/text_todo", :collection => todos_in_context -%> diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/create.rjs b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/create.rjs new file mode 100644 index 00000000..ffcb013f --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/create.rjs @@ -0,0 +1,10 @@ +if @saved + page.hide 'contexts-empty-nd' + page.insert_html :bottom, "list-contexts", :partial => 'context_listing', :locals => { :context_listing => @context } + page.sortable "list-contexts", get_listing_sortable_options + page.call "Form.reset", "context-form" + page.call "Form.focusFirstElement", "context-form" +else + page.show 'status' + page.replace_html 'status', "#{error_messages_for('context')}" +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/destroy.rjs b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/destroy.rjs new file mode 100644 index 00000000..fddfde29 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/destroy.rjs @@ -0,0 +1,5 @@ +page.visual_effect :fade, dom_id(@context, "container"), :duration => 0.5 +page.delay(0.5) do + page[dom_id(@context, "container")].remove +end +page.notify :notice, "Deleted context '#{@context.name}'", 5.0 diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/error.rjs b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/error.rjs new file mode 100644 index 00000000..4f82b3e4 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/error.rjs @@ -0,0 +1 @@ +page.notify :error, @error_message || "An error occurred on the server.", 8.0 \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/index.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/index.rhtml new file mode 100644 index 00000000..6c5f0d26 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/index.rhtml @@ -0,0 +1,35 @@ +
+
+
+

Currently there are no contexts

+
+ <%= render :partial => 'context_listing', :collection => @contexts %> +
+
+ +
+ Create new context » + +
+<% +sortable_element 'list-contexts', get_listing_sortable_options + +apply_behavior '#toggle-new-context-form:click', :prevent_default => true do |page| + page['context_new'].toggle + page['context-form'].down('input').focus + #page << "Form.focusFirstElement('context-form');" +end +-%> \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/index_text.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/index_text.rhtml new file mode 100644 index 00000000..b976258a --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/index_text.rhtml @@ -0,0 +1,5 @@ +<% @contexts.each do |c| -%> + +<%= c.name.upcase %> +<%= count_undone_todos_phrase_text(c)%>. Context is <%= c.hidden? ? "Hidden" : "Active" %>. +<% end -%> \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/show.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/show.rhtml new file mode 100644 index 00000000..aeacc494 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/show.rhtml @@ -0,0 +1,10 @@ +
+<%= render :partial => "contexts/context", :locals => { :context => @context, :collapsible => false } %> +<%= render :partial => "todos/completed", :locals => { :done => @done, :collapsible => false, :append_descriptor => "in this context (last #{@user.prefs.show_number_completed})" } %> + +
+ +
+ <%= render :partial => "shared/add_new_item_form" %> +<%= render "sidebar/sidebar" %> +
\ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/update.rjs b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/update.rjs new file mode 100644 index 00000000..3680032b --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/contexts/update.rjs @@ -0,0 +1,2 @@ +page.replace_html dom_id(@context, 'container'), :partial => 'context_listing', :object => @context +page.sortable "list-contexts", get_listing_sortable_options \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/data/export.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/export.rhtml new file mode 100644 index 00000000..024b6b91 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/export.rhtml @@ -0,0 +1,37 @@ +
+
+

Exporting data

+

You can choose between the following formats:

+
    +
  • YAML: Best for porting data between Tracks installations
  • +
  • CSV: Best for importing into spreadsheet or data analysis software
  • +
  • XML: Best for importing or repurposing the data
  • +
+ +

+ + + + + + + + + + + + + + + + + + + + + +
DescriptionDownload link
YAML file containing all your actions, contexts, projects and notes<%= link_to "YAML file", :controller => 'data', :action => 'yaml_export' %>
CSV file containing all of your actions, with named contexts and projects<%= link_to "CSV file (actions, contexts and projects)", :controller => 'data', :action => 'csv_actions' %>
CSV file containing all your notes<%= link_to "CSV file (notes only)", :controller => 'data', :action => 'csv_notes' %>
XML file containing all your actions, contexts, projects and notes<%= link_to "XML file (actions only)", :controller => 'data', :action => 'xml_export' %>
+

+ +
\ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/data/import.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/import.rhtml new file mode 100644 index 00000000..36b67651 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/import.rhtml @@ -0,0 +1,18 @@ +
+
+
+

Importing data

+

You can choose between the following formats:

+
    +
  • YAML: Best for porting data between Tracks installations
  • +
  • CSV: Best for importing into spreadsheet or data analysis software
  • +
+ +
    +
  • YAML
  • +
  • CSV
  • +
+ +
+
\ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/data/index.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/index.rhtml new file mode 100644 index 00000000..10d15e6d --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/index.rhtml @@ -0,0 +1,15 @@ +
+
+
+

Importing and exporting data into Tracks

+

You can export your data in a number of different forms. Note: you can only export/import your own data (i.e. the data available when you are logged in).

+
+ +
    +
  • Import
  • +
  • + <%= link_to "Export", :controller => 'data', :action => 'export' %> +
  • +
+
+
\ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_export.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_export.rhtml new file mode 100644 index 00000000..e69de29b diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_form.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_form.rhtml new file mode 100644 index 00000000..444613d7 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_form.rhtml @@ -0,0 +1,19 @@ +
+
+
+

Paste the contents of the YAML file you exported into the text box below:

+
+ +

+<% form_for :import, @import, :url => {:controller => 'data', :action => 'yaml_import'} do |f| %> + <%= f.text_area :yaml %>
+ +<% end %> +

+ +
+
+ +
+ +
\ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_import.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_import.rhtml new file mode 100644 index 00000000..cf79230b --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/data/yaml_import.rhtml @@ -0,0 +1 @@ +

Import was successful

\ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/feedlist/index.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/feedlist/index.rhtml new file mode 100644 index 00000000..0b37ea82 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/feedlist/index.rhtml @@ -0,0 +1,87 @@ +
+
+
+

Legend:

+
+
<%= image_tag("feed-icon.png", :size => "16X16", :border => 0)%>
RSS Feed
+
TXT
Plain Text Feed
+
iCal
iCal feed
+
+

Note: All feeds show only actions that have not been marked as done.

+
+
    +
  • + <%= rss_formatted_link({ :controller => 'todos', :action => 'index', :limit => 15 }) %> + <%= text_formatted_link({ :controller => 'todos', :action => 'index', :limit => 15 }) %> + <%= ical_formatted_link({ :controller => 'todos', :action => 'index', :limit => 15 }) %> + Last 15 actions +
  • +
  • + <%= rss_formatted_link( { :controller => 'todos', :action => 'index' } ) %> + <%= text_formatted_link( { :controller => 'todos', :action => 'index' } ) %> + <%= ical_formatted_link( { :controller => 'todos', :action => 'index' } ) %> + All actions +
  • +
  • + <%= rss_formatted_link({ :controller => 'todos', :action => 'index', :due => 0 }) %> + <%= text_formatted_link({ :controller => 'todos', :action => 'index', :due => 0 }) %> + <%= ical_formatted_link({ :controller => 'todos', :action => 'index', :due => 0 }) %> + Actions due today or earlier +
  • +
  • + <%= rss_formatted_link({ :controller => 'todos', :action => 'index', :due => 6 }) %> + <%= text_formatted_link({ :controller => 'todos', :action => 'index', :due => 6 }) %> + <%= ical_formatted_link({ :controller => 'todos', :action => 'index', :due => 6 }) %> + Actions due in 7 days or earlier +
  • +
  • + <%= rss_formatted_link({ :controller => 'todos', :action => 'index', :done => 7 }) %> + <%= text_formatted_link({ :controller => 'todos', :action => 'index', :done => 7 }) %> + Actions completed in the last 7 days +
  • +
  • + <%= rss_formatted_link({:controller => 'contexts', :action => 'index'}) %> + <%= text_formatted_link({:controller => 'contexts', :action => 'index'}) %> + All Contexts +
  • +
  • + <%= rss_formatted_link({:controller => 'projects', :action => 'index'}) %> + <%= text_formatted_link({:controller => 'projects', :action => 'index'}) %> + All Projects +
  • +
  • + <%= rss_formatted_link({:controller => 'projects', :action => 'index', :only_active_with_no_next_actions => true}) %> + <%= text_formatted_link({:controller => 'projects', :action => 'index', :only_active_with_no_next_actions => true}) %> + Active projects with no next actions +
  • +
  • Feeds for incomplete actions in a specific context:

    +
      + <% for context in @contexts %> +
    • + <%= rss_formatted_link({ :controller=> 'todos', :action => 'index', :context_id => context.to_param }) %> + <%= text_formatted_link({ :controller=> 'todos', :action => 'index', :context_id => context.to_param }) %> + <%= ical_formatted_link({ :controller=> 'todos', :action => 'index', :context_id => context.to_param }) %> + Next actions in <%=h context.name %> +
    • + <% end %> +
    +
  • +
  • Feeds for incomplete actions in a specific project:

    +
      + <% for project in @projects %> +
    • + <%= rss_formatted_link({ :controller=> 'todos', :action => 'index', :project_id => project.to_param }) %> + <%= text_formatted_link({ :controller=> 'todos', :action => 'index', :project_id => project.to_param }) %> + <%= ical_formatted_link({ :controller=> 'todos', :action => 'index', :project_id => project.to_param }) %> + Next actions for <%=h project.name %> +
    • + <% end %> +
    +
  • +
+
+
+ +
+ <%= render "sidebar/sidebar" %> +
\ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/login.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/login.rhtml new file mode 100644 index 00000000..e124c2bc --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/login.rhtml @@ -0,0 +1,24 @@ + + + + + <%= stylesheet_link_tag "scaffold" %> + <%= javascript_include_tag :defaults %> + +<%= @page_title -%> + + + + +<%= yield %> + +<%= render :partial => "shared/footer" %> + + diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/mobile.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/mobile.rhtml new file mode 100644 index 00000000..124c1eb4 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/mobile.rhtml @@ -0,0 +1,15 @@ + + + + + <%= stylesheet_link_tag "mobile" %> + +<%= @page_title %> + + + + +<%= yield %> + + + \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/scaffold.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/scaffold.rhtml new file mode 100644 index 00000000..1276a598 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/scaffold.rhtml @@ -0,0 +1,10 @@ + + + + Login + <%= stylesheet_link_tag "scaffold" %> + + +<%= yield %> + + diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/standard.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/standard.rhtml new file mode 100644 index 00000000..7498b664 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/layouts/standard.rhtml @@ -0,0 +1,75 @@ + + + + + <% if @prefs.refresh != 0 -%> + ;url=<%= request.request_uri %>"> + <% end -%> + <%= stylesheet_link_tag "standard" %> + <%= stylesheet_link_tag "print", :media => "print" %> + <%= javascript_include_tag :defaults, :unobtrusive %> + <%= javascript_include_tag "selector-addon-v1" %> + <%= stylesheet_link_tag 'calendar-system.css' %> + <%= javascript_include_tag 'calendar', 'calendar-en', 'calendar-setup' %> + <%= javascript_include_tag "accesskey-hints" %> + <%= javascript_include_tag "todo-items" %> + + + <%= auto_discovery_link_tag(:rss,{:controller => "feed", :action => "na_feed", :name => "#{@user.login}", :token => "#{@user.word}"}, {:title => "RSS feed of next actions"}) %> + +<%= @page_title %> + + + +
+
+

+ <% if @count %> + <%= @count %> + <% end %> + <%= user_time.strftime(@prefs.title_date_format) %> <%= image_tag("spinner.gif", :size => "16X16", :border => 0, :id => 'busy', :style => 'display:none' ) %> +

+
+ + + + +<%= render_flash %> +
+ +
+ +<% unless @controller_name == 'feed' or session['noexpiry'] == "on" -%> +<%= periodically_call_remote( :url => {:controller => "login", :action => "check_expiry"}, + :frequency => (5*60)) %> +<% end -%> +<%= periodically_call_remote( :url => formatted_check_deferred_todos_path(:js), + :method => :post, + :frequency => (10*60)) %> +<%= yield %> +
+ +<%= render :partial => "shared/footer" %> + + diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/login/_redirect_to_login.rjs b/tracks/lkm-rails-1.2.3-upgrade/app/views/login/_redirect_to_login.rjs new file mode 100644 index 00000000..ccb2e26a --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/login/_redirect_to_login.rjs @@ -0,0 +1 @@ +page.redirect_to :controller => 'login', :action => 'login' \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/login/check_expiry.rjs b/tracks/lkm-rails-1.2.3-upgrade/app/views/login/check_expiry.rjs new file mode 100644 index 00000000..20de31aa --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/login/check_expiry.rjs @@ -0,0 +1,3 @@ +unless @msg == "" + page.replace_html "info", content_tag("div", @msg + link_to("log in again.", :controller => "login", :action => "login"), "class" => "warning") +end \ No newline at end of file diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/login/login.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/login/login.rhtml new file mode 100644 index 00000000..f10bc677 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/login/login.rhtml @@ -0,0 +1,52 @@ +<% auth_schemes = Tracks::Config.auth_schemes -%> +
+ + <%= render_flash %> + +

Please log in to use Tracks:

+ + <% if auth_schemes.include?('database') || auth_schemes.include?('open_id') %> + <% form_tag :action=> 'login' do %> + + + + + + + + + + + + + + + + + +
+ <% end %> + <% end %> + + <% if auth_schemes.include?('open_id') %> + <% form_tag :action=> 'login', :action => 'begin' do %> + + + + + + + + + + + + + +
+ <% end %> + <% end %> + +
+ + diff --git a/tracks/lkm-rails-1.2.3-upgrade/app/views/mobile/_mobile_actions.rhtml b/tracks/lkm-rails-1.2.3-upgrade/app/views/mobile/_mobile_actions.rhtml new file mode 100644 index 00000000..a19d5278 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/app/views/mobile/_mobile_actions.rhtml @@ -0,0 +1,35 @@ +<%= render_flash %> +<% if @todos.length == 0 -%> +

There are no incomplete actions in this <%= @type %>

+<% else -%> +
' + + '' + + '' + + '' + + '
StatusTestMessage
'; + this.logsummary = $('logsummary') + this.loglines = $('loglines'); + }, + _toHTML: function(txt) { + return txt.escapeHTML().replace(/\n/g,"
"); + } +} + +Test.Unit.Runner = Class.create(); +Test.Unit.Runner.prototype = { + initialize: function(testcases) { + this.options = Object.extend({ + testLog: 'testlog' + }, arguments[1] || {}); + this.options.resultsURL = this.parseResultsURLQueryParameter(); + if (this.options.testLog) { + this.options.testLog = $(this.options.testLog) || null; + } + if(this.options.tests) { + this.tests = []; + for(var i = 0; i < this.options.tests.length; i++) { + if(/^test/.test(this.options.tests[i])) { + this.tests.push(new Test.Unit.Testcase(this.options.tests[i], testcases[this.options.tests[i]], testcases["setup"], testcases["teardown"])); + } + } + } else { + if (this.options.test) { + this.tests = [new Test.Unit.Testcase(this.options.test, testcases[this.options.test], testcases["setup"], testcases["teardown"])]; + } else { + this.tests = []; + for(var testcase in testcases) { + if(/^test/.test(testcase)) { + this.tests.push(new Test.Unit.Testcase(testcase, testcases[testcase], testcases["setup"], testcases["teardown"])); + } + } + } + } + this.currentTest = 0; + this.logger = new Test.Unit.Logger(this.options.testLog); + setTimeout(this.runTests.bind(this), 1000); + }, + parseResultsURLQueryParameter: function() { + return window.location.search.parseQuery()["resultsURL"]; + }, + // Returns: + // "ERROR" if there was an error, + // "FAILURE" if there was a failure, or + // "SUCCESS" if there was neither + getResult: function() { + var hasFailure = false; + for(var i=0;i 0) { + return "ERROR"; + } + if (this.tests[i].failures > 0) { + hasFailure = true; + } + } + if (hasFailure) { + return "FAILURE"; + } else { + return "SUCCESS"; + } + }, + postResults: function() { + if (this.options.resultsURL) { + new Ajax.Request(this.options.resultsURL, + { method: 'get', parameters: 'result=' + this.getResult(), asynchronous: false }); + } + }, + runTests: function() { + var test = this.tests[this.currentTest]; + if (!test) { + // finished! + this.postResults(); + this.logger.summary(this.summary()); + return; + } + if(!test.isWaiting) { + this.logger.start(test.name); + } + test.run(); + if(test.isWaiting) { + this.logger.message("Waiting for " + test.timeToWait + "ms"); + setTimeout(this.runTests.bind(this), test.timeToWait || 1000); + } else { + this.logger.finish(test.status(), test.summary()); + this.currentTest++; + // tail recursive, hopefully the browser will skip the stackframe + this.runTests(); + } + }, + summary: function() { + var assertions = 0; + var failures = 0; + var errors = 0; + var messages = []; + for(var i=0;i 0) return 'failed'; + if (this.errors > 0) return 'error'; + return 'passed'; + }, + assert: function(expression) { + var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"'; + try { expression ? this.pass() : + this.fail(message); } + catch(e) { this.error(e); } + }, + assertEqual: function(expected, actual) { + var message = arguments[2] || "assertEqual"; + try { (expected == actual) ? this.pass() : + this.fail(message + ': expected "' + Test.Unit.inspect(expected) + + '", actual "' + Test.Unit.inspect(actual) + '"'); } + catch(e) { this.error(e); } + }, + assertEnumEqual: function(expected, actual) { + var message = arguments[2] || "assertEnumEqual"; + try { $A(expected).length == $A(actual).length && + expected.zip(actual).all(function(pair) { return pair[0] == pair[1] }) ? + this.pass() : this.fail(message + ': expected ' + Test.Unit.inspect(expected) + + ', actual ' + Test.Unit.inspect(actual)); } + catch(e) { this.error(e); } + }, + assertNotEqual: function(expected, actual) { + var message = arguments[2] || "assertNotEqual"; + try { (expected != actual) ? this.pass() : + this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); } + catch(e) { this.error(e); } + }, + assertNull: function(obj) { + var message = arguments[1] || 'assertNull' + try { (obj==null) ? this.pass() : + this.fail(message + ': got "' + Test.Unit.inspect(obj) + '"'); } + catch(e) { this.error(e); } + }, + assertHidden: function(element) { + var message = arguments[1] || 'assertHidden'; + this.assertEqual("none", element.style.display, message); + }, + assertNotNull: function(object) { + var message = arguments[1] || 'assertNotNull'; + this.assert(object != null, message); + }, + assertInstanceOf: function(expected, actual) { + var message = arguments[2] || 'assertInstanceOf'; + try { + (actual instanceof expected) ? this.pass() : + this.fail(message + ": object was not an instance of the expected type"); } + catch(e) { this.error(e); } + }, + assertNotInstanceOf: function(expected, actual) { + var message = arguments[2] || 'assertNotInstanceOf'; + try { + !(actual instanceof expected) ? this.pass() : + this.fail(message + ": object was an instance of the not expected type"); } + catch(e) { this.error(e); } + }, + _isVisible: function(element) { + element = $(element); + if(!element.parentNode) return true; + this.assertNotNull(element); + if(element.style && Element.getStyle(element, 'display') == 'none') + return false; + + return this._isVisible(element.parentNode); + }, + assertNotVisible: function(element) { + this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1])); + }, + assertVisible: function(element) { + this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1])); + }, + benchmark: function(operation, iterations) { + var startAt = new Date(); + (iterations || 1).times(operation); + var timeTaken = ((new Date())-startAt); + this.info((arguments[2] || 'Operation') + ' finished ' + + iterations + ' iterations in ' + (timeTaken/1000)+'s' ); + return timeTaken; + } +} + +Test.Unit.Testcase = Class.create(); +Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), { + initialize: function(name, test, setup, teardown) { + Test.Unit.Assertions.prototype.initialize.bind(this)(); + this.name = name; + this.test = test || function() {}; + this.setup = setup || function() {}; + this.teardown = teardown || function() {}; + this.isWaiting = false; + this.timeToWait = 1000; + }, + wait: function(time, nextPart) { + this.isWaiting = true; + this.test = nextPart; + this.timeToWait = time; + }, + run: function() { + try { + try { + if (!this.isWaiting) this.setup.bind(this)(); + this.isWaiting = false; + this.test.bind(this)(); + } finally { + if(!this.isWaiting) { + this.teardown.bind(this)(); + } + } + } + catch(e) { this.error(e); } + } +}); diff --git a/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/find_matching_child.js b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/find_matching_child.js new file mode 100644 index 00000000..e18a089b --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/find_matching_child.js @@ -0,0 +1,69 @@ +/* + * Copyright 2004 ThoughtWorks, Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +elementFindMatchingChildren = function(element, selector) { + var matches = []; + + var childCount = element.childNodes.length; + for (var i=0; i= "1.5"); + if (isRecentFirefox || browserVersion.isKonqueror || browserVersion.isSafari || browserVersion.isOpera) { + text = getTextContent(element); + } else if (element.textContent) { + text = element.textContent; + } else if (element.innerText) { + text = element.innerText; + } + + text = normalizeNewlines(text); + text = normalizeSpaces(text); + + return text.trim(); +} + +function getTextContent(element, preformatted) { + if (element.nodeType == 3 /*Node.TEXT_NODE*/) { + var text = element.data; + if (!preformatted) { + text = text.replace(/\n|\r|\t/g, " "); + } + return text; + } + if (element.nodeType == 1 /*Node.ELEMENT_NODE*/) { + var childrenPreformatted = preformatted || (element.tagName == "PRE"); + var text = ""; + for (var i = 0; i < element.childNodes.length; i++) { + var child = element.childNodes.item(i); + text += getTextContent(child, childrenPreformatted); + } + // Handle block elements that introduce newlines + // -- From HTML spec: + // + // + // TODO: should potentially introduce multiple newlines to separate blocks + if (element.tagName == "P" || element.tagName == "BR" || element.tagName == "HR" || element.tagName == "DIV") { + text += "\n"; + } + return text; + } + return ''; +} + +/** + * Convert all newlines to \m + */ +function normalizeNewlines(text) +{ + return text.replace(/\r\n|\r/g, "\n"); +} + +/** + * Replace multiple sequential spaces with a single space, and then convert   to space. + */ +function normalizeSpaces(text) +{ + // IE has already done this conversion, so doing it again will remove multiple nbsp + if (browserVersion.isIE) + { + return text; + } + + // Replace multiple spaces with a single space + // TODO - this shouldn't occur inside PRE elements + text = text.replace(/\ +/g, " "); + + // Replace   with a space + var nbspPattern = new RegExp(String.fromCharCode(160), "g"); + if (browserVersion.isSafari) { + return replaceAll(text, String.fromCharCode(160), " "); + } else { + return text.replace(nbspPattern, " "); + } +} + +function replaceAll(text, oldText, newText) { + while (text.indexOf(oldText) != -1) { + text = text.replace(oldText, newText); + } + return text; +} + + +function xmlDecode(text) { + text = text.replace(/"/g, '"'); + text = text.replace(/'/g, "'"); + text = text.replace(/</g, "<"); + text = text.replace(/>/g, ">"); + text = text.replace(/&/g, "&"); + return text; +} + +// Sets the text in this element +function setText(element, text) { + if (element.textContent != null) { + element.textContent = text; + } else if (element.innerText != null) { + element.innerText = text; + } +} + +// Get the value of an element +function getInputValue(inputElement) { + if (inputElement.type) { + if (inputElement.type.toUpperCase() == 'CHECKBOX' || + inputElement.type.toUpperCase() == 'RADIO') + { + return (inputElement.checked ? 'on' : 'off'); + } + } + if (inputElement.value == null) { + throw new SeleniumError("This element has no value; is it really a form field?"); + } + return inputElement.value; +} + +/* Fire an event in a browser-compatible manner */ +function triggerEvent(element, eventType, canBubble, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown) { + canBubble = (typeof(canBubble) == undefined) ? true : canBubble; + if (element.fireEvent) { + var evt = createEventObject(element, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown); + element.fireEvent('on' + eventType, evt); + } + else { + var evt = document.createEvent('HTMLEvents'); + + try { + evt.shiftKey = shiftKeyDown; + evt.metaKey = metaKeyDown; + evt.altKey = altKeyDown; + evt.ctrlKey = controlKeyDown; + } catch (e) { + // On Firefox 1.0, you can only set these during initMouseEvent or initKeyEvent + // we'll have to ignore them here + LOG.exception(e); + } + + evt.initEvent(eventType, canBubble, true); + element.dispatchEvent(evt); + } +} + +function getKeyCodeFromKeySequence(keySequence) { + var match = /^\\(\d{1,3})$/.exec(keySequence); + if (match != null) { + return match[1]; + } + match = /^.$/.exec(keySequence); + if (match != null) { + return match[0].charCodeAt(0); + } + // this is for backward compatibility with existing tests + // 1 digit ascii codes will break however because they are used for the digit chars + match = /^\d{2,3}$/.exec(keySequence); + if (match != null) { + return match[0]; + } + throw new SeleniumError("invalid keySequence"); +} + +function createEventObject(element, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown) { + var evt = element.ownerDocument.createEventObject(); + evt.shiftKey = shiftKeyDown; + evt.metaKey = metaKeyDown; + evt.altKey = altKeyDown; + evt.ctrlKey = controlKeyDown; + return evt; +} + +function triggerKeyEvent(element, eventType, keySequence, canBubble, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown) { + var keycode = getKeyCodeFromKeySequence(keySequence); + canBubble = (typeof(canBubble) == undefined) ? true : canBubble; + if (element.fireEvent) { + var keyEvent = createEventObject(element, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown); + keyEvent.keyCode = keycode; + element.fireEvent('on' + eventType, keyEvent); + } + else { + var evt; + if (window.KeyEvent) { + evt = document.createEvent('KeyEvents'); + evt.initKeyEvent(eventType, true, true, window, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown, keycode, keycode); + } else { + evt = document.createEvent('UIEvents'); + + evt.shiftKey = shiftKeyDown; + evt.metaKey = metaKeyDown; + evt.altKey = altKeyDown; + evt.ctrlKey = controlKeyDown; + + evt.initUIEvent(eventType, true, true, window, 1); + evt.keyCode = keycode; + evt.which = keycode; + } + + element.dispatchEvent(evt); + } +} + +function removeLoadListener(element, command) { + LOG.info('Removing loadListenter for ' + element + ', ' + command); + if (window.removeEventListener) + element.removeEventListener("load", command, true); + else if (window.detachEvent) + element.detachEvent("onload", command); +} + +function addLoadListener(element, command) { + LOG.info('Adding loadListenter for ' + element + ', ' + command); + var augmentedCommand = function() { + command.call(this, element); + } + if (window.addEventListener && !browserVersion.isOpera) + element.addEventListener("load", augmentedCommand, true); + else if (window.attachEvent) + element.attachEvent("onload", augmentedCommand); +} + +/** + * Override the broken getFunctionName() method from JsUnit + * This file must be loaded _after_ the jsunitCore.js + */ +function getFunctionName(aFunction) { + var regexpResult = aFunction.toString().match(/function (\w*)/); + if (regexpResult && regexpResult[1]) { + return regexpResult[1]; + } + return 'anonymous'; +} + +function getDocumentBase(doc) { + var bases = document.getElementsByTagName("base"); + if (bases && bases.length && bases[0].href) { + return bases[0].href; + } + return ""; +} + +function getTagName(element) { + var tagName; + if (element && element.tagName && element.tagName.toLowerCase) { + tagName = element.tagName.toLowerCase(); + } + return tagName; +} + +function absolutify(url, baseUrl) { + /** returns a relative url in its absolute form, given by baseUrl. + * + * This function is a little odd, because it can take baseUrls that + * aren't necessarily directories. It uses the same rules as the HTML + * <base> tag; if the baseUrl doesn't end with "/", we'll assume + * that it points to a file, and strip the filename off to find its + * base directory. + * + * So absolutify("foo", "http://x/bar") will return "http://x/foo" (stripping off bar), + * whereas absolutify("foo", "http://x/bar/") will return "http://x/bar/foo" (preserving bar). + * Naturally absolutify("foo", "http://x") will return "http://x/foo", appropriately. + * + * @param url the url to make absolute; if this url is already absolute, we'll just return that, unchanged + * @param baseUrl the baseUrl from which we'll absolutify, following the rules above. + * @return 'url' if it was already absolute, or the absolutized version of url if it was not absolute. + */ + + // DGF isn't there some library we could use for this? + + if (/^\w+:/.test(url)) { + // it's already absolute + return url; + } + + var loc; + try { + loc = parseUrl(baseUrl); + } catch (e) { + // is it an absolute windows file path? let's play the hero in that case + if (/^\w:\\/.test(baseUrl)) { + baseUrl = "file:///" + baseUrl.replace(/\\/g, "/"); + loc = parseUrl(baseUrl); + } else { + throw new SeleniumError("baseUrl wasn't absolute: " + baseUrl); + } + } + loc.search = null; + loc.hash = null; + + // if url begins with /, then that's the whole pathname + if (/^\//.test(url)) { + loc.pathname = url; + var result = reassembleLocation(loc); + return result; + } + + // if pathname is null, then we'll just append "/" + the url + if (!loc.pathname) { + loc.pathname = "/" + url; + var result = reassembleLocation(loc); + return result; + } + + // if pathname ends with /, just append url + if (/\/$/.test(loc.pathname)) { + loc.pathname += url; + var result = reassembleLocation(loc); + return result; + } + + // if we're here, then the baseUrl has a pathname, but it doesn't end with / + // in that case, we replace everything after the final / with the relative url + loc.pathname = loc.pathname.replace(/[^\/\\]+$/, url); + var result = reassembleLocation(loc); + return result; + +} + +var URL_REGEX = /^((\w+):\/\/)(([^:]+):?([^@]+)?@)?([^\/\?:]*):?(\d+)?(\/?[^\?#]+)?\??([^#]+)?#?(.+)?/; + +function parseUrl(url) { + var fields = ['url', null, 'protocol', null, 'username', 'password', 'host', 'port', 'pathname', 'search', 'hash']; + var result = URL_REGEX.exec(url); + if (!result) { + throw new SeleniumError("Invalid URL: " + url); + } + var loc = new Object(); + for (var i = 0; i < fields.length; i++) { + var field = fields[i]; + if (field == null) { + continue; + } + loc[field] = result[i]; + } + return loc; +} + +function reassembleLocation(loc) { + if (!loc.protocol) { + throw new Error("Not a valid location object: " + o2s(loc)); + } + var protocol = loc.protocol; + protocol = protocol.replace(/:$/, ""); + var url = protocol + "://"; + if (loc.username) { + url += loc.username; + if (loc.password) { + url += ":" + loc.password; + } + url += "@"; + } + if (loc.host) { + url += loc.host; + } + + if (loc.port) { + url += ":" + loc.port; + } + + if (loc.pathname) { + url += loc.pathname; + } + + if (loc.search) { + url += "?" + loc.search; + } + if (loc.hash) { + var hash = loc.hash; + hash = loc.hash.replace(/^#/, ""); + url += "#" + hash; + } + return url; +} + +function canonicalize(url) { + var tempLink = window.document.createElement("link"); + tempLink.href = url; // this will canonicalize the href + return tempLink.href; +} + +function extractExceptionMessage(ex) { + if (ex == null) return "null exception"; + if (ex.message != null) return ex.message; + if (ex.toString && ex.toString() != null) return ex.toString(); +} + + +function describe(object, delimiter) { + var props = new Array(); + for (var prop in object) { + try { + props.push(prop + " -> " + object[prop]); + } catch (e) { + props.push(prop + " -> [htmlutils: ack! couldn't read this property! (Permission Denied?)]"); + } + } + return props.join(delimiter || '\n'); +} + +var PatternMatcher = function(pattern) { + this.selectStrategy(pattern); +}; +PatternMatcher.prototype = { + + selectStrategy: function(pattern) { + this.pattern = pattern; + var strategyName = 'glob'; + // by default + if (/^([a-z-]+):(.*)/.test(pattern)) { + var possibleNewStrategyName = RegExp.$1; + var possibleNewPattern = RegExp.$2; + if (PatternMatcher.strategies[possibleNewStrategyName]) { + strategyName = possibleNewStrategyName; + pattern = possibleNewPattern; + } + } + var matchStrategy = PatternMatcher.strategies[strategyName]; + if (!matchStrategy) { + throw new SeleniumError("cannot find PatternMatcher.strategies." + strategyName); + } + this.strategy = matchStrategy; + this.matcher = new matchStrategy(pattern); + }, + + matches: function(actual) { + return this.matcher.matches(actual + ''); + // Note: appending an empty string avoids a Konqueror bug + } + +}; + +/** + * A "static" convenience method for easy matching + */ +PatternMatcher.matches = function(pattern, actual) { + return new PatternMatcher(pattern).matches(actual); +}; + +PatternMatcher.strategies = { + +/** + * Exact matching, e.g. "exact:***" + */ + exact: function(expected) { + this.expected = expected; + this.matches = function(actual) { + return actual == this.expected; + }; + }, + +/** + * Match by regular expression, e.g. "regexp:^[0-9]+$" + */ + regexp: function(regexpString) { + this.regexp = new RegExp(regexpString); + this.matches = function(actual) { + return this.regexp.test(actual); + }; + }, + + regex: function(regexpString) { + this.regexp = new RegExp(regexpString); + this.matches = function(actual) { + return this.regexp.test(actual); + }; + }, + +/** + * "globContains" (aka "wildmat") patterns, e.g. "glob:one,two,*", + * but don't require a perfect match; instead succeed if actual + * contains something that matches globString. + * Making this distinction is motivated by a bug in IE6 which + * leads to the browser hanging if we implement *TextPresent tests + * by just matching against a regular expression beginning and + * ending with ".*". The globcontains strategy allows us to satisfy + * the functional needs of the *TextPresent ops more efficiently + * and so avoid running into this IE6 freeze. + */ + globContains: function(globString) { + this.regexp = new RegExp(PatternMatcher.regexpFromGlobContains(globString)); + this.matches = function(actual) { + return this.regexp.test(actual); + }; + }, + + +/** + * "glob" (aka "wildmat") patterns, e.g. "glob:one,two,*" + */ + glob: function(globString) { + this.regexp = new RegExp(PatternMatcher.regexpFromGlob(globString)); + this.matches = function(actual) { + return this.regexp.test(actual); + }; + } + +}; + +PatternMatcher.convertGlobMetaCharsToRegexpMetaChars = function(glob) { + var re = glob; + re = re.replace(/([.^$+(){}\[\]\\|])/g, "\\$1"); + re = re.replace(/\?/g, "(.|[\r\n])"); + re = re.replace(/\*/g, "(.|[\r\n])*"); + return re; +}; + +PatternMatcher.regexpFromGlobContains = function(globContains) { + return PatternMatcher.convertGlobMetaCharsToRegexpMetaChars(globContains); +}; + +PatternMatcher.regexpFromGlob = function(glob) { + return "^" + PatternMatcher.convertGlobMetaCharsToRegexpMetaChars(glob) + "$"; +}; + +var Assert = { + + fail: function(message) { + throw new AssertionFailedError(message); + }, + +/* +* Assert.equals(comment?, expected, actual) +*/ + equals: function() { + var args = new AssertionArguments(arguments); + if (args.expected === args.actual) { + return; + } + Assert.fail(args.comment + + "Expected '" + args.expected + + "' but was '" + args.actual + "'"); + }, + +/* +* Assert.matches(comment?, pattern, actual) +*/ + matches: function() { + var args = new AssertionArguments(arguments); + if (PatternMatcher.matches(args.expected, args.actual)) { + return; + } + Assert.fail(args.comment + + "Actual value '" + args.actual + + "' did not match '" + args.expected + "'"); + }, + +/* +* Assert.notMtches(comment?, pattern, actual) +*/ + notMatches: function() { + var args = new AssertionArguments(arguments); + if (!PatternMatcher.matches(args.expected, args.actual)) { + return; + } + Assert.fail(args.comment + + "Actual value '" + args.actual + + "' did match '" + args.expected + "'"); + } + +}; + +// Preprocess the arguments to allow for an optional comment. +function AssertionArguments(args) { + if (args.length == 2) { + this.comment = ""; + this.expected = args[0]; + this.actual = args[1]; + } else { + this.comment = args[0] + "; "; + this.expected = args[1]; + this.actual = args[2]; + } +} + +function AssertionFailedError(message) { + this.isAssertionFailedError = true; + this.isSeleniumError = true; + this.message = message; + this.failureMessage = message; +} + +function SeleniumError(message) { + var error = new Error(message); + error.isSeleniumError = true; + return error; +} + +function highlight(element) { + var highLightColor = "yellow"; + if (element.originalColor == undefined) { // avoid picking up highlight + element.originalColor = elementGetStyle(element, "background-color"); + } + elementSetStyle(element, {"backgroundColor" : highLightColor}); + window.setTimeout(function() { + try { + //if element is orphan, probably page of it has already gone, so ignore + if (!element.parentNode) { + return; + } + elementSetStyle(element, {"backgroundColor" : element.originalColor}); + } catch (e) {} // DGF unhighlighting is very dangerous and low priority + }, 200); +} + + + +// for use from vs.2003 debugger +function o2s(obj) { + var s = ""; + for (key in obj) { + var line = key + "->" + obj[key]; + line.replace("\n", " "); + s += line + "\n"; + } + return s; +} + +var seenReadyStateWarning = false; + +function openSeparateApplicationWindow(url, suppressMozillaWarning) { + // resize the Selenium window itself + window.resizeTo(1200, 500); + window.moveTo(window.screenX, 0); + + var appWindow = window.open(url + '?start=true', 'main'); + try { + var windowHeight = 500; + if (window.outerHeight) { + windowHeight = window.outerHeight; + } else if (document.documentElement && document.documentElement.offsetHeight) { + windowHeight = document.documentElement.offsetHeight; + } + + if (window.screenLeft && !window.screenX) window.screenX = window.screenLeft; + if (window.screenTop && !window.screenY) window.screenY = window.screenTop; + + appWindow.resizeTo(1200, screen.availHeight - windowHeight - 60); + appWindow.moveTo(window.screenX, window.screenY + windowHeight + 25); + } catch (e) { + LOG.error("Couldn't resize app window"); + LOG.exception(e); + } + + + if (!suppressMozillaWarning && window.document.readyState == null && !seenReadyStateWarning) { + alert("Beware! Mozilla bug 300992 means that we can't always reliably detect when a new page has loaded. Install the Selenium IDE extension or the readyState extension available from selenium.openqa.org to make page load detection more reliable."); + seenReadyStateWarning = true; + } + + return appWindow; +} + +var URLConfiguration = classCreate(); +objectExtend(URLConfiguration.prototype, { + initialize: function() { + }, + _isQueryParameterTrue: function (name) { + var parameterValue = this._getQueryParameter(name); + if (parameterValue == null) return false; + if (parameterValue.toLowerCase() == "true") return true; + if (parameterValue.toLowerCase() == "on") return true; + return false; + }, + + _getQueryParameter: function(searchKey) { + var str = this.queryString + if (str == null) return null; + var clauses = str.split('&'); + for (var i = 0; i < clauses.length; i++) { + var keyValuePair = clauses[i].split('=', 2); + var key = unescape(keyValuePair[0]); + if (key == searchKey) { + return unescape(keyValuePair[1]); + } + } + return null; + }, + + _extractArgs: function() { + var str = SeleniumHTARunner.commandLine; + if (str == null || str == "") return new Array(); + var matches = str.match(/(?:\"([^\"]+)\"|(?!\"([^\"]+)\")(\S+))/g); + // We either want non quote stuff ([^"]+) surrounded by quotes + // or we want to look-ahead, see that the next character isn't + // a quoted argument, and then grab all the non-space stuff + // this will return for the line: "foo" bar + // the results "\"foo\"" and "bar" + + // So, let's unquote the quoted arguments: + var args = new Array; + for (var i = 0; i < matches.length; i++) { + args[i] = matches[i]; + args[i] = args[i].replace(/^"(.*)"$/, "$1"); + } + return args; + }, + + isMultiWindowMode:function() { + return this._isQueryParameterTrue('multiWindow'); + }, + + getBaseUrl:function() { + return this._getQueryParameter('baseUrl'); + + } +}); + + +function safeScrollIntoView(element) { + if (element.scrollIntoView) { + element.scrollIntoView(false); + return; + } + // TODO: work out how to scroll browsers that don't support + // scrollIntoView (like Konqueror) +} diff --git a/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/injection.html b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/injection.html new file mode 100644 index 00000000..a75c7211 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/injection.html @@ -0,0 +1,79 @@ + diff --git a/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/injection_iframe.html b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/injection_iframe.html new file mode 100644 index 00000000..bc26e859 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/injection_iframe.html @@ -0,0 +1,7 @@ + diff --git a/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/js2html.js b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/js2html.js new file mode 100644 index 00000000..a384dce3 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/js2html.js @@ -0,0 +1,70 @@ +/* + +This is an experiment in using the Narcissus JavaScript engine +to allow Selenium scripts to be written in plain JavaScript. + +The 'jsparse' function will compile each high level block into a Selenium table script. + + +TODO: +1) Test! (More browsers, more sample scripts) +2) Stepping and walking lower levels of the parse tree +3) Calling Selenium commands directly from JavaScript +4) Do we want comments to appear in the TestRunner? +5) Fix context so variables don't have to be global + For now, variables defined with "var" won't be found + if used later on in a script. +6) Fix formatting +*/ + + +function jsparse() { + var script = document.getElementById('sejs') + var fname = 'javascript script'; + parse_result = parse(script.text, fname, 0); + + var x2 = new ExecutionContext(GLOBAL_CODE); + ExecutionContext.current = x2; + + + var new_test_source = ''; + var new_line = ''; + + for (i=0;icurrentTest.doNextCommand()' + + '' + script_fragment + '' + + '\n'; + new_test_source += new_line; + //eval(script_fragment); + + + }; + + + + execute(parse_result,x2) + + // Create HTML Table + body = document.body + body.innerHTML += ""+ + "" + + "" + + new_test_source + + ""; + + //body.innerHTML = "
" + parse_result + "
" +} + + diff --git a/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-defs.js b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-defs.js new file mode 100644 index 00000000..5869397d --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-defs.js @@ -0,0 +1,175 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Narcissus JavaScript engine. + * + * The Initial Developer of the Original Code is + * Brendan Eich . + * Portions created by the Initial Developer are Copyright (C) 2004 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * Narcissus - JS implemented in JS. + * + * Well-known constants and lookup tables. Many consts are generated from the + * tokens table via eval to minimize redundancy, so consumers must be compiled + * separately to take advantage of the simple switch-case constant propagation + * done by SpiderMonkey. + */ + +// jrh +//module('JS.Defs'); + +GLOBAL = this; + +var tokens = [ + // End of source. + "END", + + // Operators and punctuators. Some pair-wise order matters, e.g. (+, -) + // and (UNARY_PLUS, UNARY_MINUS). + "\n", ";", + ",", + "=", + "?", ":", "CONDITIONAL", + "||", + "&&", + "|", + "^", + "&", + "==", "!=", "===", "!==", + "<", "<=", ">=", ">", + "<<", ">>", ">>>", + "+", "-", + "*", "/", "%", + "!", "~", "UNARY_PLUS", "UNARY_MINUS", + "++", "--", + ".", + "[", "]", + "{", "}", + "(", ")", + + // Nonterminal tree node type codes. + "SCRIPT", "BLOCK", "LABEL", "FOR_IN", "CALL", "NEW_WITH_ARGS", "INDEX", + "ARRAY_INIT", "OBJECT_INIT", "PROPERTY_INIT", "GETTER", "SETTER", + "GROUP", "LIST", + + // Terminals. + "IDENTIFIER", "NUMBER", "STRING", "REGEXP", + + // Keywords. + "break", + "case", "catch", "const", "continue", + "debugger", "default", "delete", "do", + "else", "enum", + "false", "finally", "for", "function", + "if", "in", "instanceof", + "new", "null", + "return", + "switch", + "this", "throw", "true", "try", "typeof", + "var", "void", + "while", "with", + // Extensions + "require", "bless", "mixin", "import" +]; + +// Operator and punctuator mapping from token to tree node type name. +// NB: superstring tokens (e.g., ++) must come before their substring token +// counterparts (+ in the example), so that the opRegExp regular expression +// synthesized from this list makes the longest possible match. +var opTypeNames = { + '\n': "NEWLINE", + ';': "SEMICOLON", + ',': "COMMA", + '?': "HOOK", + ':': "COLON", + '||': "OR", + '&&': "AND", + '|': "BITWISE_OR", + '^': "BITWISE_XOR", + '&': "BITWISE_AND", + '===': "STRICT_EQ", + '==': "EQ", + '=': "ASSIGN", + '!==': "STRICT_NE", + '!=': "NE", + '<<': "LSH", + '<=': "LE", + '<': "LT", + '>>>': "URSH", + '>>': "RSH", + '>=': "GE", + '>': "GT", + '++': "INCREMENT", + '--': "DECREMENT", + '+': "PLUS", + '-': "MINUS", + '*': "MUL", + '/': "DIV", + '%': "MOD", + '!': "NOT", + '~': "BITWISE_NOT", + '.': "DOT", + '[': "LEFT_BRACKET", + ']': "RIGHT_BRACKET", + '{': "LEFT_CURLY", + '}': "RIGHT_CURLY", + '(': "LEFT_PAREN", + ')': "RIGHT_PAREN" +}; + +// Hash of keyword identifier to tokens index. NB: we must null __proto__ to +// avoid toString, etc. namespace pollution. +var keywords = {__proto__: null}; + +// Define const END, etc., based on the token names. Also map name to index. +var consts = " "; +for (var i = 0, j = tokens.length; i < j; i++) { + if (i > 0) + consts += "; "; + var t = tokens[i]; + if (/^[a-z]/.test(t)) { + consts += t.toUpperCase(); + keywords[t] = i; + } else { + consts += (/^\W/.test(t) ? opTypeNames[t] : t); + } + consts += " = " + i; + tokens[t] = i; +} +eval(consts + ";"); + +// Map assignment operators to their indexes in the tokens array. +var assignOps = ['|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%']; + +for (i = 0, j = assignOps.length; i < j; i++) { + t = assignOps[i]; + assignOps[t] = tokens[t]; +} diff --git a/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-exec.js b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-exec.js new file mode 100644 index 00000000..e2c88f81 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-exec.js @@ -0,0 +1,1054 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * vim: set ts=4 sw=4 et tw=80: + * + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Narcissus JavaScript engine. + * + * The Initial Developer of the Original Code is + * Brendan Eich . + * Portions created by the Initial Developer are Copyright (C) 2004 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * Narcissus - JS implemented in JS. + * + * Execution of parse trees. + * + * Standard classes except for eval, Function, Array, and String are borrowed + * from the host JS environment. Function is metacircular. Array and String + * are reflected via wrapping the corresponding native constructor and adding + * an extra level of prototype-based delegation. + */ + +// jrh +//module('JS.Exec'); +// end jrh + +GLOBAL_CODE = 0; EVAL_CODE = 1; FUNCTION_CODE = 2; + +function ExecutionContext(type) { + this.type = type; +} + +// jrh +var agenda = new Array(); +var skip_setup = 0; +// end jrh + +var global = { + // Value properties. + NaN: NaN, Infinity: Infinity, undefined: undefined, + alert : function(msg) { alert(msg) }, + confirm : function(msg) { return confirm(msg) }, + document : document, + window : window, + // jrh + //debug: window.open('','debugwindow','width=600,height=400,scrollbars=yes,resizable=yes'), + // end jrh + navigator : navigator, + XMLHttpRequest : function() { return new XMLHttpRequest() }, + // Function properties. + eval: function(s) { + if (typeof s != "string") { + return s; + } + + var x = ExecutionContext.current; + var x2 = new ExecutionContext(EVAL_CODE); + x2.thisObject = x.thisObject; + x2.caller = x.caller; + x2.callee = x.callee; + x2.scope = x.scope; + ExecutionContext.current = x2; + try { + execute(parse(s), x2); + } catch (e) { + x.result = x2.result; + throw e; + } finally { + ExecutionContext.current = x; + } + return x2.result; + }, + parseInt: parseInt, parseFloat: parseFloat, + isNaN: isNaN, isFinite: isFinite, + decodeURI: decodeURI, encodeURI: encodeURI, + decodeURIComponent: decodeURIComponent, + encodeURIComponent: encodeURIComponent, + + // Class constructors. Where ECMA-262 requires C.length == 1, we declare + // a dummy formal parameter. + Object: Object, + Function: function(dummy) { + var p = "", b = "", n = arguments.length; + if (n) { + var m = n - 1; + if (m) { + p += arguments[0]; + for (var k = 1; k < m; k++) + p += "," + arguments[k]; + } + b += arguments[m]; + } + + // XXX We want to pass a good file and line to the tokenizer. + // Note the anonymous name to maintain parity with Spidermonkey. + var t = new Tokenizer("anonymous(" + p + ") {" + b + "}"); + + // NB: Use the STATEMENT_FORM constant since we don't want to push this + // function onto the null compilation context. + var f = FunctionDefinition(t, null, false, STATEMENT_FORM); + var s = {object: global, parent: null}; + return new FunctionObject(f, s); + }, + Array: function(dummy) { + // Array when called as a function acts as a constructor. + return GLOBAL.Array.apply(this, arguments); + }, + String: function(s) { + // Called as function or constructor: convert argument to string type. + s = arguments.length ? "" + s : ""; + if (this instanceof String) { + // Called as constructor: save the argument as the string value + // of this String object and return this object. + this.value = s; + return this; + } + return s; + }, + Boolean: Boolean, Number: Number, Date: Date, RegExp: RegExp, + Error: Error, EvalError: EvalError, RangeError: RangeError, + ReferenceError: ReferenceError, SyntaxError: SyntaxError, + TypeError: TypeError, URIError: URIError, + + // Other properties. + Math: Math, + + // Extensions to ECMA. + //snarf: snarf, + evaluate: evaluate, + load: function(s) { + if (typeof s != "string") + return s; + var req = new XMLHttpRequest(); + req.open('GET', s, false); + req.send(null); + + evaluate(req.responseText, s, 1) + }, + print: print, version: null +}; + +// jrh +//global.debug.document.body.innerHTML = '' +// end jrh + +// Helper to avoid Object.prototype.hasOwnProperty polluting scope objects. +function hasDirectProperty(o, p) { + return Object.prototype.hasOwnProperty.call(o, p); +} + +// Reflect a host class into the target global environment by delegation. +function reflectClass(name, proto) { + var gctor = global[name]; + gctor.prototype = proto; + proto.constructor = gctor; + return proto; +} + +// Reflect Array -- note that all Array methods are generic. +reflectClass('Array', new Array); + +// Reflect String, overriding non-generic methods. +var gSp = reflectClass('String', new String); +gSp.toSource = function () { return this.value.toSource(); }; +gSp.toString = function () { return this.value; }; +gSp.valueOf = function () { return this.value; }; +global.String.fromCharCode = String.fromCharCode; + +var XCp = ExecutionContext.prototype; +ExecutionContext.current = XCp.caller = XCp.callee = null; +XCp.scope = {object: global, parent: null}; +XCp.thisObject = global; +XCp.result = undefined; +XCp.target = null; +XCp.ecmaStrictMode = false; + +function Reference(base, propertyName, node) { + this.base = base; + this.propertyName = propertyName; + this.node = node; +} + +Reference.prototype.toString = function () { return this.node.getSource(); } + +function getValue(v) { + if (v instanceof Reference) { + if (!v.base) { + throw new ReferenceError(v.propertyName + " is not defined", + v.node.filename(), v.node.lineno); + } + return v.base[v.propertyName]; + } + return v; +} + +function putValue(v, w, vn) { + if (v instanceof Reference) + return (v.base || global)[v.propertyName] = w; + throw new ReferenceError("Invalid assignment left-hand side", + vn.filename(), vn.lineno); +} + +function isPrimitive(v) { + var t = typeof v; + return (t == "object") ? v === null : t != "function"; +} + +function isObject(v) { + var t = typeof v; + return (t == "object") ? v !== null : t == "function"; +} + +// If r instanceof Reference, v == getValue(r); else v === r. If passed, rn +// is the node whose execute result was r. +function toObject(v, r, rn) { + switch (typeof v) { + case "boolean": + return new global.Boolean(v); + case "number": + return new global.Number(v); + case "string": + return new global.String(v); + case "function": + return v; + case "object": + if (v !== null) + return v; + } + var message = r + " (type " + (typeof v) + ") has no properties"; + throw rn ? new TypeError(message, rn.filename(), rn.lineno) + : new TypeError(message); +} + +function execute(n, x) { + if (!this.new_block) + new_block = new Array(); + //alert (n) + var a, f, i, j, r, s, t, u, v; + switch (n.type) { + case FUNCTION: + if (n.functionForm != DECLARED_FORM) { + if (!n.name || n.functionForm == STATEMENT_FORM) { + v = new FunctionObject(n, x.scope); + if (n.functionForm == STATEMENT_FORM) + x.scope.object[n.name] = v; + } else { + t = new Object; + x.scope = {object: t, parent: x.scope}; + try { + v = new FunctionObject(n, x.scope); + t[n.name] = v; + } finally { + x.scope = x.scope.parent; + } + } + } + break; + + case SCRIPT: + t = x.scope.object; + a = n.funDecls; + for (i = 0, j = a.length; i < j; i++) { + s = a[i].name; + f = new FunctionObject(a[i], x.scope); + t[s] = f; + } + a = n.varDecls; + for (i = 0, j = a.length; i < j; i++) { + u = a[i]; + s = u.name; + if (u.readOnly && hasDirectProperty(t, s)) { + throw new TypeError("Redeclaration of const " + s, + u.filename(), u.lineno); + } + if (u.readOnly || !hasDirectProperty(t, s)) { + t[s] = null; + } + } + // FALL THROUGH + + case BLOCK: + for (i = 0, j = n.$length; i < j; i++) { + //jrh + //execute(n[i], x); + //new_block.unshift([n[i], x]); + new_block.push([n[i], x]); + } + new_block.reverse(); + agenda = agenda.concat(new_block); + //agenda = new_block.concat(agenda) + // end jrh + break; + + case IF: + if (getValue(execute(n.condition, x))) + execute(n.thenPart, x); + else if (n.elsePart) + execute(n.elsePart, x); + break; + + case SWITCH: + s = getValue(execute(n.discriminant, x)); + a = n.cases; + var matchDefault = false; + switch_loop: + for (i = 0, j = a.length; ; i++) { + if (i == j) { + if (n.defaultIndex >= 0) { + i = n.defaultIndex - 1; // no case matched, do default + matchDefault = true; + continue; + } + break; // no default, exit switch_loop + } + t = a[i]; // next case (might be default!) + if (t.type == CASE) { + u = getValue(execute(t.caseLabel, x)); + } else { + if (!matchDefault) // not defaulting, skip for now + continue; + u = s; // force match to do default + } + if (u === s) { + for (;;) { // this loop exits switch_loop + if (t.statements.length) { + try { + execute(t.statements, x); + } catch (e) { + if (!(e == BREAK && x.target == n)) { throw e } + break switch_loop; + } + } + if (++i == j) + break switch_loop; + t = a[i]; + } + // NOT REACHED + } + } + break; + + case FOR: + // jrh + // added "skip_setup" so initialization doesn't get called + // on every call.. + if (!skip_setup) + n.setup && getValue(execute(n.setup, x)); + // FALL THROUGH + case WHILE: + // jrh + //while (!n.condition || getValue(execute(n.condition, x))) { + if (!n.condition || getValue(execute(n.condition, x))) { + try { + // jrh + //execute(n.body, x); + new_block.push([n.body, x]); + agenda.push([n.body, x]) + //agenda.unshift([n.body, x]) + // end jrh + } catch (e) { + if (e == BREAK && x.target == n) { + break; + } else if (e == CONTINUE && x.target == n) { + // jrh + // 'continue' is invalid inside an 'if' clause + // I don't know what commenting this out will break! + //continue; + // end jrh + + } else { + throw e; + } + } + n.update && getValue(execute(n.update, x)); + // jrh + new_block.unshift([n, x]) + agenda.splice(agenda.length-1,0,[n, x]) + //agenda.splice(1,0,[n, x]) + skip_setup = 1 + // end jrh + } else { + skip_setup = 0 + } + + break; + + case FOR_IN: + u = n.varDecl; + if (u) + execute(u, x); + r = n.iterator; + s = execute(n.object, x); + v = getValue(s); + + // ECMA deviation to track extant browser JS implementation behavior. + t = (v == null && !x.ecmaStrictMode) ? v : toObject(v, s, n.object); + a = []; + for (i in t) + a.push(i); + for (i = 0, j = a.length; i < j; i++) { + putValue(execute(r, x), a[i], r); + try { + execute(n.body, x); + } catch (e) { + if (e == BREAK && x.target == n) { + break; + } else if (e == CONTINUE && x.target == n) { + continue; + } else { + throw e; + } + } + } + break; + + case DO: + do { + try { + execute(n.body, x); + } catch (e) { + if (e == BREAK && x.target == n) { + break; + } else if (e == CONTINUE && x.target == n) { + continue; + } else { + throw e; + } + } + } while (getValue(execute(n.condition, x))); + break; + + case BREAK: + case CONTINUE: + x.target = n.target; + throw n.type; + + case TRY: + try { + execute(n.tryBlock, x); + } catch (e) { + if (!(e == THROW && (j = n.catchClauses.length))) { + throw e; + } + e = x.result; + x.result = undefined; + for (i = 0; ; i++) { + if (i == j) { + x.result = e; + throw THROW; + } + t = n.catchClauses[i]; + x.scope = {object: {}, parent: x.scope}; + x.scope.object[t.varName] = e; + try { + if (t.guard && !getValue(execute(t.guard, x))) + continue; + execute(t.block, x); + break; + } finally { + x.scope = x.scope.parent; + } + } + } finally { + if (n.finallyBlock) + execute(n.finallyBlock, x); + } + break; + + case THROW: + x.result = getValue(execute(n.exception, x)); + throw THROW; + + case RETURN: + x.result = getValue(execute(n.value, x)); + throw RETURN; + + case WITH: + r = execute(n.object, x); + t = toObject(getValue(r), r, n.object); + x.scope = {object: t, parent: x.scope}; + try { + execute(n.body, x); + } finally { + x.scope = x.scope.parent; + } + break; + + case VAR: + case CONST: + for (i = 0, j = n.$length; i < j; i++) { + u = n[i].initializer; + if (!u) + continue; + t = n[i].name; + for (s = x.scope; s; s = s.parent) { + if (hasDirectProperty(s.object, t)) + break; + } + u = getValue(execute(u, x)); + if (n.type == CONST) + s.object[t] = u; + else + s.object[t] = u; + } + break; + + case DEBUGGER: + throw "NYI: " + tokens[n.type]; + + case REQUIRE: + var req = new XMLHttpRequest(); + req.open('GET', n.filename, 'false'); + + case SEMICOLON: + if (n.expression) + // print debugging statements + + var the_start = n.start + var the_end = n.end + var the_statement = parse_result.tokenizer.source.slice(the_start,the_end) + //global.debug.document.body.innerHTML += ('
>>> ' + the_statement + '
') + LOG.info('>>>' + the_statement) + x.result = getValue(execute(n.expression, x)); + //if (x.result) + //global.debug.document.body.innerHTML += ( '
>>> ' + x.result + '
') + + break; + + case LABEL: + try { + execute(n.statement, x); + } catch (e) { + if (!(e == BREAK && x.target == n)) { throw e } + } + break; + + case COMMA: + for (i = 0, j = n.$length; i < j; i++) + v = getValue(execute(n[i], x)); + break; + + case ASSIGN: + r = execute(n[0], x); + t = n[0].assignOp; + if (t) + u = getValue(r); + v = getValue(execute(n[1], x)); + if (t) { + switch (t) { + case BITWISE_OR: v = u | v; break; + case BITWISE_XOR: v = u ^ v; break; + case BITWISE_AND: v = u & v; break; + case LSH: v = u << v; break; + case RSH: v = u >> v; break; + case URSH: v = u >>> v; break; + case PLUS: v = u + v; break; + case MINUS: v = u - v; break; + case MUL: v = u * v; break; + case DIV: v = u / v; break; + case MOD: v = u % v; break; + } + } + putValue(r, v, n[0]); + break; + + case CONDITIONAL: + v = getValue(execute(n[0], x)) ? getValue(execute(n[1], x)) + : getValue(execute(n[2], x)); + break; + + case OR: + v = getValue(execute(n[0], x)) || getValue(execute(n[1], x)); + break; + + case AND: + v = getValue(execute(n[0], x)) && getValue(execute(n[1], x)); + break; + + case BITWISE_OR: + v = getValue(execute(n[0], x)) | getValue(execute(n[1], x)); + break; + + case BITWISE_XOR: + v = getValue(execute(n[0], x)) ^ getValue(execute(n[1], x)); + break; + + case BITWISE_AND: + v = getValue(execute(n[0], x)) & getValue(execute(n[1], x)); + break; + + case EQ: + v = getValue(execute(n[0], x)) == getValue(execute(n[1], x)); + break; + + case NE: + v = getValue(execute(n[0], x)) != getValue(execute(n[1], x)); + break; + + case STRICT_EQ: + v = getValue(execute(n[0], x)) === getValue(execute(n[1], x)); + break; + + case STRICT_NE: + v = getValue(execute(n[0], x)) !== getValue(execute(n[1], x)); + break; + + case LT: + v = getValue(execute(n[0], x)) < getValue(execute(n[1], x)); + break; + + case LE: + v = getValue(execute(n[0], x)) <= getValue(execute(n[1], x)); + break; + + case GE: + v = getValue(execute(n[0], x)) >= getValue(execute(n[1], x)); + break; + + case GT: + v = getValue(execute(n[0], x)) > getValue(execute(n[1], x)); + break; + + case IN: + v = getValue(execute(n[0], x)) in getValue(execute(n[1], x)); + break; + + case INSTANCEOF: + t = getValue(execute(n[0], x)); + u = getValue(execute(n[1], x)); + if (isObject(u) && typeof u.__hasInstance__ == "function") + v = u.__hasInstance__(t); + else + v = t instanceof u; + break; + + case LSH: + v = getValue(execute(n[0], x)) << getValue(execute(n[1], x)); + break; + + case RSH: + v = getValue(execute(n[0], x)) >> getValue(execute(n[1], x)); + break; + + case URSH: + v = getValue(execute(n[0], x)) >>> getValue(execute(n[1], x)); + break; + + case PLUS: + v = getValue(execute(n[0], x)) + getValue(execute(n[1], x)); + break; + + case MINUS: + v = getValue(execute(n[0], x)) - getValue(execute(n[1], x)); + break; + + case MUL: + v = getValue(execute(n[0], x)) * getValue(execute(n[1], x)); + break; + + case DIV: + v = getValue(execute(n[0], x)) / getValue(execute(n[1], x)); + break; + + case MOD: + v = getValue(execute(n[0], x)) % getValue(execute(n[1], x)); + break; + + case DELETE: + t = execute(n[0], x); + v = !(t instanceof Reference) || delete t.base[t.propertyName]; + break; + + case VOID: + getValue(execute(n[0], x)); + break; + + case TYPEOF: + t = execute(n[0], x); + if (t instanceof Reference) + t = t.base ? t.base[t.propertyName] : undefined; + v = typeof t; + break; + + case NOT: + v = !getValue(execute(n[0], x)); + break; + + case BITWISE_NOT: + v = ~getValue(execute(n[0], x)); + break; + + case UNARY_PLUS: + v = +getValue(execute(n[0], x)); + break; + + case UNARY_MINUS: + v = -getValue(execute(n[0], x)); + break; + + case INCREMENT: + case DECREMENT: + t = execute(n[0], x); + u = Number(getValue(t)); + if (n.postfix) + v = u; + putValue(t, (n.type == INCREMENT) ? ++u : --u, n[0]); + if (!n.postfix) + v = u; + break; + + case DOT: + r = execute(n[0], x); + t = getValue(r); + u = n[1].value; + v = new Reference(toObject(t, r, n[0]), u, n); + break; + + case INDEX: + r = execute(n[0], x); + t = getValue(r); + u = getValue(execute(n[1], x)); + v = new Reference(toObject(t, r, n[0]), String(u), n); + break; + + case LIST: + // Curse ECMA for specifying that arguments is not an Array object! + v = {}; + for (i = 0, j = n.$length; i < j; i++) { + u = getValue(execute(n[i], x)); + v[i] = u; + } + v.length = i; + break; + + case CALL: + r = execute(n[0], x); + a = execute(n[1], x); + f = getValue(r); + if (isPrimitive(f) || typeof f.__call__ != "function") { + throw new TypeError(r + " is not callable", + n[0].filename(), n[0].lineno); + } + t = (r instanceof Reference) ? r.base : null; + if (t instanceof Activation) + t = null; + v = f.__call__(t, a, x); + break; + + case NEW: + case NEW_WITH_ARGS: + r = execute(n[0], x); + f = getValue(r); + if (n.type == NEW) { + a = {}; + a.length = 0; + } else { + a = execute(n[1], x); + } + if (isPrimitive(f) || typeof f.__construct__ != "function") { + throw new TypeError(r + " is not a constructor", + n[0].filename(), n[0].lineno); + } + v = f.__construct__(a, x); + break; + + case ARRAY_INIT: + v = []; + for (i = 0, j = n.$length; i < j; i++) { + if (n[i]) + v[i] = getValue(execute(n[i], x)); + } + v.length = j; + break; + + case OBJECT_INIT: + v = {}; + for (i = 0, j = n.$length; i < j; i++) { + t = n[i]; + if (t.type == PROPERTY_INIT) { + v[t[0].value] = getValue(execute(t[1], x)); + } else { + f = new FunctionObject(t, x.scope); + /* + u = (t.type == GETTER) ? '__defineGetter__' + : '__defineSetter__'; + v[u](t.name, thunk(f, x)); + */ + } + } + break; + + case NULL: + v = null; + break; + + case THIS: + v = x.thisObject; + break; + + case TRUE: + v = true; + break; + + case FALSE: + v = false; + break; + + case IDENTIFIER: + for (s = x.scope; s; s = s.parent) { + if (n.value in s.object) + break; + } + v = new Reference(s && s.object, n.value, n); + break; + + case NUMBER: + case STRING: + case REGEXP: + v = n.value; + break; + + case GROUP: + v = execute(n[0], x); + break; + + default: + throw "PANIC: unknown operation " + n.type + ": " + uneval(n); + } + return v; +} + +function Activation(f, a) { + for (var i = 0, j = f.params.length; i < j; i++) + this[f.params[i]] = a[i]; + this.arguments = a; +} + +// Null Activation.prototype's proto slot so that Object.prototype.* does not +// pollute the scope of heavyweight functions. Also delete its 'constructor' +// property so that it doesn't pollute function scopes. + +Activation.prototype.__proto__ = null; +delete Activation.prototype.constructor; + +function FunctionObject(node, scope) { + this.node = node; + this.scope = scope; + this.length = node.params.length; + var proto = {}; + this.prototype = proto; + proto.constructor = this; +} + +var FOp = FunctionObject.prototype = { + // Internal methods. + __call__: function (t, a, x) { + var x2 = new ExecutionContext(FUNCTION_CODE); + x2.thisObject = t || global; + x2.caller = x; + x2.callee = this; + a.callee = this; + var f = this.node; + x2.scope = {object: new Activation(f, a), parent: this.scope}; + + ExecutionContext.current = x2; + try { + execute(f.body, x2); + } catch (e) { + if (!(e == RETURN)) { throw e } else if (e == RETURN) { + return x2.result; + } + if (e != THROW) { throw e } + x.result = x2.result; + throw THROW; + } finally { + ExecutionContext.current = x; + } + return undefined; + }, + + __construct__: function (a, x) { + var o = new Object; + var p = this.prototype; + if (isObject(p)) + o.__proto__ = p; + // else o.__proto__ defaulted to Object.prototype + + var v = this.__call__(o, a, x); + if (isObject(v)) + return v; + return o; + }, + + __hasInstance__: function (v) { + if (isPrimitive(v)) + return false; + var p = this.prototype; + if (isPrimitive(p)) { + throw new TypeError("'prototype' property is not an object", + this.node.filename(), this.node.lineno); + } + var o; + while ((o = v.__proto__)) { + if (o == p) + return true; + v = o; + } + return false; + }, + + // Standard methods. + toString: function () { + return this.node.getSource(); + }, + + apply: function (t, a) { + // Curse ECMA again! + if (typeof this.__call__ != "function") { + throw new TypeError("Function.prototype.apply called on" + + " uncallable object"); + } + + if (t === undefined || t === null) + t = global; + else if (typeof t != "object") + t = toObject(t, t); + + if (a === undefined || a === null) { + a = {}; + a.length = 0; + } else if (a instanceof Array) { + var v = {}; + for (var i = 0, j = a.length; i < j; i++) + v[i] = a[i]; + v.length = i; + a = v; + } else if (!(a instanceof Object)) { + // XXX check for a non-arguments object + throw new TypeError("Second argument to Function.prototype.apply" + + " must be an array or arguments object", + this.node.filename(), this.node.lineno); + } + + return this.__call__(t, a, ExecutionContext.current); + }, + + call: function (t) { + // Curse ECMA a third time! + var a = Array.prototype.splice.call(arguments, 1); + return this.apply(t, a); + } +}; + +// Connect Function.prototype and Function.prototype.constructor in global. +reflectClass('Function', FOp); + +// Help native and host-scripted functions be like FunctionObjects. +var Fp = Function.prototype; +var REp = RegExp.prototype; + +if (!('__call__' in Fp)) { + Fp.__call__ = function (t, a, x) { + // Curse ECMA yet again! + a = Array.prototype.splice.call(a, 0, a.length); + return this.apply(t, a); + }; + + REp.__call__ = function (t, a, x) { + a = Array.prototype.splice.call(a, 0, a.length); + return this.exec.apply(this, a); + }; + + Fp.__construct__ = function (a, x) { + switch (a.length) { + case 0: + return new this(); + case 1: + return new this(a[0]); + case 2: + return new this(a[0], a[1]); + case 3: + return new this(a[0], a[1], a[2]); + case 4: + return new this(a[0], a[1], a[2], a[3]); + case 5: + return new this(a[0], a[1], a[2], a[3], a[4]); + case 6: + return new this(a[0], a[1], a[2], a[3], a[4], a[5]); + case 7: + return new this(a[0], a[1], a[2], a[3], a[4], a[5], a[6]); + } + throw "PANIC: too many arguments to constructor"; + } + + // Since we use native functions such as Date along with host ones such + // as global.eval, we want both to be considered instances of the native + // Function constructor. + Fp.__hasInstance__ = function (v) { + return v instanceof Function || v instanceof global.Function; + }; +} + +function thunk(f, x) { + return function () { return f.__call__(this, arguments, x); }; +} + +function evaluate(s, f, l) { + if (typeof s != "string") + return s; + + var x = ExecutionContext.current; + var x2 = new ExecutionContext(GLOBAL_CODE); + ExecutionContext.current = x2; + try { + execute(parse(s, f, l), x2); + } catch (e) { + if (e != THROW) { throw e } + if (x) { + x.result = x2.result; + throw(THROW); + } + throw x2.result; + } finally { + ExecutionContext.current = x; + } + return x2.result; +} diff --git a/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-parse.js b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-parse.js new file mode 100644 index 00000000..d6acb836 --- /dev/null +++ b/tracks/lkm-rails-1.2.3-upgrade/vendor/selenium/scripts/narcissus-parse.js @@ -0,0 +1,1003 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Narcissus JavaScript engine. + * + * The Initial Developer of the Original Code is + * Brendan Eich . + * Portions created by the Initial Developer are Copyright (C) 2004 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Richard Hundt + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * Narcissus - JS implemented in JS. + * + * Lexical scanner and parser. + */ + +// jrh +//module('JS.Parse'); + +// Build a regexp that recognizes operators and punctuators (except newline). +var opRegExp = +/^;|^,|^\?|^:|^\|\||^\&\&|^\||^\^|^\&|^===|^==|^=|^!==|^!=|^<<|^<=|^<|^>>>|^>>|^>=|^>|^\+\+|^\-\-|^\+|^\-|^\*|^\/|^%|^!|^~|^\.|^\[|^\]|^\{|^\}|^\(|^\)/; + +// A regexp to match floating point literals (but not integer literals). +var fpRegExp = /^\d+\.\d*(?:[eE][-+]?\d+)?|^\d+(?:\.\d*)?[eE][-+]?\d+|^\.\d+(?:[eE][-+]?\d+)?/; + +function Tokenizer(s, f, l) { + this.cursor = 0; + this.source = String(s); + this.tokens = []; + this.tokenIndex = 0; + this.lookahead = 0; + this.scanNewlines = false; + this.scanOperand = true; + this.filename = f || ""; + this.lineno = l || 1; +} + +Tokenizer.prototype = { + input : function() { + return this.source.substring(this.cursor); + }, + + done : function() { + return this.peek() == END; + }, + + token : function() { + return this.tokens[this.tokenIndex]; + }, + + match: function (tt) { + return this.get() == tt || this.unget(); + }, + + mustMatch: function (tt) { + if (!this.match(tt)) + throw this.newSyntaxError("Missing " + this.tokens[tt].toLowerCase()); + return this.token(); + }, + + peek: function () { + var tt; + if (this.lookahead) { + tt = this.tokens[(this.tokenIndex + this.lookahead) & 3].type; + } else { + tt = this.get(); + this.unget(); + } + return tt; + }, + + peekOnSameLine: function () { + this.scanNewlines = true; + var tt = this.peek(); + this.scanNewlines = false; + return tt; + }, + + get: function () { + var token; + while (this.lookahead) { + --this.lookahead; + this.tokenIndex = (this.tokenIndex + 1) & 3; + token = this.tokens[this.tokenIndex]; + if (token.type != NEWLINE || this.scanNewlines) + return token.type; + } + + for (;;) { + var input = this.input(); + var rx = this.scanNewlines ? /^[ \t]+/ : /^\s+/; + var match = input.match(rx); + if (match) { + var spaces = match[0]; + this.cursor += spaces.length; + var newlines = spaces.match(/\n/g); + if (newlines) + this.lineno += newlines.length; + input = this.input(); + } + + if (!(match = input.match(/^\/(?:\*(?:.|\n)*?\*\/|\/.*)/))) + break; + var comment = match[0]; + this.cursor += comment.length; + newlines = comment.match(/\n/g); + if (newlines) + this.lineno += newlines.length + } + + this.tokenIndex = (this.tokenIndex + 1) & 3; + token = this.tokens[this.tokenIndex]; + if (!token) + this.tokens[this.tokenIndex] = token = {}; + if (!input) + return token.type = END; + if ((match = input.match(fpRegExp))) { + token.type = NUMBER; + token.value = parseFloat(match[0]); + } else if ((match = input.match(/^0[xX][\da-fA-F]+|^0[0-7]*|^\d+/))) { + token.type = NUMBER; + token.value = parseInt(match[0]); + } else if ((match = input.match(/^((\$\w*)|(\w+))/))) { + var id = match[0]; + token.type = keywords[id] || IDENTIFIER; + token.value = id; + } else if ((match = input.match(/^"(?:\\.|[^"])*"|^'(?:[^']|\\.)*'/))) { + token.type = STRING; + token.value = eval(match[0]); + } else if (this.scanOperand && + (match = input.match(/^\/((?:\\.|[^\/])+)\/([gi]*)/))) { + token.type = REGEXP; + token.value = new RegExp(match[1], match[2]); + } else if ((match = input.match(opRegExp))) { + var op = match[0]; + if (assignOps[op] && input[op.length] == '=') { + token.type = ASSIGN; + token.assignOp = GLOBAL[opTypeNames[op]]; + match[0] += '='; + } else { + token.type = GLOBAL[opTypeNames[op]]; + if (this.scanOperand && + (token.type == PLUS || token.type == MINUS)) { + token.type += UNARY_PLUS - PLUS; + } + token.assignOp = null; + } + //debug('token.value => '+op+', token.type => '+token.type); + token.value = op; + } else { + throw this.newSyntaxError("Illegal token"); + } + + token.start = this.cursor; + this.cursor += match[0].length; + token.end = this.cursor; + token.lineno = this.lineno; + return token.type; + }, + + unget: function () { + if (++this.lookahead == 4) throw "PANIC: too much lookahead!"; + this.tokenIndex = (this.tokenIndex - 1) & 3; + }, + + newSyntaxError: function (m) { + var e = new SyntaxError(m, this.filename, this.lineno); + e.source = this.source; + e.cursor = this.cursor; + return e; + } +}; + +function CompilerContext(inFunction) { + this.inFunction = inFunction; + this.stmtStack = []; + this.funDecls = []; + this.varDecls = []; +} + +var CCp = CompilerContext.prototype; +CCp.bracketLevel = CCp.curlyLevel = CCp.parenLevel = CCp.hookLevel = 0; +CCp.ecmaStrictMode = CCp.inForLoopInit = false; + +function Script(t, x) { + var n = Statements(t, x); + n.type = SCRIPT; + n.funDecls = x.funDecls; + n.varDecls = x.varDecls; + return n; +} + +// Node extends Array, which we extend slightly with a top-of-stack method. +Array.prototype.top = function() { + return this.length && this[this.length-1]; +} + +function NarcNode(t, type) { + var token = t.token(); + if (token) { + this.type = type || token.type; + this.value = token.value; + this.lineno = token.lineno; + this.start = token.start; + this.end = token.end; + } else { + this.type = type; + this.lineno = t.lineno; + } + this.tokenizer = t; + for (var i = 2; i < arguments.length; i++) + this.push(arguments[i]); +} + +var Np = NarcNode.prototype = new Array(); +Np.constructor = NarcNode; +Np.$length = 0; +Np.toSource = Object.prototype.toSource; + +// Always use push to add operands to an expression, to update start and end. +Np.push = function (kid) { + if (kid.start < this.start) + this.start = kid.start; + if (this.end < kid.end) + this.end = kid.end; + //debug('length before => '+this.$length); + this[this.$length] = kid; + this.$length++; + //debug('length after => '+this.$length); +} + +NarcNode.indentLevel = 0; + +function tokenstr(tt) { + var t = tokens[tt]; + return /^\W/.test(t) ? opTypeNames[t] : t.toUpperCase(); +} + +Np.toString = function () { + var a = []; + for (var i in this) { + if (this.hasOwnProperty(i) && i != 'type') + a.push({id: i, value: this[i]}); + } + a.sort(function (a,b) { return (a.id < b.id) ? -1 : 1; }); + INDENTATION = " "; + var n = ++NarcNode.indentLevel; + var s = "{\n" + INDENTATION.repeat(n) + "type: " + tokenstr(this.type); + for (i = 0; i < a.length; i++) + s += ",\n" + INDENTATION.repeat(n) + a[i].id + ": " + a[i].value; + n = --NarcNode.indentLevel; + s += "\n" + INDENTATION.repeat(n) + "}"; + return s; +} + +Np.getSource = function () { + return this.tokenizer.source.slice(this.start, this.end); +}; + +Np.filename = function () { return this.tokenizer.filename; }; + +String.prototype.repeat = function (n) { + var s = "", t = this + s; + while (--n >= 0) + s += t; + return s; +} + +// Statement stack and nested statement handler. +function nest(t, x, node, func, end) { + x.stmtStack.push(node); + var n = func(t, x); + x.stmtStack.pop(); + end && t.mustMatch(end); + return n; +} + +function Statements(t, x) { + var n = new NarcNode(t, BLOCK); + x.stmtStack.push(n); + while (!t.done() && t.peek() != RIGHT_CURLY) + n.push(Statement(t, x)); + x.stmtStack.pop(); + return n; +} + +function Block(t, x) { + t.mustMatch(LEFT_CURLY); + var n = Statements(t, x); + t.mustMatch(RIGHT_CURLY); + return n; +} + +DECLARED_FORM = 0; EXPRESSED_FORM = 1; STATEMENT_FORM = 2; + +function Statement(t, x) { + var i, label, n, n2, ss, tt = t.get(); + + // Cases for statements ending in a right curly return early, avoiding the + // common semicolon insertion magic after this switch. + switch (tt) { + case FUNCTION: + return FunctionDefinition(t, x, true, + (x.stmtStack.length > 1) + ? STATEMENT_FORM + : DECLARED_FORM); + + case LEFT_CURLY: + n = Statements(t, x); + t.mustMatch(RIGHT_CURLY); + return n; + + case IF: + n = new NarcNode(t); + n.condition = ParenExpression(t, x); + x.stmtStack.push(n); + n.thenPart = Statement(t, x); + n.elsePart = t.match(ELSE) ? Statement(t, x) : null; + x.stmtStack.pop(); + return n; + + case SWITCH: + n = new NarcNode(t); + t.mustMatch(LEFT_PAREN); + n.discriminant = Expression(t, x); + t.mustMatch(RIGHT_PAREN); + n.cases = []; + n.defaultIndex = -1; + x.stmtStack.push(n); + t.mustMatch(LEFT_CURLY); + while ((tt = t.get()) != RIGHT_CURLY) { + switch (tt) { + case DEFAULT: + if (n.defaultIndex >= 0) + throw t.newSyntaxError("More than one switch default"); + // FALL THROUGH + case CASE: + n2 = new NarcNode(t); + if (tt == DEFAULT) + n.defaultIndex = n.cases.length; + else + n2.caseLabel = Expression(t, x, COLON); + break; + default: + throw t.newSyntaxError("Invalid switch case"); + } + t.mustMatch(COLON); + n2.statements = new NarcNode(t, BLOCK); + while ((tt=t.peek()) != CASE && tt != DEFAULT && tt != RIGHT_CURLY) + n2.statements.push(Statement(t, x)); + n.cases.push(n2); + } + x.stmtStack.pop(); + return n; + + case FOR: + n = new NarcNode(t); + n.isLoop = true; + t.mustMatch(LEFT_PAREN); + if ((tt = t.peek()) != SEMICOLON) { + x.inForLoopInit = true; + if (tt == VAR || tt == CONST) { + t.get(); + n2 = Variables(t, x); + } else { + n2 = Expression(t, x); + } + x.inForLoopInit = false; + } + if (n2 && t.match(IN)) { + n.type = FOR_IN; + if (n2.type == VAR) { + if (n2.$length != 1) { + throw new SyntaxError("Invalid for..in left-hand side", + t.filename, n2.lineno); + } + + // NB: n2[0].type == IDENTIFIER and n2[0].value == n2[0].name. + n.iterator = n2[0]; + n.varDecl = n2; + } else { + n.iterator = n2; + n.varDecl = null; + } + n.object = Expression(t, x); + } else { + n.setup = n2 || null; + t.mustMatch(SEMICOLON); + n.condition = (t.peek() == SEMICOLON) ? null : Expression(t, x); + t.mustMatch(SEMICOLON); + n.update = (t.peek() == RIGHT_PAREN) ? null : Expression(t, x); + } + t.mustMatch(RIGHT_PAREN); + n.body = nest(t, x, n, Statement); + return n; + + case WHILE: + n = new NarcNode(t); + n.isLoop = true; + n.condition = ParenExpression(t, x); + n.body = nest(t, x, n, Statement); + return n; + + case DO: + n = new NarcNode(t); + n.isLoop = true; + n.body = nest(t, x, n, Statement, WHILE); + n.condition = ParenExpression(t, x); + if (!x.ecmaStrictMode) { + //
// " + document.title + "