deckshuffler 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.DS_Store +0 -0
- data/MIT-LICENSE +21 -0
- data/Rakefile +55 -0
- data/app/controllers/account_controller.rb +41 -0
- data/app/controllers/application.rb +27 -0
- data/app/controllers/board_controller.rb +15 -0
- data/app/controllers/capacities_controller.rb +52 -0
- data/app/controllers/card_sizes_controller.rb +47 -0
- data/app/controllers/card_types_controller.rb +47 -0
- data/app/controllers/cards_controller.rb +233 -0
- data/app/controllers/functional_sets_controller.rb +55 -0
- data/app/controllers/iteration_controller.rb +93 -0
- data/app/controllers/milestones_controller.rb +51 -0
- data/app/controllers/priorities_controller.rb +52 -0
- data/app/controllers/project_infos_controller.rb +40 -0
- data/app/helpers/account_helper.rb +2 -0
- data/app/helpers/application_helper.rb +39 -0
- data/app/helpers/board_helper.rb +2 -0
- data/app/helpers/capacities_helper.rb +2 -0
- data/app/helpers/card_sizes_helper.rb +2 -0
- data/app/helpers/card_types_helper.rb +2 -0
- data/app/helpers/cards_helper.rb +2 -0
- data/app/helpers/functional_sets_helper.rb +2 -0
- data/app/helpers/milestones_helper.rb +2 -0
- data/app/helpers/priorities_helper.rb +2 -0
- data/app/helpers/project_infos_helper.rb +5 -0
- data/app/models/capacity.rb +4 -0
- data/app/models/card.rb +64 -0
- data/app/models/card_size.rb +13 -0
- data/app/models/card_type.rb +13 -0
- data/app/models/functional_set.rb +5 -0
- data/app/models/milestone.rb +15 -0
- data/app/models/previous_card_owner.rb +6 -0
- data/app/models/priority.rb +14 -0
- data/app/models/project_info.rb +3 -0
- data/app/views/account/index.rhtml +56 -0
- data/app/views/account/login.rhtml +12 -0
- data/app/views/account/signup.rhtml +24 -0
- data/app/views/board/_card_summary.rhtml +24 -0
- data/app/views/board/_cards_column.rhtml +11 -0
- data/app/views/board/index.rhtml +30 -0
- data/app/views/capacities/edit.rhtml +11 -0
- data/app/views/capacities/list.rhtml +34 -0
- data/app/views/capacities/new.rhtml +10 -0
- data/app/views/capacities/show.rhtml +8 -0
- data/app/views/card_sizes/_form.rhtml +10 -0
- data/app/views/card_sizes/edit.rhtml +7 -0
- data/app/views/card_sizes/list.rhtml +27 -0
- data/app/views/card_sizes/new.rhtml +6 -0
- data/app/views/card_sizes/show.rhtml +8 -0
- data/app/views/card_types/_form.rhtml +7 -0
- data/app/views/card_types/edit.rhtml +7 -0
- data/app/views/card_types/list.rhtml +27 -0
- data/app/views/card_types/new.rhtml +6 -0
- data/app/views/card_types/show.rhtml +8 -0
- data/app/views/cards/_form.rhtml +104 -0
- data/app/views/cards/edit.rhtml +4 -0
- data/app/views/cards/import.rhtml +4 -0
- data/app/views/cards/list_per_functional_set.rhtml +37 -0
- data/app/views/cards/list_per_milestone.rhtml +36 -0
- data/app/views/cards/list_per_status.rhtml +40 -0
- data/app/views/cards/list_per_user.rhtml +38 -0
- data/app/views/cards/merge.rhtml +41 -0
- data/app/views/cards/raise_card.rhtml +4 -0
- data/app/views/cards/split.rhtml +4 -0
- data/app/views/functional_sets/_form.rhtml +10 -0
- data/app/views/functional_sets/edit.rhtml +4 -0
- data/app/views/functional_sets/list.rhtml +25 -0
- data/app/views/functional_sets/new.rhtml +4 -0
- data/app/views/iteration/bulk_edit_actual.rhtml +23 -0
- data/app/views/iteration/bulk_edit_planned.rhtml +19 -0
- data/app/views/layouts/account.rhtml +22 -0
- data/app/views/layouts/standard.rhtml +36 -0
- data/app/views/milestones/_form.rhtml +8 -0
- data/app/views/milestones/edit.rhtml +7 -0
- data/app/views/milestones/list.rhtml +23 -0
- data/app/views/milestones/new.rhtml +6 -0
- data/app/views/milestones/show.rhtml +8 -0
- data/app/views/priorities/_form.rhtml +9 -0
- data/app/views/priorities/edit.rhtml +7 -0
- data/app/views/priorities/list.rhtml +25 -0
- data/app/views/priorities/new.rhtml +6 -0
- data/app/views/priorities/show.rhtml +9 -0
- data/app/views/project_infos/_form.rhtml +18 -0
- data/app/views/project_infos/edit.rhtml +7 -0
- data/app/views/project_infos/list.rhtml +25 -0
- data/app/views/project_infos/new.rhtml +6 -0
- data/bin/deckshuffler +74 -0
- data/config/boot.rb +19 -0
- data/config/environment.rb +68 -0
- data/config/routes.rb +19 -0
- data/db/development_structure.sql +81 -0
- data/db/migrate/001_cards.rb +41 -0
- data/db/migrate/002_statuses.rb +45 -0
- data/db/migrate/003_card_sizes.rb +17 -0
- data/db/migrate/004_card_types.rb +15 -0
- data/db/migrate/005_functional_set.rb +23 -0
- data/db/migrate/006_project_info.rb +14 -0
- data/db/migrate/007_create_users.rb +18 -0
- data/db/migrate/008_capacities.rb +14 -0
- data/db/migrate/009_in_play_status.rb +48 -0
- data/db/migrate/010_milestones.rb +14 -0
- data/db/migrate/011_priorities.rb +18 -0
- data/db/migrate/012_card_dependencies.rb +21 -0
- data/db/migrate/013_authentication_independent.rb +15 -0
- data/db/schema.rb +104 -0
- data/doc/.DS_Store +0 -0
- data/doc/deckshuffler.svg +199 -0
- data/lib/authentication/authenticated_system.rb +162 -0
- data/lib/authentication/authenticated_test_helper.rb +113 -0
- data/lib/authentication/user.rb +67 -0
- data/lib/authentication/user_notifier.rb +22 -0
- data/lib/authentication/user_observer.rb +9 -0
- data/lib/cards_csv_exporter.rb +33 -0
- data/lib/cards_csv_importer.rb +87 -0
- data/lib/module_validator.rb +12 -0
- data/lib/status.rb +69 -0
- data/lib/transition_manager.rb +30 -0
- data/previous_failures.txt +0 -0
- data/public/.DS_Store +0 -0
- data/public/.htaccess +41 -0
- data/public/404.html +8 -0
- data/public/500.html +8 -0
- data/public/dispatch.cgi +10 -0
- data/public/dispatch.fcgi +29 -0
- data/public/dispatch.rb +10 -0
- data/public/favicon.ico +0 -0
- data/public/images/.DS_Store +0 -0
- data/public/images/deckshuffler.png +0 -0
- data/public/javascripts/controls.js +750 -0
- data/public/javascripts/dragdrop.js +584 -0
- data/public/javascripts/effects.js +854 -0
- data/public/javascripts/prototype.js +1785 -0
- data/public/robots.txt +1 -0
- data/public/stylesheets/deckshuffler.css +142 -0
- data/public/stylesheets/scaffold.css +74 -0
- data/script/about +3 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/destroy +3 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/plugin +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/process/spinner +3 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/script/spec +4 -0
- data/script/spec_server +86 -0
- data/spec/controllers/cards_controller_spec.rb +98 -0
- data/spec/lib/cards_csv_exporter_spec.rb +86 -0
- data/spec/lib/cards_csv_importer_spec.rb +184 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +23 -0
- data/test/.DS_Store +0 -0
- data/test/fixtures/capacities.yml +5 -0
- data/test/fixtures/card_sizes.yml +6 -0
- data/test/fixtures/card_types.yml +5 -0
- data/test/fixtures/cards.yml +17 -0
- data/test/fixtures/functional_sets.yml +5 -0
- data/test/fixtures/milestones.yml +5 -0
- data/test/fixtures/priorities.yml +7 -0
- data/test/fixtures/project_infos.yml +5 -0
- data/test/fixtures/users.yml +17 -0
- data/test/functional/.DS_Store +0 -0
- data/test/functional/account_controller_test.rb +129 -0
- data/test/functional/board_controller_test.rb +28 -0
- data/test/functional/capacities_controller_test.rb +37 -0
- data/test/functional/cards_controller_test.rb +268 -0
- data/test/functional/functional_sets_controller_test.rb +27 -0
- data/test/functional/project_infos_controller_test.rb +38 -0
- data/test/test_helper.rb +30 -0
- data/test/unit/.DS_Store +0 -0
- data/test/unit/capacity_test.rb +14 -0
- data/test/unit/card_size_test.rb +21 -0
- data/test/unit/card_test.rb +51 -0
- data/test/unit/card_type_test.rb +20 -0
- data/test/unit/milestone_test.rb +20 -0
- data/test/unit/priority_test.rb +20 -0
- data/test/unit/status_test.rb +93 -0
- data/test/unit/transition_manager_test.rb +142 -0
- data/test/unit/user_notifier_test.rb +32 -0
- data/test/unit/user_test.rb +75 -0
- data/vendor/plugins/acts_as_authenticated/CHANGELOG +86 -0
- data/vendor/plugins/acts_as_authenticated/README +20 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/USAGE +1 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/authenticated_generator.rb +102 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/authenticated_system.rb +131 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/authenticated_test_helper.rb +113 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/controller.rb +43 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/fixtures.yml +17 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/functional_test.rb +129 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/helper.rb +2 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/index.rhtml +56 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/login.rhtml +14 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/migration.rb +18 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/model.rb +64 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/signup.rhtml +16 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/unit_test.rb +75 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/USAGE +1 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/authenticated_mailer_generator.rb +27 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/activation.rhtml +3 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/notifier.rb +22 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/notifier_test.rb +27 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/observer.rb +9 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/signup_notification.rhtml +8 -0
- data/vendor/plugins/acts_as_authenticated/install.rb +1 -0
- data/vendor/plugins/rspec/CHANGES +963 -0
- data/vendor/plugins/rspec/MIT-LICENSE +20 -0
- data/vendor/plugins/rspec/README +75 -0
- data/vendor/plugins/rspec/Rakefile +273 -0
- data/vendor/plugins/rspec/TODO +54 -0
- data/vendor/plugins/rspec/UPGRADE +31 -0
- data/vendor/plugins/rspec/autotest/discover.rb +6 -0
- data/vendor/plugins/rspec/autotest/rspec.rb +1 -0
- data/vendor/plugins/rspec/bin/spec +3 -0
- data/vendor/plugins/rspec/bin/spec_translator +8 -0
- data/vendor/plugins/rspec/examples/auto_spec_description_example.rb +19 -0
- data/vendor/plugins/rspec/examples/before_and_after_example.rb +40 -0
- data/vendor/plugins/rspec/examples/behave_as_example.rb +45 -0
- data/vendor/plugins/rspec/examples/custom_expectation_matchers.rb +54 -0
- data/vendor/plugins/rspec/examples/custom_formatter.rb +12 -0
- data/vendor/plugins/rspec/examples/dynamic_spec.rb +9 -0
- data/vendor/plugins/rspec/examples/file_accessor.rb +19 -0
- data/vendor/plugins/rspec/examples/file_accessor_spec.rb +38 -0
- data/vendor/plugins/rspec/examples/greeter_spec.rb +31 -0
- data/vendor/plugins/rspec/examples/helper_method_example.rb +11 -0
- data/vendor/plugins/rspec/examples/io_processor.rb +8 -0
- data/vendor/plugins/rspec/examples/io_processor_spec.rb +21 -0
- data/vendor/plugins/rspec/examples/legacy_spec.rb +11 -0
- data/vendor/plugins/rspec/examples/mocking_example.rb +27 -0
- data/vendor/plugins/rspec/examples/multi_threaded_behaviour_runner.rb +27 -0
- data/vendor/plugins/rspec/examples/partial_mock_example.rb +28 -0
- data/vendor/plugins/rspec/examples/pending_example.rb +20 -0
- data/vendor/plugins/rspec/examples/predicate_example.rb +27 -0
- data/vendor/plugins/rspec/examples/priority.txt +1 -0
- data/vendor/plugins/rspec/examples/shared_behaviours_example.rb +39 -0
- data/vendor/plugins/rspec/examples/spec_and_test_together.rb +20 -0
- data/vendor/plugins/rspec/examples/spec_helper.rb +3 -0
- data/vendor/plugins/rspec/examples/stack.rb +36 -0
- data/vendor/plugins/rspec/examples/stack_spec.rb +97 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/.loadpath +5 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/README.txt +21 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/everything.rb +6 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/examples/examples.rb +3 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/kill_a_cell.rb +24 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/stories.rb +5 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/stories.txt +22 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/life.rb +3 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/life/game.rb +23 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/life/grid.rb +43 -0
- data/vendor/plugins/rspec/examples/stubbing_example.rb +69 -0
- data/vendor/plugins/rspec/examples/test_case_adapter_example.rb +26 -0
- data/vendor/plugins/rspec/failing_examples/diffing_spec.rb +36 -0
- data/vendor/plugins/rspec/failing_examples/failure_in_setup.rb +10 -0
- data/vendor/plugins/rspec/failing_examples/failure_in_teardown.rb +10 -0
- data/vendor/plugins/rspec/failing_examples/mocking_example.rb +40 -0
- data/vendor/plugins/rspec/failing_examples/mocking_with_flexmock.rb +26 -0
- data/vendor/plugins/rspec/failing_examples/mocking_with_mocha.rb +25 -0
- data/vendor/plugins/rspec/failing_examples/mocking_with_rr.rb +27 -0
- data/vendor/plugins/rspec/failing_examples/partial_mock_example.rb +20 -0
- data/vendor/plugins/rspec/failing_examples/predicate_example.rb +29 -0
- data/vendor/plugins/rspec/failing_examples/raising_example.rb +47 -0
- data/vendor/plugins/rspec/failing_examples/spec_helper.rb +3 -0
- data/vendor/plugins/rspec/failing_examples/syntax_error_example.rb +7 -0
- data/vendor/plugins/rspec/failing_examples/team_spec.rb +44 -0
- data/vendor/plugins/rspec/failing_examples/timeout_behaviour.rb +7 -0
- data/vendor/plugins/rspec/init.rb +3 -0
- data/vendor/plugins/rspec/lib/autotest/discover.rb +3 -0
- data/vendor/plugins/rspec/lib/autotest/rspec.rb +94 -0
- data/vendor/plugins/rspec/lib/spec.rb +12 -0
- data/vendor/plugins/rspec/lib/spec/dsl.rb +16 -0
- data/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb +183 -0
- data/vendor/plugins/rspec/lib/spec/dsl/behaviour_description.rb +85 -0
- data/vendor/plugins/rspec/lib/spec/dsl/behaviour_factory.rb +59 -0
- data/vendor/plugins/rspec/lib/spec/dsl/configuration.rb +137 -0
- data/vendor/plugins/rspec/lib/spec/dsl/errors.rb +9 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example.rb +7 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_definition.rb +32 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb +38 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_module.rb +198 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_runner.rb +147 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_suite.rb +110 -0
- data/vendor/plugins/rspec/lib/spec/dsl/pending.rb +18 -0
- data/vendor/plugins/rspec/lib/spec/dsl/shared_behaviour.rb +52 -0
- data/vendor/plugins/rspec/lib/spec/dsl/should_raise_handler.rb +64 -0
- data/vendor/plugins/rspec/lib/spec/expectations.rb +56 -0
- data/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb +66 -0
- data/vendor/plugins/rspec/lib/spec/expectations/errors.rb +6 -0
- data/vendor/plugins/rspec/lib/spec/expectations/extensions.rb +2 -0
- data/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb +71 -0
- data/vendor/plugins/rspec/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/vendor/plugins/rspec/lib/spec/expectations/handler.rb +52 -0
- data/vendor/plugins/rspec/lib/spec/extensions.rb +2 -0
- data/vendor/plugins/rspec/lib/spec/extensions/main.rb +51 -0
- data/vendor/plugins/rspec/lib/spec/extensions/object.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/matchers.rb +153 -0
- data/vendor/plugins/rspec/lib/spec/matchers/be.rb +206 -0
- data/vendor/plugins/rspec/lib/spec/matchers/be_close.rb +37 -0
- data/vendor/plugins/rspec/lib/spec/matchers/change.rb +120 -0
- data/vendor/plugins/rspec/lib/spec/matchers/eql.rb +43 -0
- data/vendor/plugins/rspec/lib/spec/matchers/equal.rb +43 -0
- data/vendor/plugins/rspec/lib/spec/matchers/has.rb +44 -0
- data/vendor/plugins/rspec/lib/spec/matchers/have.rb +142 -0
- data/vendor/plugins/rspec/lib/spec/matchers/include.rb +70 -0
- data/vendor/plugins/rspec/lib/spec/matchers/match.rb +41 -0
- data/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb +73 -0
- data/vendor/plugins/rspec/lib/spec/matchers/raise_error.rb +105 -0
- data/vendor/plugins/rspec/lib/spec/matchers/respond_to.rb +45 -0
- data/vendor/plugins/rspec/lib/spec/matchers/satisfy.rb +47 -0
- data/vendor/plugins/rspec/lib/spec/matchers/simple_matcher.rb +27 -0
- data/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb +73 -0
- data/vendor/plugins/rspec/lib/spec/mocks.rb +211 -0
- data/vendor/plugins/rspec/lib/spec/mocks/argument_constraint_matchers.rb +27 -0
- data/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb +183 -0
- data/vendor/plugins/rspec/lib/spec/mocks/error_generator.rb +84 -0
- data/vendor/plugins/rspec/lib/spec/mocks/errors.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb +3 -0
- data/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb +254 -0
- data/vendor/plugins/rspec/lib/spec/mocks/methods.rb +39 -0
- data/vendor/plugins/rspec/lib/spec/mocks/mock.rb +37 -0
- data/vendor/plugins/rspec/lib/spec/mocks/order_group.rb +29 -0
- data/vendor/plugins/rspec/lib/spec/mocks/proxy.rb +170 -0
- data/vendor/plugins/rspec/lib/spec/mocks/space.rb +28 -0
- data/vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb +37 -0
- data/vendor/plugins/rspec/lib/spec/rake/spectask.rb +224 -0
- data/vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb +52 -0
- data/vendor/plugins/rspec/lib/spec/runner.rb +164 -0
- data/vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb +57 -0
- data/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb +56 -0
- data/vendor/plugins/rspec/lib/spec/runner/command_line.rb +39 -0
- data/vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb +20 -0
- data/vendor/plugins/rspec/lib/spec/runner/extensions/object.rb +32 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter.rb +9 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb +77 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb +128 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/failing_behaviours_formatter.rb +29 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb +322 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb +31 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/rdoc_formatter.rb +24 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb +29 -0
- data/vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb +72 -0
- data/vendor/plugins/rspec/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/runner/option_parser.rb +222 -0
- data/vendor/plugins/rspec/lib/spec/runner/options.rb +223 -0
- data/vendor/plugins/rspec/lib/spec/runner/reporter.rb +137 -0
- data/vendor/plugins/rspec/lib/spec/runner/spec_parser.rb +53 -0
- data/vendor/plugins/rspec/lib/spec/story.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/story/documenter.rb +1 -0
- data/vendor/plugins/rspec/lib/spec/story/documenter/plain_text_documenter.rb +43 -0
- data/vendor/plugins/rspec/lib/spec/story/extensions.rb +1 -0
- data/vendor/plugins/rspec/lib/spec/story/extensions/main.rb +13 -0
- data/vendor/plugins/rspec/lib/spec/story/given_scenario.rb +14 -0
- data/vendor/plugins/rspec/lib/spec/story/reporter.rb +1 -0
- data/vendor/plugins/rspec/lib/spec/story/reporter/plain_text_reporter.rb +60 -0
- data/vendor/plugins/rspec/lib/spec/story/runner.rb +49 -0
- data/vendor/plugins/rspec/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/vendor/plugins/rspec/lib/spec/story/runner/scenario_runner.rb +43 -0
- data/vendor/plugins/rspec/lib/spec/story/runner/story_runner.rb +65 -0
- data/vendor/plugins/rspec/lib/spec/story/scenario.rb +14 -0
- data/vendor/plugins/rspec/lib/spec/story/simple_step.rb +17 -0
- data/vendor/plugins/rspec/lib/spec/story/step_mother.rb +31 -0
- data/vendor/plugins/rspec/lib/spec/story/story.rb +22 -0
- data/vendor/plugins/rspec/lib/spec/story/world.rb +87 -0
- data/vendor/plugins/rspec/lib/spec/test.rb +9 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/autorunner.rb +6 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/example.rb +15 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/example_suite.rb +11 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/rspectestresult.rb +5 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/ui/console/testrunner.rb +18 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/ui/testrunnermediator.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/test_case_adapter.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/translator.rb +114 -0
- data/vendor/plugins/rspec/lib/spec/version.rb +23 -0
- data/vendor/plugins/rspec/plugins/mock_frameworks/flexmock.rb +23 -0
- data/vendor/plugins/rspec/plugins/mock_frameworks/mocha.rb +19 -0
- data/vendor/plugins/rspec/plugins/mock_frameworks/rr.rb +21 -0
- data/vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb +18 -0
- data/vendor/plugins/rspec/rake_tasks/examples.rake +7 -0
- data/vendor/plugins/rspec/rake_tasks/examples_rdoc.rake +8 -0
- data/vendor/plugins/rspec/rake_tasks/examples_with_rcov.rake +9 -0
- data/vendor/plugins/rspec/rake_tasks/failing_examples_with_html.rake +9 -0
- data/vendor/plugins/rspec/rake_tasks/verify_rcov.rake +7 -0
- data/vendor/plugins/rspec/spec.opts +6 -0
- data/vendor/plugins/rspec/spec/README.jruby +14 -0
- data/vendor/plugins/rspec/spec/autotest/discover_spec.rb +19 -0
- data/vendor/plugins/rspec/spec/autotest/rspec_spec.rb +264 -0
- data/vendor/plugins/rspec/spec/autotest_helper.rb +5 -0
- data/vendor/plugins/rspec/spec/rspec_suite.rb +6 -0
- data/vendor/plugins/rspec/spec/spec/dsl/behaviour_description_spec.rb +97 -0
- data/vendor/plugins/rspec/spec/spec/dsl/behaviour_factory_spec.rb +22 -0
- data/vendor/plugins/rspec/spec/spec/dsl/configuration_spec.rb +61 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_class_definition_spec.rb +48 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_definition_class_spec.rb +23 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_definition_spec.rb +17 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_factory_spec.rb +69 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_instance_spec.rb +242 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_matcher_spec.rb +91 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_should_raise_spec.rb +164 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_spec.rb +399 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_suite_spec.rb +617 -0
- data/vendor/plugins/rspec/spec/spec/dsl/pending_module_spec.rb +31 -0
- data/vendor/plugins/rspec/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
- data/vendor/plugins/rspec/spec/spec/dsl/shared_behaviour_spec.rb +248 -0
- data/vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb +109 -0
- data/vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb +107 -0
- data/vendor/plugins/rspec/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/vendor/plugins/rspec/spec/spec/extensions/main_spec.rb +33 -0
- data/vendor/plugins/rspec/spec/spec/matchers/be_close_spec.rb +39 -0
- data/vendor/plugins/rspec/spec/spec/matchers/be_spec.rb +209 -0
- data/vendor/plugins/rspec/spec/spec/matchers/change_spec.rb +232 -0
- data/vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb +157 -0
- data/vendor/plugins/rspec/spec/spec/matchers/eql_spec.rb +28 -0
- data/vendor/plugins/rspec/spec/spec/matchers/equal_spec.rb +28 -0
- data/vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb +75 -0
- data/vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb +129 -0
- data/vendor/plugins/rspec/spec/spec/matchers/has_spec.rb +37 -0
- data/vendor/plugins/rspec/spec/spec/matchers/have_spec.rb +272 -0
- data/vendor/plugins/rspec/spec/spec/matchers/include_spec.rb +45 -0
- data/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb +37 -0
- data/vendor/plugins/rspec/spec/spec/matchers/matcher_methods_spec.rb +78 -0
- data/vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
- data/vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb +158 -0
- data/vendor/plugins/rspec/spec/spec/matchers/raise_error_spec.rb +185 -0
- data/vendor/plugins/rspec/spec/spec/matchers/respond_to_spec.rb +54 -0
- data/vendor/plugins/rspec/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/vendor/plugins/rspec/spec/spec/matchers/simple_matcher_spec.rb +26 -0
- data/vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb +54 -0
- data/vendor/plugins/rspec/spec/spec/mocks/any_number_of_times_spec.rb +29 -0
- data/vendor/plugins/rspec/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/vendor/plugins/rspec/spec/spec/mocks/at_least_spec.rb +97 -0
- data/vendor/plugins/rspec/spec/spec/mocks/at_most_spec.rb +93 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_11545_spec.rb +31 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +115 -0
- data/vendor/plugins/rspec/spec/spec/mocks/mock_ordering_spec.rb +84 -0
- data/vendor/plugins/rspec/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb +450 -0
- data/vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/vendor/plugins/rspec/spec/spec/mocks/null_object_mock_spec.rb +40 -0
- data/vendor/plugins/rspec/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb +42 -0
- data/vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb +106 -0
- data/vendor/plugins/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +154 -0
- data/vendor/plugins/rspec/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/vendor/plugins/rspec/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb +215 -0
- data/vendor/plugins/rspec/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb +12 -0
- data/vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb +140 -0
- data/vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb +92 -0
- data/vendor/plugins/rspec/spec/spec/runner/empty_file.txt +0 -0
- data/vendor/plugins/rspec/spec/spec/runner/examples.txt +2 -0
- data/vendor/plugins/rspec/spec/spec/runner/execution_context_spec.rb +31 -0
- data/vendor/plugins/rspec/spec/spec/runner/failed.txt +3 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +41 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +30 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +375 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html +371 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb +54 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +39 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +110 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +21 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_spec.rb +48 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb +64 -0
- data/vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb +62 -0
- data/vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb +13 -0
- data/vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/vendor/plugins/rspec/spec/spec/runner/object_ext_spec.rb +11 -0
- data/vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb +356 -0
- data/vendor/plugins/rspec/spec/spec/runner/options_spec.rb +255 -0
- data/vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +56 -0
- data/vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb +216 -0
- data/vendor/plugins/rspec/spec/spec/runner/spec.opts +2 -0
- data/vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb +124 -0
- data/vendor/plugins/rspec/spec/spec/runner/spec_spaced.opts +2 -0
- data/vendor/plugins/rspec/spec/spec/runner_spec.rb +11 -0
- data/vendor/plugins/rspec/spec/spec/spec_classes.rb +123 -0
- data/vendor/plugins/rspec/spec/spec/story/builders.rb +46 -0
- data/vendor/plugins/rspec/spec/spec/story/documenter/plain_text_documenter_spec.rb +100 -0
- data/vendor/plugins/rspec/spec/spec/story/extensions_spec.rb +14 -0
- data/vendor/plugins/rspec/spec/spec/story/given_scenario_spec.rb +27 -0
- data/vendor/plugins/rspec/spec/spec/story/reporter/plain_text_reporter_spec.rb +114 -0
- data/vendor/plugins/rspec/spec/spec/story/rspec_adapter.rb +49 -0
- data/vendor/plugins/rspec/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/vendor/plugins/rspec/spec/spec/story/runner/scenario_runner_spec.rb +145 -0
- data/vendor/plugins/rspec/spec/spec/story/runner/story_runner_spec.rb +247 -0
- data/vendor/plugins/rspec/spec/spec/story/runner_spec.rb +64 -0
- data/vendor/plugins/rspec/spec/spec/story/scenario_spec.rb +20 -0
- data/vendor/plugins/rspec/spec/spec/story/simple_step_spec.rb +37 -0
- data/vendor/plugins/rspec/spec/spec/story/step_mother_spec.rb +59 -0
- data/vendor/plugins/rspec/spec/spec/story/story_helper.rb +3 -0
- data/vendor/plugins/rspec/spec/spec/story/story_spec.rb +45 -0
- data/vendor/plugins/rspec/spec/spec/story/world_spec.rb +406 -0
- data/vendor/plugins/rspec/spec/spec/test/unit/autorunner_test.rb +12 -0
- data/vendor/plugins/rspec/spec/spec/test/unit/sample_spec_test.rb +28 -0
- data/vendor/plugins/rspec/spec/spec/test/unit/spec_helper.rb +4 -0
- data/vendor/plugins/rspec/spec/spec/test/unit/test_unit_and_rspec_spec.rb +28 -0
- data/vendor/plugins/rspec/spec/spec/translator_spec.rb +264 -0
- data/vendor/plugins/rspec/spec/spec_helper.rb +56 -0
- data/vendor/plugins/rspec_on_rails/MIT-LICENSE +31 -0
- data/vendor/plugins/rspec_on_rails/README +1 -0
- data/vendor/plugins/rspec_on_rails/Rakefile +9 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/CHANGES +1 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/rspec_generator.rb +34 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/all_stories.rb +4 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/previous_failures.txt +0 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec +4 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec_server +103 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec.opts +6 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec_helper.rb +23 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/stories_helper.rb +3 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/USAGE +33 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/rspec_controller_generator.rb +49 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/controller_spec.rb +23 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/helper_spec.rb +11 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/view_spec.rb +12 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_model/USAGE +18 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_model/rspec_model_generator.rb +30 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_model/templates/model_spec.rb +11 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/rspec_scaffold_generator.rb +165 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/controller_spec.rb +355 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/edit_erb_spec.rb +25 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/helper_spec.rb +4 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/index_erb_spec.rb +22 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/new_erb_spec.rb +26 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/show_erb_spec.rb +22 -0
- data/vendor/plugins/rspec_on_rails/init.rb +9 -0
- data/vendor/plugins/rspec_on_rails/lib/autotest/rails_rspec.rb +81 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/dsl.rb +2 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/dsl/configuration.rb +23 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/matchers.rb +3 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/matchers/have.rb +19 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails.rb +57 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl.rb +40 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/assigns_hash_proxy.rb +42 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour.rb +7 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/controller_example.rb +251 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/functional_example.rb +67 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/helper_example.rb +82 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/model_example.rb +14 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/rails_example.rb +93 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/render_observer.rb +90 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view_example.rb +181 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/ivar_proxy.rb +62 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions.rb +7 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/base.rb +11 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/rescue.rb +21 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/test_response.rb +11 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_view/base.rb +27 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/active_record/base.rb +29 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/object.rb +5 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers.rb +29 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/assert_select.rb +130 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/have_text.rb +55 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/redirect_to.rb +114 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/render_template.rb +66 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/story_adapter.rb +47 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/version.rb +26 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/autotest/mappings_spec.rb +39 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/autotest/rails_rspec_spec.rb +8 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/assigns_hash_proxy_spec.rb +55 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/behaviour_factory_spec.rb +83 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/configuration_spec.rb +56 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_isolation_spec.rb +43 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_spec_spec.rb +166 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/helper_spec_spec.rb +106 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/ivar_proxy_spec.rb +64 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/model_spec_spec.rb +14 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/shared_behaviour_spec.rb +16 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/test_unit_assertion_accessibility_spec.rb +33 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/view_spec_spec.rb +245 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/extensions/action_controller_rescue_action_spec.rb +54 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/extensions/action_view_base_spec.rb +34 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/extensions/active_record_spec.rb +17 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/assert_select_spec.rb +783 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/description_generation_spec.rb +40 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/errors_on_spec.rb +13 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/redirect_to_spec.rb +203 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/render_spec.rb +131 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/mocks/mock_model_spec.rb +65 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/sample_spec.rb +7 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/spec_server_spec.rb +47 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/spec_spec.rb +11 -0
- data/vendor/plugins/rspec_on_rails/spec/rails_suite.rb +7 -0
- data/vendor/plugins/rspec_on_rails/spec/spec_helper.rb +48 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/action_view_base_spec_controller.rb +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/controller_spec_controller.rb +48 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/redirect_spec_controller.rb +59 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/render_spec_controller.rb +22 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/rjs_spec_controller.rb +58 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/helpers/explicit_helper.rb +10 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/helpers/more_explicit_helper.rb +5 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/helpers/plugin_application_helper.rb +6 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/helpers/view_spec_helper.rb +13 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/_partial.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_errors_in_template.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_template.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/_a_partial.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.js.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/_replacement_partial.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_div.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_page_element.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/insert_html.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html_with_partial.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_effect.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_toggle_effect.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/no_tags.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_no_attributes.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_one_attribute.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial.rhtml +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_used_twice.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_local_variable.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_sub_partial.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_spacer.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/accessor.rhtml +3 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/entry_form.rhtml +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/explicit_helper.rhtml +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/foo/show.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/implicit_helper.rhtml +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/multiple_helpers.rhtml +3 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial.rhtml +5 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_using_collection.rhtml +3 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_with_array.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/tasks/rspec.rake +133 -0
- metadata +875 -0
@@ -0,0 +1,12 @@
|
|
1
|
+
module ModuleValidator
|
2
|
+
protected
|
3
|
+
def ModuleValidator.validate_module!(module_name,required_methods)
|
4
|
+
validated_module = module_eval(module_name)
|
5
|
+
# validate the module answers the required methods.
|
6
|
+
undefined = ""
|
7
|
+
required_methods.each {|method| undefined = "#{undefined}* #{method}\n" unless validated_module.method_defined?(method)}
|
8
|
+
raise "Invalid authentication module #{module_name}. Missing methods:\n#{undefined}"unless ("" == undefined)
|
9
|
+
return validated_module
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
data/lib/status.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
class Status
|
2
|
+
include Comparable
|
3
|
+
|
4
|
+
@@values = Hash.new
|
5
|
+
|
6
|
+
# Enumeration: no creation outside the class.
|
7
|
+
private_class_method :new
|
8
|
+
|
9
|
+
# The text description
|
10
|
+
attr_reader :name, :precedence
|
11
|
+
attr_accessor :successors
|
12
|
+
|
13
|
+
def initialize(name, active = true)
|
14
|
+
@name = name
|
15
|
+
@active = active
|
16
|
+
@precedence = @@values.size()
|
17
|
+
@@values[@name]=self
|
18
|
+
end
|
19
|
+
|
20
|
+
def Status.values
|
21
|
+
@@values.values.sort()
|
22
|
+
end
|
23
|
+
|
24
|
+
def Status.inactive_statuses
|
25
|
+
@@values.values.select { |status| ! status.active?()}.sort {|x,y| x.precedence() <=> y.precedence()}
|
26
|
+
end
|
27
|
+
|
28
|
+
def Status.active_statuses
|
29
|
+
@@values.values.select { |status| status.active?()}.sort {|x,y| x.precedence() <=> y.precedence()}
|
30
|
+
end
|
31
|
+
|
32
|
+
def Status.get(n)
|
33
|
+
@@values[n]
|
34
|
+
end
|
35
|
+
|
36
|
+
def active?
|
37
|
+
@active
|
38
|
+
end
|
39
|
+
|
40
|
+
def <=> (other)
|
41
|
+
result = nil
|
42
|
+
if (other.kind_of?(Status))
|
43
|
+
result = precedence() <=> other.precedence()
|
44
|
+
end
|
45
|
+
return result
|
46
|
+
end
|
47
|
+
|
48
|
+
NEW = new("New",false)
|
49
|
+
ESTIMATED = new("Estimated",false)
|
50
|
+
IN_PLAY = new("In Play")
|
51
|
+
IN_DEV = new("In Development")
|
52
|
+
COMPLETE = new("Complete")
|
53
|
+
IN_ACCEPTANCE = new("In Acceptance")
|
54
|
+
REJECTED = new("Rejected")
|
55
|
+
ACCEPTED = new("Accepted")
|
56
|
+
DELIVERED = new("Delivered",false)
|
57
|
+
DROPPED = new("Dropped",false)
|
58
|
+
|
59
|
+
NEW.successors=([DROPPED].freeze())
|
60
|
+
ESTIMATED.successors=([IN_PLAY,DROPPED].freeze())
|
61
|
+
IN_PLAY.successors=([ESTIMATED,IN_DEV,DROPPED].freeze())
|
62
|
+
IN_DEV.successors=([IN_PLAY,COMPLETE,DROPPED].freeze())
|
63
|
+
COMPLETE.successors=([IN_ACCEPTANCE,DROPPED].freeze())
|
64
|
+
IN_ACCEPTANCE.successors=([ACCEPTED,REJECTED,DROPPED].freeze())
|
65
|
+
REJECTED.successors=([IN_DEV,IN_ACCEPTANCE, DROPPED].freeze())
|
66
|
+
ACCEPTED.successors=([REJECTED,DROPPED].freeze())
|
67
|
+
DROPPED.successors=([].freeze())
|
68
|
+
DELIVERED.successors=([].freeze())
|
69
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module TransitionManager
|
2
|
+
def transition_allowed?(card, status)
|
3
|
+
successor_statuses(card).include?(status)
|
4
|
+
end
|
5
|
+
|
6
|
+
def apply_transition(card, status)
|
7
|
+
card.update_attribute("status_name",status.name())
|
8
|
+
if (Status::IN_PLAY == status)
|
9
|
+
for parent_card in card.parent_cards().select { |c| Status::ESTIMATED == c.status()}
|
10
|
+
apply_transition(parent_card, status)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def successor_statuses(card)
|
16
|
+
successor_statuses = Array.new(card.status().successors())
|
17
|
+
if (! card.child_cards().empty?())
|
18
|
+
successor_statuses.delete(Status::DROPPED)
|
19
|
+
for child_card in card.child_cards()
|
20
|
+
successor_statuses.delete(Status::IN_PLAY) if (Status::IN_DEV == child_card.status())
|
21
|
+
successor_statuses.delete(Status::ESTIMATED) if (child_card.status().active?())
|
22
|
+
end
|
23
|
+
end
|
24
|
+
for parent_card in card.parent_cards()
|
25
|
+
successor_statuses.delete(Status::IN_DEV) if (Status::IN_PLAY == parent_card.status())
|
26
|
+
successor_statuses.delete(Status::IN_PLAY) if (Status::NEW == parent_card.status())
|
27
|
+
end
|
28
|
+
return successor_statuses
|
29
|
+
end
|
30
|
+
end
|
File without changes
|
data/public/.DS_Store
ADDED
Binary file
|
data/public/.htaccess
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# General Apache options
|
2
|
+
AddHandler fastcgi-script .fcgi
|
3
|
+
AddHandler cgi-script .cgi
|
4
|
+
Options +FollowSymLinks +ExecCGI
|
5
|
+
|
6
|
+
# If you don't want Rails to look in certain directories,
|
7
|
+
# use the following rewrite rules so that Apache won't rewrite certain requests
|
8
|
+
#
|
9
|
+
# Example:
|
10
|
+
# RewriteCond %{REQUEST_URI} ^/notrails.*
|
11
|
+
# RewriteRule .* - [L]
|
12
|
+
|
13
|
+
# Redirect all requests not available on the filesystem to Rails
|
14
|
+
# By default the cgi dispatcher is used which is very slow
|
15
|
+
#
|
16
|
+
# For better performance replace the dispatcher with the fastcgi one
|
17
|
+
#
|
18
|
+
# Example:
|
19
|
+
# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
|
20
|
+
RewriteEngine On
|
21
|
+
|
22
|
+
# If your Rails application is accessed via an Alias directive,
|
23
|
+
# then you MUST also set the RewriteBase in this htaccess file.
|
24
|
+
#
|
25
|
+
# Example:
|
26
|
+
# Alias /myrailsapp /path/to/myrailsapp/public
|
27
|
+
# RewriteBase /myrailsapp
|
28
|
+
|
29
|
+
RewriteRule ^$ index.html [QSA]
|
30
|
+
RewriteRule ^([^.]+)$ $1.html [QSA]
|
31
|
+
RewriteCond %{REQUEST_FILENAME} !-f
|
32
|
+
#RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
|
33
|
+
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
|
34
|
+
|
35
|
+
# In case Rails experiences terminal errors
|
36
|
+
# Instead of displaying this message you can supply a file here which will be rendered instead
|
37
|
+
#
|
38
|
+
# Example:
|
39
|
+
# ErrorDocument 500 /500.html
|
40
|
+
|
41
|
+
ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
|
data/public/404.html
ADDED
data/public/500.html
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/html4/loose.dtd">
|
3
|
+
<html>
|
4
|
+
<body>
|
5
|
+
<h1>Application error (Apache)</h1>
|
6
|
+
<p>Change this error message for exceptions thrown outside of an action (like in Dispatcher setups or broken Ruby code) in public/500.html</p>
|
7
|
+
</body>
|
8
|
+
</html>
|
data/public/dispatch.cgi
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
|
4
|
+
|
5
|
+
# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
|
6
|
+
# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
|
7
|
+
require "dispatcher"
|
8
|
+
|
9
|
+
ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
|
10
|
+
Dispatcher.dispatch
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
#
|
3
|
+
# You may specify the path to the FastCGI crash log (a log of unhandled
|
4
|
+
# exceptions which forced the FastCGI instance to exit, great for debugging)
|
5
|
+
# and the number of requests to process before running garbage collection.
|
6
|
+
#
|
7
|
+
# By default, the FastCGI crash log is RAILS_ROOT/log/fastcgi.crash.log
|
8
|
+
# and the GC period is nil (turned off). A reasonable number of requests
|
9
|
+
# could range from 10-100 depending on the memory footprint of your app.
|
10
|
+
#
|
11
|
+
# Example:
|
12
|
+
# # Default log path, normal GC behavior.
|
13
|
+
# RailsFCGIHandler.process!
|
14
|
+
#
|
15
|
+
# # Default log path, 50 requests between GC.
|
16
|
+
# RailsFCGIHandler.process! nil, 50
|
17
|
+
#
|
18
|
+
# # Custom log path, normal GC behavior.
|
19
|
+
# RailsFCGIHandler.process! '/var/log/myapp_fcgi_crash.log'
|
20
|
+
#
|
21
|
+
require File.dirname(__FILE__) + "/../config/environment"
|
22
|
+
require 'fcgi_handler'
|
23
|
+
|
24
|
+
if (defined?(ENV['RAILS_ENV'])) then
|
25
|
+
log_file = File.dirname(__FILE__) + "/../log/#{ENV['RAILS_ENV']}_fastcgi.crash.log"
|
26
|
+
else
|
27
|
+
log_file = File.dirname(__FILE__) + "/../log/fastcgi.crash.log"
|
28
|
+
end
|
29
|
+
RailsFCGIHandler.process! log_file
|
data/public/dispatch.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
|
4
|
+
|
5
|
+
# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
|
6
|
+
# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
|
7
|
+
require "dispatcher"
|
8
|
+
|
9
|
+
ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
|
10
|
+
Dispatcher.dispatch
|
data/public/favicon.ico
ADDED
File without changes
|
Binary file
|
Binary file
|
@@ -0,0 +1,750 @@
|
|
1
|
+
// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
|
2
|
+
// (c) 2005 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
|
3
|
+
// (c) 2005 Jon Tirsen (http://www.tirsen.com)
|
4
|
+
// Contributors:
|
5
|
+
// Richard Livsey
|
6
|
+
// Rahul Bhargava
|
7
|
+
// Rob Wills
|
8
|
+
//
|
9
|
+
// See scriptaculous.js for full license.
|
10
|
+
|
11
|
+
// Autocompleter.Base handles all the autocompletion functionality
|
12
|
+
// that's independent of the data source for autocompletion. This
|
13
|
+
// includes drawing the autocompletion menu, observing keyboard
|
14
|
+
// and mouse events, and similar.
|
15
|
+
//
|
16
|
+
// Specific autocompleters need to provide, at the very least,
|
17
|
+
// a getUpdatedChoices function that will be invoked every time
|
18
|
+
// the text inside the monitored textbox changes. This method
|
19
|
+
// should get the text for which to provide autocompletion by
|
20
|
+
// invoking this.getToken(), NOT by directly accessing
|
21
|
+
// this.element.value. This is to allow incremental tokenized
|
22
|
+
// autocompletion. Specific auto-completion logic (AJAX, etc)
|
23
|
+
// belongs in getUpdatedChoices.
|
24
|
+
//
|
25
|
+
// Tokenized incremental autocompletion is enabled automatically
|
26
|
+
// when an autocompleter is instantiated with the 'tokens' option
|
27
|
+
// in the options parameter, e.g.:
|
28
|
+
// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
|
29
|
+
// will incrementally autocomplete with a comma as the token.
|
30
|
+
// Additionally, ',' in the above example can be replaced with
|
31
|
+
// a token array, e.g. { tokens: [',', '\n'] } which
|
32
|
+
// enables autocompletion on multiple tokens. This is most
|
33
|
+
// useful when one of the tokens is \n (a newline), as it
|
34
|
+
// allows smart autocompletion after linebreaks.
|
35
|
+
|
36
|
+
var Autocompleter = {}
|
37
|
+
Autocompleter.Base = function() {};
|
38
|
+
Autocompleter.Base.prototype = {
|
39
|
+
baseInitialize: function(element, update, options) {
|
40
|
+
this.element = $(element);
|
41
|
+
this.update = $(update);
|
42
|
+
this.hasFocus = false;
|
43
|
+
this.changed = false;
|
44
|
+
this.active = false;
|
45
|
+
this.index = 0;
|
46
|
+
this.entryCount = 0;
|
47
|
+
|
48
|
+
if (this.setOptions)
|
49
|
+
this.setOptions(options);
|
50
|
+
else
|
51
|
+
this.options = options || {};
|
52
|
+
|
53
|
+
this.options.paramName = this.options.paramName || this.element.name;
|
54
|
+
this.options.tokens = this.options.tokens || [];
|
55
|
+
this.options.frequency = this.options.frequency || 0.4;
|
56
|
+
this.options.minChars = this.options.minChars || 1;
|
57
|
+
this.options.onShow = this.options.onShow ||
|
58
|
+
function(element, update){
|
59
|
+
if(!update.style.position || update.style.position=='absolute') {
|
60
|
+
update.style.position = 'absolute';
|
61
|
+
Position.clone(element, update, {setHeight: false, offsetTop: element.offsetHeight});
|
62
|
+
}
|
63
|
+
Effect.Appear(update,{duration:0.15});
|
64
|
+
};
|
65
|
+
this.options.onHide = this.options.onHide ||
|
66
|
+
function(element, update){ new Effect.Fade(update,{duration:0.15}) };
|
67
|
+
|
68
|
+
if (typeof(this.options.tokens) == 'string')
|
69
|
+
this.options.tokens = new Array(this.options.tokens);
|
70
|
+
|
71
|
+
this.observer = null;
|
72
|
+
|
73
|
+
this.element.setAttribute('autocomplete','off');
|
74
|
+
|
75
|
+
Element.hide(this.update);
|
76
|
+
|
77
|
+
Event.observe(this.element, "blur", this.onBlur.bindAsEventListener(this));
|
78
|
+
Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this));
|
79
|
+
},
|
80
|
+
|
81
|
+
show: function() {
|
82
|
+
if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
|
83
|
+
if(!this.iefix &&
|
84
|
+
(navigator.appVersion.indexOf('MSIE')>0) &&
|
85
|
+
(navigator.userAgent.indexOf('Opera')<0) &&
|
86
|
+
(Element.getStyle(this.update, 'position')=='absolute')) {
|
87
|
+
new Insertion.After(this.update,
|
88
|
+
'<iframe id="' + this.update.id + '_iefix" '+
|
89
|
+
'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
|
90
|
+
'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
|
91
|
+
this.iefix = $(this.update.id+'_iefix');
|
92
|
+
}
|
93
|
+
if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
|
94
|
+
},
|
95
|
+
|
96
|
+
fixIEOverlapping: function() {
|
97
|
+
Position.clone(this.update, this.iefix);
|
98
|
+
this.iefix.style.zIndex = 1;
|
99
|
+
this.update.style.zIndex = 2;
|
100
|
+
Element.show(this.iefix);
|
101
|
+
},
|
102
|
+
|
103
|
+
hide: function() {
|
104
|
+
this.stopIndicator();
|
105
|
+
if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
|
106
|
+
if(this.iefix) Element.hide(this.iefix);
|
107
|
+
},
|
108
|
+
|
109
|
+
startIndicator: function() {
|
110
|
+
if(this.options.indicator) Element.show(this.options.indicator);
|
111
|
+
},
|
112
|
+
|
113
|
+
stopIndicator: function() {
|
114
|
+
if(this.options.indicator) Element.hide(this.options.indicator);
|
115
|
+
},
|
116
|
+
|
117
|
+
onKeyPress: function(event) {
|
118
|
+
if(this.active)
|
119
|
+
switch(event.keyCode) {
|
120
|
+
case Event.KEY_TAB:
|
121
|
+
case Event.KEY_RETURN:
|
122
|
+
this.selectEntry();
|
123
|
+
Event.stop(event);
|
124
|
+
case Event.KEY_ESC:
|
125
|
+
this.hide();
|
126
|
+
this.active = false;
|
127
|
+
Event.stop(event);
|
128
|
+
return;
|
129
|
+
case Event.KEY_LEFT:
|
130
|
+
case Event.KEY_RIGHT:
|
131
|
+
return;
|
132
|
+
case Event.KEY_UP:
|
133
|
+
this.markPrevious();
|
134
|
+
this.render();
|
135
|
+
if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
|
136
|
+
return;
|
137
|
+
case Event.KEY_DOWN:
|
138
|
+
this.markNext();
|
139
|
+
this.render();
|
140
|
+
if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
|
141
|
+
return;
|
142
|
+
}
|
143
|
+
else
|
144
|
+
if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN)
|
145
|
+
return;
|
146
|
+
|
147
|
+
this.changed = true;
|
148
|
+
this.hasFocus = true;
|
149
|
+
|
150
|
+
if(this.observer) clearTimeout(this.observer);
|
151
|
+
this.observer =
|
152
|
+
setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
|
153
|
+
},
|
154
|
+
|
155
|
+
onHover: function(event) {
|
156
|
+
var element = Event.findElement(event, 'LI');
|
157
|
+
if(this.index != element.autocompleteIndex)
|
158
|
+
{
|
159
|
+
this.index = element.autocompleteIndex;
|
160
|
+
this.render();
|
161
|
+
}
|
162
|
+
Event.stop(event);
|
163
|
+
},
|
164
|
+
|
165
|
+
onClick: function(event) {
|
166
|
+
var element = Event.findElement(event, 'LI');
|
167
|
+
this.index = element.autocompleteIndex;
|
168
|
+
this.selectEntry();
|
169
|
+
this.hide();
|
170
|
+
},
|
171
|
+
|
172
|
+
onBlur: function(event) {
|
173
|
+
// needed to make click events working
|
174
|
+
setTimeout(this.hide.bind(this), 250);
|
175
|
+
this.hasFocus = false;
|
176
|
+
this.active = false;
|
177
|
+
},
|
178
|
+
|
179
|
+
render: function() {
|
180
|
+
if(this.entryCount > 0) {
|
181
|
+
for (var i = 0; i < this.entryCount; i++)
|
182
|
+
this.index==i ?
|
183
|
+
Element.addClassName(this.getEntry(i),"selected") :
|
184
|
+
Element.removeClassName(this.getEntry(i),"selected");
|
185
|
+
|
186
|
+
if(this.hasFocus) {
|
187
|
+
this.show();
|
188
|
+
this.active = true;
|
189
|
+
}
|
190
|
+
} else {
|
191
|
+
this.active = false;
|
192
|
+
this.hide();
|
193
|
+
}
|
194
|
+
},
|
195
|
+
|
196
|
+
markPrevious: function() {
|
197
|
+
if(this.index > 0) this.index--
|
198
|
+
else this.index = this.entryCount-1;
|
199
|
+
},
|
200
|
+
|
201
|
+
markNext: function() {
|
202
|
+
if(this.index < this.entryCount-1) this.index++
|
203
|
+
else this.index = 0;
|
204
|
+
},
|
205
|
+
|
206
|
+
getEntry: function(index) {
|
207
|
+
return this.update.firstChild.childNodes[index];
|
208
|
+
},
|
209
|
+
|
210
|
+
getCurrentEntry: function() {
|
211
|
+
return this.getEntry(this.index);
|
212
|
+
},
|
213
|
+
|
214
|
+
selectEntry: function() {
|
215
|
+
this.active = false;
|
216
|
+
this.updateElement(this.getCurrentEntry());
|
217
|
+
},
|
218
|
+
|
219
|
+
updateElement: function(selectedElement) {
|
220
|
+
if (this.options.updateElement) {
|
221
|
+
this.options.updateElement(selectedElement);
|
222
|
+
return;
|
223
|
+
}
|
224
|
+
|
225
|
+
var value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
|
226
|
+
var lastTokenPos = this.findLastToken();
|
227
|
+
if (lastTokenPos != -1) {
|
228
|
+
var newValue = this.element.value.substr(0, lastTokenPos + 1);
|
229
|
+
var whitespace = this.element.value.substr(lastTokenPos + 1).match(/^\s+/);
|
230
|
+
if (whitespace)
|
231
|
+
newValue += whitespace[0];
|
232
|
+
this.element.value = newValue + value;
|
233
|
+
} else {
|
234
|
+
this.element.value = value;
|
235
|
+
}
|
236
|
+
this.element.focus();
|
237
|
+
|
238
|
+
if (this.options.afterUpdateElement)
|
239
|
+
this.options.afterUpdateElement(this.element, selectedElement);
|
240
|
+
},
|
241
|
+
|
242
|
+
updateChoices: function(choices) {
|
243
|
+
if(!this.changed && this.hasFocus) {
|
244
|
+
this.update.innerHTML = choices;
|
245
|
+
Element.cleanWhitespace(this.update);
|
246
|
+
Element.cleanWhitespace(this.update.firstChild);
|
247
|
+
|
248
|
+
if(this.update.firstChild && this.update.firstChild.childNodes) {
|
249
|
+
this.entryCount =
|
250
|
+
this.update.firstChild.childNodes.length;
|
251
|
+
for (var i = 0; i < this.entryCount; i++) {
|
252
|
+
var entry = this.getEntry(i);
|
253
|
+
entry.autocompleteIndex = i;
|
254
|
+
this.addObservers(entry);
|
255
|
+
}
|
256
|
+
} else {
|
257
|
+
this.entryCount = 0;
|
258
|
+
}
|
259
|
+
|
260
|
+
this.stopIndicator();
|
261
|
+
|
262
|
+
this.index = 0;
|
263
|
+
this.render();
|
264
|
+
}
|
265
|
+
},
|
266
|
+
|
267
|
+
addObservers: function(element) {
|
268
|
+
Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
|
269
|
+
Event.observe(element, "click", this.onClick.bindAsEventListener(this));
|
270
|
+
},
|
271
|
+
|
272
|
+
onObserverEvent: function() {
|
273
|
+
this.changed = false;
|
274
|
+
if(this.getToken().length>=this.options.minChars) {
|
275
|
+
this.startIndicator();
|
276
|
+
this.getUpdatedChoices();
|
277
|
+
} else {
|
278
|
+
this.active = false;
|
279
|
+
this.hide();
|
280
|
+
}
|
281
|
+
},
|
282
|
+
|
283
|
+
getToken: function() {
|
284
|
+
var tokenPos = this.findLastToken();
|
285
|
+
if (tokenPos != -1)
|
286
|
+
var ret = this.element.value.substr(tokenPos + 1).replace(/^\s+/,'').replace(/\s+$/,'');
|
287
|
+
else
|
288
|
+
var ret = this.element.value;
|
289
|
+
|
290
|
+
return /\n/.test(ret) ? '' : ret;
|
291
|
+
},
|
292
|
+
|
293
|
+
findLastToken: function() {
|
294
|
+
var lastTokenPos = -1;
|
295
|
+
|
296
|
+
for (var i=0; i<this.options.tokens.length; i++) {
|
297
|
+
var thisTokenPos = this.element.value.lastIndexOf(this.options.tokens[i]);
|
298
|
+
if (thisTokenPos > lastTokenPos)
|
299
|
+
lastTokenPos = thisTokenPos;
|
300
|
+
}
|
301
|
+
return lastTokenPos;
|
302
|
+
}
|
303
|
+
}
|
304
|
+
|
305
|
+
Ajax.Autocompleter = Class.create();
|
306
|
+
Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), {
|
307
|
+
initialize: function(element, update, url, options) {
|
308
|
+
this.baseInitialize(element, update, options);
|
309
|
+
this.options.asynchronous = true;
|
310
|
+
this.options.onComplete = this.onComplete.bind(this);
|
311
|
+
this.options.defaultParams = this.options.parameters || null;
|
312
|
+
this.url = url;
|
313
|
+
},
|
314
|
+
|
315
|
+
getUpdatedChoices: function() {
|
316
|
+
entry = encodeURIComponent(this.options.paramName) + '=' +
|
317
|
+
encodeURIComponent(this.getToken());
|
318
|
+
|
319
|
+
this.options.parameters = this.options.callback ?
|
320
|
+
this.options.callback(this.element, entry) : entry;
|
321
|
+
|
322
|
+
if(this.options.defaultParams)
|
323
|
+
this.options.parameters += '&' + this.options.defaultParams;
|
324
|
+
|
325
|
+
new Ajax.Request(this.url, this.options);
|
326
|
+
},
|
327
|
+
|
328
|
+
onComplete: function(request) {
|
329
|
+
this.updateChoices(request.responseText);
|
330
|
+
}
|
331
|
+
|
332
|
+
});
|
333
|
+
|
334
|
+
// The local array autocompleter. Used when you'd prefer to
|
335
|
+
// inject an array of autocompletion options into the page, rather
|
336
|
+
// than sending out Ajax queries, which can be quite slow sometimes.
|
337
|
+
//
|
338
|
+
// The constructor takes four parameters. The first two are, as usual,
|
339
|
+
// the id of the monitored textbox, and id of the autocompletion menu.
|
340
|
+
// The third is the array you want to autocomplete from, and the fourth
|
341
|
+
// is the options block.
|
342
|
+
//
|
343
|
+
// Extra local autocompletion options:
|
344
|
+
// - choices - How many autocompletion choices to offer
|
345
|
+
//
|
346
|
+
// - partialSearch - If false, the autocompleter will match entered
|
347
|
+
// text only at the beginning of strings in the
|
348
|
+
// autocomplete array. Defaults to true, which will
|
349
|
+
// match text at the beginning of any *word* in the
|
350
|
+
// strings in the autocomplete array. If you want to
|
351
|
+
// search anywhere in the string, additionally set
|
352
|
+
// the option fullSearch to true (default: off).
|
353
|
+
//
|
354
|
+
// - fullSsearch - Search anywhere in autocomplete array strings.
|
355
|
+
//
|
356
|
+
// - partialChars - How many characters to enter before triggering
|
357
|
+
// a partial match (unlike minChars, which defines
|
358
|
+
// how many characters are required to do any match
|
359
|
+
// at all). Defaults to 2.
|
360
|
+
//
|
361
|
+
// - ignoreCase - Whether to ignore case when autocompleting.
|
362
|
+
// Defaults to true.
|
363
|
+
//
|
364
|
+
// It's possible to pass in a custom function as the 'selector'
|
365
|
+
// option, if you prefer to write your own autocompletion logic.
|
366
|
+
// In that case, the other options above will not apply unless
|
367
|
+
// you support them.
|
368
|
+
|
369
|
+
Autocompleter.Local = Class.create();
|
370
|
+
Autocompleter.Local.prototype = Object.extend(new Autocompleter.Base(), {
|
371
|
+
initialize: function(element, update, array, options) {
|
372
|
+
this.baseInitialize(element, update, options);
|
373
|
+
this.options.array = array;
|
374
|
+
},
|
375
|
+
|
376
|
+
getUpdatedChoices: function() {
|
377
|
+
this.updateChoices(this.options.selector(this));
|
378
|
+
},
|
379
|
+
|
380
|
+
setOptions: function(options) {
|
381
|
+
this.options = Object.extend({
|
382
|
+
choices: 10,
|
383
|
+
partialSearch: true,
|
384
|
+
partialChars: 2,
|
385
|
+
ignoreCase: true,
|
386
|
+
fullSearch: false,
|
387
|
+
selector: function(instance) {
|
388
|
+
var ret = []; // Beginning matches
|
389
|
+
var partial = []; // Inside matches
|
390
|
+
var entry = instance.getToken();
|
391
|
+
var count = 0;
|
392
|
+
|
393
|
+
for (var i = 0; i < instance.options.array.length &&
|
394
|
+
ret.length < instance.options.choices ; i++) {
|
395
|
+
|
396
|
+
var elem = instance.options.array[i];
|
397
|
+
var foundPos = instance.options.ignoreCase ?
|
398
|
+
elem.toLowerCase().indexOf(entry.toLowerCase()) :
|
399
|
+
elem.indexOf(entry);
|
400
|
+
|
401
|
+
while (foundPos != -1) {
|
402
|
+
if (foundPos == 0 && elem.length != entry.length) {
|
403
|
+
ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" +
|
404
|
+
elem.substr(entry.length) + "</li>");
|
405
|
+
break;
|
406
|
+
} else if (entry.length >= instance.options.partialChars &&
|
407
|
+
instance.options.partialSearch && foundPos != -1) {
|
408
|
+
if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
|
409
|
+
partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
|
410
|
+
elem.substr(foundPos, entry.length) + "</strong>" + elem.substr(
|
411
|
+
foundPos + entry.length) + "</li>");
|
412
|
+
break;
|
413
|
+
}
|
414
|
+
}
|
415
|
+
|
416
|
+
foundPos = instance.options.ignoreCase ?
|
417
|
+
elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
|
418
|
+
elem.indexOf(entry, foundPos + 1);
|
419
|
+
|
420
|
+
}
|
421
|
+
}
|
422
|
+
if (partial.length)
|
423
|
+
ret = ret.concat(partial.slice(0, instance.options.choices - ret.length))
|
424
|
+
return "<ul>" + ret.join('') + "</ul>";
|
425
|
+
}
|
426
|
+
}, options || {});
|
427
|
+
}
|
428
|
+
});
|
429
|
+
|
430
|
+
// AJAX in-place editor
|
431
|
+
//
|
432
|
+
// see documentation on http://wiki.script.aculo.us/scriptaculous/show/Ajax.InPlaceEditor
|
433
|
+
|
434
|
+
// Use this if you notice weird scrolling problems on some browsers,
|
435
|
+
// the DOM might be a bit confused when this gets called so do this
|
436
|
+
// waits 1 ms (with setTimeout) until it does the activation
|
437
|
+
Field.scrollFreeActivate = function(field) {
|
438
|
+
setTimeout(function() {
|
439
|
+
Field.activate(field);
|
440
|
+
}, 1);
|
441
|
+
}
|
442
|
+
|
443
|
+
Ajax.InPlaceEditor = Class.create();
|
444
|
+
Ajax.InPlaceEditor.defaultHighlightColor = "#FFFF99";
|
445
|
+
Ajax.InPlaceEditor.prototype = {
|
446
|
+
initialize: function(element, url, options) {
|
447
|
+
this.url = url;
|
448
|
+
this.element = $(element);
|
449
|
+
|
450
|
+
this.options = Object.extend({
|
451
|
+
okText: "ok",
|
452
|
+
cancelText: "cancel",
|
453
|
+
savingText: "Saving...",
|
454
|
+
clickToEditText: "Click to edit",
|
455
|
+
okText: "ok",
|
456
|
+
rows: 1,
|
457
|
+
onComplete: function(transport, element) {
|
458
|
+
new Effect.Highlight(element, {startcolor: this.options.highlightcolor});
|
459
|
+
},
|
460
|
+
onFailure: function(transport) {
|
461
|
+
alert("Error communicating with the server: " + transport.responseText.stripTags());
|
462
|
+
},
|
463
|
+
callback: function(form) {
|
464
|
+
return Form.serialize(form);
|
465
|
+
},
|
466
|
+
handleLineBreaks: true,
|
467
|
+
loadingText: 'Loading...',
|
468
|
+
savingClassName: 'inplaceeditor-saving',
|
469
|
+
loadingClassName: 'inplaceeditor-loading',
|
470
|
+
formClassName: 'inplaceeditor-form',
|
471
|
+
highlightcolor: Ajax.InPlaceEditor.defaultHighlightColor,
|
472
|
+
highlightendcolor: "#FFFFFF",
|
473
|
+
externalControl: null,
|
474
|
+
ajaxOptions: {}
|
475
|
+
}, options || {});
|
476
|
+
|
477
|
+
if(!this.options.formId && this.element.id) {
|
478
|
+
this.options.formId = this.element.id + "-inplaceeditor";
|
479
|
+
if ($(this.options.formId)) {
|
480
|
+
// there's already a form with that name, don't specify an id
|
481
|
+
this.options.formId = null;
|
482
|
+
}
|
483
|
+
}
|
484
|
+
|
485
|
+
if (this.options.externalControl) {
|
486
|
+
this.options.externalControl = $(this.options.externalControl);
|
487
|
+
}
|
488
|
+
|
489
|
+
this.originalBackground = Element.getStyle(this.element, 'background-color');
|
490
|
+
if (!this.originalBackground) {
|
491
|
+
this.originalBackground = "transparent";
|
492
|
+
}
|
493
|
+
|
494
|
+
this.element.title = this.options.clickToEditText;
|
495
|
+
|
496
|
+
this.onclickListener = this.enterEditMode.bindAsEventListener(this);
|
497
|
+
this.mouseoverListener = this.enterHover.bindAsEventListener(this);
|
498
|
+
this.mouseoutListener = this.leaveHover.bindAsEventListener(this);
|
499
|
+
Event.observe(this.element, 'click', this.onclickListener);
|
500
|
+
Event.observe(this.element, 'mouseover', this.mouseoverListener);
|
501
|
+
Event.observe(this.element, 'mouseout', this.mouseoutListener);
|
502
|
+
if (this.options.externalControl) {
|
503
|
+
Event.observe(this.options.externalControl, 'click', this.onclickListener);
|
504
|
+
Event.observe(this.options.externalControl, 'mouseover', this.mouseoverListener);
|
505
|
+
Event.observe(this.options.externalControl, 'mouseout', this.mouseoutListener);
|
506
|
+
}
|
507
|
+
},
|
508
|
+
enterEditMode: function(evt) {
|
509
|
+
if (this.saving) return;
|
510
|
+
if (this.editing) return;
|
511
|
+
this.editing = true;
|
512
|
+
this.onEnterEditMode();
|
513
|
+
if (this.options.externalControl) {
|
514
|
+
Element.hide(this.options.externalControl);
|
515
|
+
}
|
516
|
+
Element.hide(this.element);
|
517
|
+
this.createForm();
|
518
|
+
this.element.parentNode.insertBefore(this.form, this.element);
|
519
|
+
Field.scrollFreeActivate(this.editField);
|
520
|
+
// stop the event to avoid a page refresh in Safari
|
521
|
+
if (evt) {
|
522
|
+
Event.stop(evt);
|
523
|
+
}
|
524
|
+
return false;
|
525
|
+
},
|
526
|
+
createForm: function() {
|
527
|
+
this.form = document.createElement("form");
|
528
|
+
this.form.id = this.options.formId;
|
529
|
+
Element.addClassName(this.form, this.options.formClassName)
|
530
|
+
this.form.onsubmit = this.onSubmit.bind(this);
|
531
|
+
|
532
|
+
this.createEditField();
|
533
|
+
|
534
|
+
if (this.options.textarea) {
|
535
|
+
var br = document.createElement("br");
|
536
|
+
this.form.appendChild(br);
|
537
|
+
}
|
538
|
+
|
539
|
+
okButton = document.createElement("input");
|
540
|
+
okButton.type = "submit";
|
541
|
+
okButton.value = this.options.okText;
|
542
|
+
this.form.appendChild(okButton);
|
543
|
+
|
544
|
+
cancelLink = document.createElement("a");
|
545
|
+
cancelLink.href = "#";
|
546
|
+
cancelLink.appendChild(document.createTextNode(this.options.cancelText));
|
547
|
+
cancelLink.onclick = this.onclickCancel.bind(this);
|
548
|
+
this.form.appendChild(cancelLink);
|
549
|
+
},
|
550
|
+
hasHTMLLineBreaks: function(string) {
|
551
|
+
if (!this.options.handleLineBreaks) return false;
|
552
|
+
return string.match(/<br/i) || string.match(/<p>/i);
|
553
|
+
},
|
554
|
+
convertHTMLLineBreaks: function(string) {
|
555
|
+
return string.replace(/<br>/gi, "\n").replace(/<br\/>/gi, "\n").replace(/<\/p>/gi, "\n").replace(/<p>/gi, "");
|
556
|
+
},
|
557
|
+
createEditField: function() {
|
558
|
+
var text;
|
559
|
+
if(this.options.loadTextURL) {
|
560
|
+
text = this.options.loadingText;
|
561
|
+
} else {
|
562
|
+
text = this.getText();
|
563
|
+
}
|
564
|
+
|
565
|
+
if (this.options.rows == 1 && !this.hasHTMLLineBreaks(text)) {
|
566
|
+
this.options.textarea = false;
|
567
|
+
var textField = document.createElement("input");
|
568
|
+
textField.type = "text";
|
569
|
+
textField.name = "value";
|
570
|
+
textField.value = text;
|
571
|
+
textField.style.backgroundColor = this.options.highlightcolor;
|
572
|
+
var size = this.options.size || this.options.cols || 0;
|
573
|
+
if (size != 0) textField.size = size;
|
574
|
+
this.editField = textField;
|
575
|
+
} else {
|
576
|
+
this.options.textarea = true;
|
577
|
+
var textArea = document.createElement("textarea");
|
578
|
+
textArea.name = "value";
|
579
|
+
textArea.value = this.convertHTMLLineBreaks(text);
|
580
|
+
textArea.rows = this.options.rows;
|
581
|
+
textArea.cols = this.options.cols || 40;
|
582
|
+
this.editField = textArea;
|
583
|
+
}
|
584
|
+
|
585
|
+
if(this.options.loadTextURL) {
|
586
|
+
this.loadExternalText();
|
587
|
+
}
|
588
|
+
this.form.appendChild(this.editField);
|
589
|
+
},
|
590
|
+
getText: function() {
|
591
|
+
return this.element.innerHTML;
|
592
|
+
},
|
593
|
+
loadExternalText: function() {
|
594
|
+
Element.addClassName(this.form, this.options.loadingClassName);
|
595
|
+
this.editField.disabled = true;
|
596
|
+
new Ajax.Request(
|
597
|
+
this.options.loadTextURL,
|
598
|
+
Object.extend({
|
599
|
+
asynchronous: true,
|
600
|
+
onComplete: this.onLoadedExternalText.bind(this)
|
601
|
+
}, this.options.ajaxOptions)
|
602
|
+
);
|
603
|
+
},
|
604
|
+
onLoadedExternalText: function(transport) {
|
605
|
+
Element.removeClassName(this.form, this.options.loadingClassName);
|
606
|
+
this.editField.disabled = false;
|
607
|
+
this.editField.value = transport.responseText.stripTags();
|
608
|
+
},
|
609
|
+
onclickCancel: function() {
|
610
|
+
this.onComplete();
|
611
|
+
this.leaveEditMode();
|
612
|
+
return false;
|
613
|
+
},
|
614
|
+
onFailure: function(transport) {
|
615
|
+
this.options.onFailure(transport);
|
616
|
+
if (this.oldInnerHTML) {
|
617
|
+
this.element.innerHTML = this.oldInnerHTML;
|
618
|
+
this.oldInnerHTML = null;
|
619
|
+
}
|
620
|
+
return false;
|
621
|
+
},
|
622
|
+
onSubmit: function() {
|
623
|
+
// onLoading resets these so we need to save them away for the Ajax call
|
624
|
+
var form = this.form;
|
625
|
+
var value = this.editField.value;
|
626
|
+
|
627
|
+
// do this first, sometimes the ajax call returns before we get a chance to switch on Saving...
|
628
|
+
// which means this will actually switch on Saving... *after* we've left edit mode causing Saving...
|
629
|
+
// to be displayed indefinitely
|
630
|
+
this.onLoading();
|
631
|
+
|
632
|
+
new Ajax.Updater(
|
633
|
+
{
|
634
|
+
success: this.element,
|
635
|
+
// don't update on failure (this could be an option)
|
636
|
+
failure: null
|
637
|
+
},
|
638
|
+
this.url,
|
639
|
+
Object.extend({
|
640
|
+
parameters: this.options.callback(form, value),
|
641
|
+
onComplete: this.onComplete.bind(this),
|
642
|
+
onFailure: this.onFailure.bind(this)
|
643
|
+
}, this.options.ajaxOptions)
|
644
|
+
);
|
645
|
+
// stop the event to avoid a page refresh in Safari
|
646
|
+
if (arguments.length > 1) {
|
647
|
+
Event.stop(arguments[0]);
|
648
|
+
}
|
649
|
+
return false;
|
650
|
+
},
|
651
|
+
onLoading: function() {
|
652
|
+
this.saving = true;
|
653
|
+
this.removeForm();
|
654
|
+
this.leaveHover();
|
655
|
+
this.showSaving();
|
656
|
+
},
|
657
|
+
showSaving: function() {
|
658
|
+
this.oldInnerHTML = this.element.innerHTML;
|
659
|
+
this.element.innerHTML = this.options.savingText;
|
660
|
+
Element.addClassName(this.element, this.options.savingClassName);
|
661
|
+
this.element.style.backgroundColor = this.originalBackground;
|
662
|
+
Element.show(this.element);
|
663
|
+
},
|
664
|
+
removeForm: function() {
|
665
|
+
if(this.form) {
|
666
|
+
if (this.form.parentNode) Element.remove(this.form);
|
667
|
+
this.form = null;
|
668
|
+
}
|
669
|
+
},
|
670
|
+
enterHover: function() {
|
671
|
+
if (this.saving) return;
|
672
|
+
this.element.style.backgroundColor = this.options.highlightcolor;
|
673
|
+
if (this.effect) {
|
674
|
+
this.effect.cancel();
|
675
|
+
}
|
676
|
+
Element.addClassName(this.element, this.options.hoverClassName)
|
677
|
+
},
|
678
|
+
leaveHover: function() {
|
679
|
+
if (this.options.backgroundColor) {
|
680
|
+
this.element.style.backgroundColor = this.oldBackground;
|
681
|
+
}
|
682
|
+
Element.removeClassName(this.element, this.options.hoverClassName)
|
683
|
+
if (this.saving) return;
|
684
|
+
this.effect = new Effect.Highlight(this.element, {
|
685
|
+
startcolor: this.options.highlightcolor,
|
686
|
+
endcolor: this.options.highlightendcolor,
|
687
|
+
restorecolor: this.originalBackground
|
688
|
+
});
|
689
|
+
},
|
690
|
+
leaveEditMode: function() {
|
691
|
+
Element.removeClassName(this.element, this.options.savingClassName);
|
692
|
+
this.removeForm();
|
693
|
+
this.leaveHover();
|
694
|
+
this.element.style.backgroundColor = this.originalBackground;
|
695
|
+
Element.show(this.element);
|
696
|
+
if (this.options.externalControl) {
|
697
|
+
Element.show(this.options.externalControl);
|
698
|
+
}
|
699
|
+
this.editing = false;
|
700
|
+
this.saving = false;
|
701
|
+
this.oldInnerHTML = null;
|
702
|
+
this.onLeaveEditMode();
|
703
|
+
},
|
704
|
+
onComplete: function(transport) {
|
705
|
+
this.leaveEditMode();
|
706
|
+
this.options.onComplete.bind(this)(transport, this.element);
|
707
|
+
},
|
708
|
+
onEnterEditMode: function() {},
|
709
|
+
onLeaveEditMode: function() {},
|
710
|
+
dispose: function() {
|
711
|
+
if (this.oldInnerHTML) {
|
712
|
+
this.element.innerHTML = this.oldInnerHTML;
|
713
|
+
}
|
714
|
+
this.leaveEditMode();
|
715
|
+
Event.stopObserving(this.element, 'click', this.onclickListener);
|
716
|
+
Event.stopObserving(this.element, 'mouseover', this.mouseoverListener);
|
717
|
+
Event.stopObserving(this.element, 'mouseout', this.mouseoutListener);
|
718
|
+
if (this.options.externalControl) {
|
719
|
+
Event.stopObserving(this.options.externalControl, 'click', this.onclickListener);
|
720
|
+
Event.stopObserving(this.options.externalControl, 'mouseover', this.mouseoverListener);
|
721
|
+
Event.stopObserving(this.options.externalControl, 'mouseout', this.mouseoutListener);
|
722
|
+
}
|
723
|
+
}
|
724
|
+
};
|
725
|
+
|
726
|
+
// Delayed observer, like Form.Element.Observer,
|
727
|
+
// but waits for delay after last key input
|
728
|
+
// Ideal for live-search fields
|
729
|
+
|
730
|
+
Form.Element.DelayedObserver = Class.create();
|
731
|
+
Form.Element.DelayedObserver.prototype = {
|
732
|
+
initialize: function(element, delay, callback) {
|
733
|
+
this.delay = delay || 0.5;
|
734
|
+
this.element = $(element);
|
735
|
+
this.callback = callback;
|
736
|
+
this.timer = null;
|
737
|
+
this.lastValue = $F(this.element);
|
738
|
+
Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
|
739
|
+
},
|
740
|
+
delayedListener: function(event) {
|
741
|
+
if(this.lastValue == $F(this.element)) return;
|
742
|
+
if(this.timer) clearTimeout(this.timer);
|
743
|
+
this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);
|
744
|
+
this.lastValue = $F(this.element);
|
745
|
+
},
|
746
|
+
onTimerEvent: function() {
|
747
|
+
this.timer = null;
|
748
|
+
this.callback(this.element, $F(this.element));
|
749
|
+
}
|
750
|
+
};
|