<%= h(static_story) %>
5 | <% if static_story.estimate? %> 6 |Story Points: <%= static_story.estimate %>
7 | <% end %> 8 |├── public ├── favicon.ico ├── google1efce4ada1c20ee7.html ├── robots.txt ├── stylesheets │ ├── iteration │ │ ├── typography.css │ │ ├── layout.css │ │ └── colours.css │ ├── iteration_planning │ │ ├── typography.css │ │ └── colours.css │ ├── story │ │ ├── typography.css │ │ └── colours.css │ └── iteration_active │ │ ├── typography.css │ │ └── colours.css ├── images │ ├── burndown.png │ ├── new_story.png │ ├── story_card.png │ ├── try_it_free.png │ ├── fella_testing.gif │ ├── fella_testing.png │ ├── simply_agile.png │ ├── active_iteration.png │ ├── arrow_from_grey.png │ ├── arrow_large_left.png │ ├── underline_green.png │ ├── arrow_large_right.png │ ├── arrow_small_right.gif │ ├── arrow_small_right.png │ ├── button_background.png │ ├── fella_in_progress.gif │ ├── fella_in_progress.png │ ├── new_story_highlight.png │ ├── planning_iteration.png │ ├── simply_agile_large.png │ ├── simply_agile_twitter.png │ ├── arrow_large_left_highlighted.png │ ├── arrow_large_right_highlighted.png │ ├── arrow_small_right_green_background.png │ ├── arrow_small_right_grey_background.png │ ├── arrow_small_right_orange_background.png │ └── a_simple_tool_for_effective_agile_teams.png └── javascripts │ ├── flash.js │ └── backlog_prioritisation.js ├── log └── .gitignore ├── db ├── .gitignore └── migrate │ ├── 20090317120007_add_verify_by_to_users.rb │ ├── 20090306101907_add_estimate_to_stories.rb │ ├── 20090323183452_add_end_date_to_iterations.rb │ ├── 20090310131740_add_description_to_projects.rb │ ├── 20090311171715_add_start_date_to_iteration.rb │ ├── 20090312164111_add_status_to_stories.rb │ ├── 20090313124609_add_priority_to_stories.rb │ ├── 20090401132534_add_suspended_to_organisations.rb │ ├── 20090402111030_add_has_failed_to_payment_method.rb │ ├── 20090406212619_add_last_four_digits_to_invoices.rb │ ├── 20090311112021_add_initial_estimate_to_iteration.rb │ ├── 20090318171027_add_acknowledgement_token_to_users.rb │ ├── 20090303161221_create_organisations.rb │ ├── 20090330205513_add_payment_plan_id_to_organisations.rb │ ├── 20090325134154_add_sponsor_id_to_organisation_member.rb │ ├── 20090402152648_remove_address_line3_from_billing_address.rb │ ├── 20090303010437_create_projects.rb │ ├── 20090402160907_add_repeat_payment_token_to_payment_methods.rb │ ├── 20090402143027_create_voids.rb │ ├── 20090303141832_create_users.rb │ ├── 20090316171557_add_verifiction_to_user.rb │ ├── 20090325133236_create_story_team_members.rb │ ├── 20090330205043_create_payment_plans.rb │ ├── 20090310175005_create_burndown_data_points.rb │ ├── 20090304004418_create_stories.rb │ ├── 20090323131037_create_organisation_members.rb │ ├── 20090327110522_create_story_actions.rb │ ├── 20090402091521_create_captures.rb │ ├── 20090304193819_create_acceptance_criteria.rb │ ├── 20090312123836_remove_started_on_and_finished_on_from_iteration.rb │ ├── 20090318093902_create_organisation_sponsors.rb │ ├── 20090325141402_delete_organisation_sponsors.rb │ ├── 20090303213012_create_iterations.rb │ ├── 20090401164134_add_payment_dates_to_organisations.rb │ ├── 20090401182040_create_authorisations.rb │ ├── 20090403091156_create_repeats.rb │ ├── 20090401162346_create_payments.rb │ ├── 20090403130529_rename_payment_method_fields_to_be_same_as_active_merchant.rb │ ├── 20090325101204_move_acknowledgement_token_from_user_to_organisation_member.rb │ ├── 20090621194747_replace_repeat_payment_token_with_initial_payment_in_payment_methods.rb │ ├── 20090331102153_create_payment_methods.rb │ ├── 20090331105217_add_limits_to_payment_plans.rb │ ├── 20090331120108_create_billing_addresses.rb │ ├── 20090406105314_create_invoices.rb │ └── 20090406174801_add_columns_to_invoices.rb ├── vendor └── plugins │ ├── email-spec │ ├── install.rb │ ├── examples │ │ └── rails_root │ │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── images │ │ │ │ └── rails.png │ │ │ ├── javascripts │ │ │ │ └── application.js │ │ │ ├── robots.txt │ │ │ └── dispatch.rb │ │ │ ├── cucumber.yml │ │ │ ├── spec │ │ │ ├── rcov.opts │ │ │ ├── spec.opts │ │ │ ├── models │ │ │ │ └── user_spec.rb │ │ │ ├── model_factory.rb │ │ │ └── controllers │ │ │ │ └── welcome_controller_spec.rb │ │ │ ├── app │ │ │ ├── helpers │ │ │ │ ├── welcome_helper.rb │ │ │ │ └── application_helper.rb │ │ │ ├── models │ │ │ │ ├── user.rb │ │ │ │ └── user_mailer.rb │ │ │ ├── views │ │ │ │ ├── welcome │ │ │ │ │ ├── confirm.html.erb │ │ │ │ │ ├── signup.html.erb │ │ │ │ │ └── index.html.erb │ │ │ │ └── user_mailer │ │ │ │ │ └── signup.erb │ │ │ └── controllers │ │ │ │ └── welcome_controller.rb │ │ │ ├── script │ │ │ ├── plugin │ │ │ ├── runner │ │ │ ├── server │ │ │ ├── console │ │ │ ├── destroy │ │ │ ├── generate │ │ │ ├── dbconsole │ │ │ ├── process │ │ │ │ ├── reaper │ │ │ │ ├── inspector │ │ │ │ └── spawner │ │ │ ├── performance │ │ │ │ ├── request │ │ │ │ ├── profiler │ │ │ │ └── benchmarker │ │ │ ├── about │ │ │ ├── cucumber │ │ │ ├── spec │ │ │ └── autospec │ │ │ ├── stories │ │ │ ├── all.rb │ │ │ └── helper.rb │ │ │ ├── Rakefile │ │ │ ├── config │ │ │ ├── initializers │ │ │ │ ├── mime_types.rb │ │ │ │ └── inflections.rb │ │ │ └── database.yml │ │ │ ├── doc │ │ │ └── README_FOR_APP │ │ │ ├── db │ │ │ └── migrate │ │ │ │ └── 20090125013728_create_users.rb │ │ │ ├── vendor │ │ │ └── plugins │ │ │ │ └── email_spec │ │ │ │ └── rails_generators │ │ │ │ └── email_spec │ │ │ │ └── email_spec_generator.rb │ │ │ └── features │ │ │ └── support │ │ │ └── env.rb │ ├── VERSION.yml │ ├── .gitignore │ ├── spec │ │ ├── spec.opts │ │ └── spec_helper.rb │ ├── features │ │ ├── support │ │ │ └── env.rb │ │ └── rails_app.feature │ ├── lib │ │ ├── email-spec.rb │ │ ├── email_spec.rb │ │ └── email_spec │ │ │ ├── address_converter.rb │ │ │ └── cucumber.rb │ └── rails_generators │ │ └── email_spec │ │ └── email_spec_generator.rb │ ├── i18n_label │ ├── uninstall.rb │ ├── init.rb │ ├── install.rb │ ├── tasks │ │ └── i18n_label_tasks.rake │ ├── spec │ │ ├── spec_helper.rb │ │ └── i18n_label_spec.rb │ ├── Rakefile │ └── lib │ │ └── i18n_label.rb │ ├── country_select │ ├── init.rb │ ├── uninstall.rb │ ├── install.rb │ └── README │ ├── active_merchant │ ├── .gitignore │ ├── generators │ │ ├── gateway │ │ │ └── USAGE │ │ └── integration │ │ │ ├── USAGE │ │ │ └── templates │ │ │ ├── module_test.rb │ │ │ └── integration.rb │ ├── lib │ │ └── active_merchant │ │ │ ├── lib │ │ │ ├── error.rb │ │ │ ├── utils.rb │ │ │ ├── post_data.rb │ │ │ └── requires_parameters.rb │ │ │ └── billing │ │ │ ├── gateways.rb │ │ │ ├── integrations │ │ │ ├── bogus │ │ │ │ ├── return.rb │ │ │ │ ├── notification.rb │ │ │ │ └── helper.rb │ │ │ ├── nochex │ │ │ │ └── return.rb │ │ │ ├── paypal │ │ │ │ └── return.rb │ │ │ ├── chronopay │ │ │ │ └── return.rb │ │ │ ├── gestpay │ │ │ │ └── return.rb │ │ │ ├── two_checkout │ │ │ │ └── return.rb │ │ │ ├── bogus.rb │ │ │ ├── two_checkout.rb │ │ │ └── chronopay.rb │ │ │ ├── gateways │ │ │ ├── payflow │ │ │ │ └── payflow_response.rb │ │ │ ├── payflow_express_uk.rb │ │ │ ├── paypal_ca.rb │ │ │ └── paypal_express_common.rb │ │ │ └── credit_card_formatting.rb │ ├── init.rb │ ├── test │ │ └── unit │ │ │ ├── utils_test.rb │ │ │ ├── integrations │ │ │ ├── returns │ │ │ │ ├── return_test.rb │ │ │ │ ├── nochex_return_test.rb │ │ │ │ ├── paypal_return_test.rb │ │ │ │ ├── gestpay_return_test.rb │ │ │ │ └── chronopay_return_test.rb │ │ │ ├── nochex_module_test.rb │ │ │ ├── hi_trust_module_test.rb │ │ │ ├── chronopay_module_test.rb │ │ │ ├── two_checkout_module_test.rb │ │ │ ├── helpers │ │ │ │ └── hi_trust_helper_test.rb │ │ │ └── bogus_module_test.rb │ │ │ ├── gateways │ │ │ └── payflow_express_uk_test.rb │ │ │ ├── generators │ │ │ └── test_generator_helper.rb │ │ │ ├── credit_card_formatting_test.rb │ │ │ └── expiry_date_test.rb │ └── script │ │ ├── destroy │ │ └── generate │ ├── objectmother │ ├── install.rb │ ├── uninstall.rb │ ├── doc │ │ ├── created.rid │ │ ├── dot │ │ │ ├── f_0.png │ │ │ └── f_0.dot │ │ └── fr_class_index.html │ ├── init.rb │ ├── tasks │ │ └── object_mother_tasks.rake │ ├── spec │ │ └── prototypes │ │ │ └── user_mother.rb │ ├── README │ └── Rakefile │ ├── assert_valid_xhtml │ ├── install.rb │ ├── uninstall.rb │ ├── tasks │ │ └── assert_valid_xhtml_tasks.rake │ ├── init.rb │ ├── test │ │ └── assert_valid_xhtml_test.rb │ ├── Rakefile │ └── README │ ├── no-peeping-toms │ ├── install.rb │ ├── uninstall.rb │ ├── spec │ │ ├── db │ │ │ ├── database.yml │ │ │ └── schema.rb │ │ └── spec_helper.rb │ ├── tasks │ │ └── no_peeping_toms_tasks.rake │ ├── init.rb │ └── lib │ │ └── no_peeping_toms.rb │ ├── validates_email_format_of │ ├── init.rb │ ├── rails │ │ └── init.rb │ ├── test │ │ ├── database.yml │ │ ├── fixtures │ │ │ ├── people.yml │ │ │ └── person.rb │ │ └── schema.rb │ └── validates_email_format_of.gemspec │ ├── exception_notification │ ├── views │ │ └── exception_notifier │ │ │ ├── _backtrace.rhtml │ │ │ ├── _title.rhtml │ │ │ ├── _session.rhtml │ │ │ ├── exception_notification.rhtml │ │ │ ├── _request.rhtml │ │ │ ├── _environment.rhtml │ │ │ └── _inspect_model.rhtml │ ├── init.rb │ └── test │ │ └── test_helper.rb │ └── jandacap │ └── README ├── config ├── deploy.rb ├── protx.yml ├── deploy │ ├── production.rb │ └── development.rb ├── initializers │ ├── mime_types.rb │ ├── backtrace_silencers.rb │ ├── inflections.rb │ └── custom_active_record_view_errors.rb └── locales │ └── numbers.yml ├── spec ├── rcov.opts ├── spec.opts ├── helpers │ ├── projects_helper_spec.rb │ ├── home_helper_spec.rb │ ├── public_helper_spec.rb │ ├── users_helper_spec.rb │ ├── stories_helper_spec.rb │ ├── burndowns_helper_spec.rb │ ├── invoices_helper_spec.rb │ ├── sessions_helper_spec.rb │ ├── sitemaps_helper_spec.rb │ ├── iterations_helper_spec.rb │ ├── organisations_helper_spec.rb │ ├── payment_methods_helper_spec.rb │ ├── verifications_helper_spec.rb │ ├── active_iterations_helper_spec.rb │ ├── agile_terminology_helper_spec.rb │ ├── keyboard_shortcuts_helper_spec.rb │ ├── story_team_members_helper_spec.rb │ ├── acceptance_criteria_helper_spec.rb │ ├── organisation_members_helper_spec.rb │ ├── user_acknowledgements_helper_spec.rb │ └── verification_notifications_helper_spec.rb ├── object_mother │ ├── burndown_data_points.rb │ ├── payments.rb │ ├── story_team_members.rb │ ├── payment_plans.rb │ ├── billing_addresses.rb │ ├── payment_methods.rb │ ├── users.rb │ ├── organisations.rb │ ├── invoices.rb │ ├── projects.rb │ └── stories.rb ├── fixtures │ ├── story_actions.yml │ ├── story_team_members.yml │ ├── organisation_memberships.yml │ ├── authorisations.yml │ ├── payment_plans.yml │ ├── payment_methods.yml │ ├── repeats.yml │ ├── voids.yml │ ├── captures.yml │ ├── payments.yml │ ├── protx │ │ ├── successful_capture.yml │ │ ├── successful_repeat.yml │ │ ├── successful_authorization.yml │ │ └── rejected_authorization.yml │ ├── billing_addresses.yml │ └── invoices.yml ├── views │ ├── public │ │ └── show.html.erb_spec.rb │ ├── sessions │ │ └── new.html.erb_spec.rb │ ├── stories │ │ ├── new_guidance.html.erb_spec.rb │ │ ├── backlog_guidance.html.erb_spec.rb │ │ └── new_without_project.html.erb_spec.rb │ ├── users │ │ ├── show.html.erb_spec.rb │ │ └── new.html.erb_spec.rb │ ├── agile_terminology │ │ ├── user_stories.html.erb_spec.rb │ │ ├── project.html.erb_spec.rb │ │ ├── iteration.html.erb_spec.rb │ │ └── organisation.html.erb_spec.rb │ ├── sitemaps │ │ └── show.xml.builder_spec.rb │ ├── invoices │ │ ├── index.html.erb_spec.rb │ │ └── show.html.erb_spec.rb │ ├── iterations │ │ ├── show_active.html.erb_spec.rb │ │ └── new_guidance.html.erb_spec.rb │ ├── organisations │ │ ├── new.html.erb_spec.rb │ │ └── edit.html.erb_spec.rb │ ├── payment_methods │ │ ├── index_guidance.html.erb_spec.rb │ │ ├── new.html.erb_spec.rb │ │ └── index.html.erb_spec.rb │ ├── burndowns │ │ └── show.html.erb_spec.rb │ ├── projects │ │ ├── edit.html.erb_spec.rb │ │ ├── show_guidance.html.erb_spec.rb │ │ └── new.html.erb_spec.rb │ └── keyboard_shortcuts │ │ └── index.html.erb_spec.rb ├── controllers │ ├── keyboard_shortcuts_controller_spec.rb │ ├── privacy_policies_controller_spec.rb │ ├── sitemaps_controller_spec.rb │ ├── public_controller_spec.rb │ └── login_protection_spec.rb └── models │ └── story_action_spec.rb ├── app ├── helpers │ ├── home_helper.rb │ ├── users_helper.rb │ ├── public_helper.rb │ ├── burndowns_helper.rb │ ├── invoices_helper.rb │ ├── iterations_helper.rb │ ├── projects_helper.rb │ ├── sessions_helper.rb │ ├── sitemaps_helper.rb │ ├── organisations_helper.rb │ ├── payment_methods_helper.rb │ ├── verifications_helper.rb │ ├── active_iterations_helper.rb │ ├── agile_terminology_helper.rb │ ├── keyboard_shortcuts_helper.rb │ ├── story_team_members_helper.rb │ ├── acceptance_criteria_helper.rb │ ├── organisation_members_helper.rb │ ├── user_acknowledgements_helper.rb │ ├── verification_notifications_helper.rb │ └── stories_helper.rb ├── models │ ├── static_story.rb │ ├── story_action.rb │ ├── payment_plan.rb │ ├── user_observer.rb │ ├── invoice.rb │ ├── organisation_member_observer.rb │ ├── burndown_data_point.rb │ ├── acceptance_criterion_observer.rb │ ├── billing_address.rb │ ├── void.rb │ ├── invoice_observer.rb │ ├── organisation_observer.rb │ ├── capture.rb │ ├── story_team_member.rb │ ├── repeat.rb │ ├── payment_gateway.rb │ └── payment.rb ├── views │ ├── projects │ │ ├── _project.erb │ │ ├── _form.html.erb │ │ ├── new.html.erb │ │ ├── edit.html.erb │ │ ├── show_guidance.html.erb │ │ └── index.html.erb │ ├── burndowns │ │ └── show.html.erb │ ├── iterations │ │ ├── _list_item.erb │ │ ├── _new.erb │ │ ├── new.html.erb │ │ ├── _form.erb │ │ ├── _iteration.erb │ │ ├── new_guidance.html.erb │ │ └── edit.html.erb │ ├── stories │ │ ├── _list_item.erb │ │ ├── show.feature.erb │ │ ├── _form.erb │ │ ├── new_guidance.html.erb │ │ ├── _estimating_story.erb │ │ ├── _prioritising_story.erb │ │ ├── _project_select.erb │ │ ├── new_without_project.html.erb │ │ ├── index.html.erb │ │ ├── backlog_guidance.html.erb │ │ ├── new_with_project.html.erb │ │ ├── edit.html.erb │ │ ├── backlog.html.erb │ │ └── new_with_iteration.html.erb │ ├── layouts │ │ └── request.html.erb │ ├── agile_terminology │ │ ├── project.html.erb │ │ ├── iteration.html.erb │ │ └── organisation.html.erb │ ├── story_team_members │ │ └── _story_team_member.erb │ ├── shared │ │ └── _footer.erb │ ├── payment_methods │ │ ├── index_guidance.html.erb │ │ ├── index.html.erb │ │ ├── _payment_method.erb │ │ └── _form.html.erb │ ├── users │ │ └── show.html.erb │ ├── payment_plans │ │ └── _payment_plan.erb │ ├── invoices │ │ ├── _invoice.erb │ │ └── index.html.erb │ ├── user_mailer │ │ ├── acknowledgement.erb │ │ ├── payment_failure.erb │ │ └── verification.erb │ ├── acceptance_criteria │ │ ├── edit.js.erb │ │ ├── edit.html.erb │ │ ├── _list.erb │ │ └── _criterion.erb │ ├── verification_notifications │ │ └── new.html.erb │ ├── user_verifications │ │ └── new.html.erb │ ├── organisations │ │ ├── edit.html.erb │ │ └── index.html.erb │ ├── home │ │ └── _active_work.html.erb │ └── static_stories │ │ └── _static_story.erb └── controllers │ ├── public_controller.rb │ ├── sitemaps_controller.rb │ ├── privacy_policies_controller.rb │ ├── agile_terminology_controller.rb │ ├── keyboard_shortcuts_controller.rb │ ├── invoices_controller.rb │ ├── active_iterations_controller.rb │ ├── burndowns_controller.rb │ ├── user_acknowledgements_controller.rb │ └── user_verifications_controller.rb ├── lib ├── current_user.rb ├── organisation_suspender.rb ├── token_generation.rb └── tasks │ └── cucumber.rake ├── graphics ├── login.png ├── signup.png ├── active_iteration.xcf └── planning_iteration.xcf ├── script ├── plugin ├── runner ├── server ├── console ├── dbconsole ├── destroy ├── generate ├── performance │ ├── profiler │ └── benchmarker ├── about ├── spec ├── cucumber ├── autospec └── create_payment_plans ├── Capfile ├── doc └── README_FOR_APP ├── README.markdown └── Rakefile /public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /log/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /db/.gitignore: -------------------------------------------------------------------------------- 1 | schema.rb 2 | -------------------------------------------------------------------------------- /public/google1efce4ada1c20ee7.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/install.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /config/deploy.rb: -------------------------------------------------------------------------------- 1 | set :application, "simply-agile" 2 | -------------------------------------------------------------------------------- /spec/rcov.opts: -------------------------------------------------------------------------------- 1 | --exclude "spec/*,gems/*" 2 | --rails -------------------------------------------------------------------------------- /app/helpers/home_helper.rb: -------------------------------------------------------------------------------- 1 | module HomeHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/users_helper.rb: -------------------------------------------------------------------------------- 1 | module UsersHelper 2 | end 3 | -------------------------------------------------------------------------------- /vendor/plugins/i18n_label/uninstall.rb: -------------------------------------------------------------------------------- 1 | puts "Bye!" 2 | -------------------------------------------------------------------------------- /app/helpers/public_helper.rb: -------------------------------------------------------------------------------- 1 | module PublicHelper 2 | end 3 | -------------------------------------------------------------------------------- /vendor/plugins/country_select/init.rb: -------------------------------------------------------------------------------- 1 | require 'country_select' -------------------------------------------------------------------------------- /app/helpers/burndowns_helper.rb: -------------------------------------------------------------------------------- 1 | module BurndownsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/invoices_helper.rb: -------------------------------------------------------------------------------- 1 | module InvoicesHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/iterations_helper.rb: -------------------------------------------------------------------------------- 1 | module IterationsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/projects_helper.rb: -------------------------------------------------------------------------------- 1 | module ProjectsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/sessions_helper.rb: -------------------------------------------------------------------------------- 1 | module SessionsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/sitemaps_helper.rb: -------------------------------------------------------------------------------- 1 | module SitemapsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/models/static_story.rb: -------------------------------------------------------------------------------- 1 | class StaticStory < Story 2 | end 3 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | Sitemap: http://besimplyagile.com/sitemap.xml 2 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.orig 3 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/plugins/objectmother/install.rb: -------------------------------------------------------------------------------- 1 | # Install hook code here 2 | -------------------------------------------------------------------------------- /vendor/plugins/assert_valid_xhtml/install.rb: -------------------------------------------------------------------------------- 1 | # Install hook code here 2 | -------------------------------------------------------------------------------- /vendor/plugins/country_select/uninstall.rb: -------------------------------------------------------------------------------- 1 | # Uninstall hook code here 2 | -------------------------------------------------------------------------------- /vendor/plugins/no-peeping-toms/install.rb: -------------------------------------------------------------------------------- 1 | # Install hook code here 2 | -------------------------------------------------------------------------------- /vendor/plugins/objectmother/uninstall.rb: -------------------------------------------------------------------------------- 1 | # Uninstall hook code here 2 | -------------------------------------------------------------------------------- /app/helpers/organisations_helper.rb: -------------------------------------------------------------------------------- 1 | module OrganisationsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/payment_methods_helper.rb: -------------------------------------------------------------------------------- 1 | module PaymentMethodsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/verifications_helper.rb: -------------------------------------------------------------------------------- 1 | module VerificationsHelper 2 | end 3 | -------------------------------------------------------------------------------- /vendor/plugins/assert_valid_xhtml/uninstall.rb: -------------------------------------------------------------------------------- 1 | # Uninstall hook code here 2 | -------------------------------------------------------------------------------- /vendor/plugins/no-peeping-toms/uninstall.rb: -------------------------------------------------------------------------------- 1 | # Uninstall hook code here 2 | -------------------------------------------------------------------------------- /app/helpers/active_iterations_helper.rb: -------------------------------------------------------------------------------- 1 | module ActiveIterationsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/agile_terminology_helper.rb: -------------------------------------------------------------------------------- 1 | module AgileTerminologyHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/keyboard_shortcuts_helper.rb: -------------------------------------------------------------------------------- 1 | module KeyboardShortcutsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/story_team_members_helper.rb: -------------------------------------------------------------------------------- 1 | module StoryTeamMembersHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/views/projects/_project.erb: -------------------------------------------------------------------------------- 1 |
Find me in app/views/burndowns/show.html.erb
3 | -------------------------------------------------------------------------------- /app/views/iterations/_list_item.erb: -------------------------------------------------------------------------------- 1 |Find me in app/views/agile_terminology/project.html.erb
3 | -------------------------------------------------------------------------------- /public/images/arrow_large_left_highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camelpunch/simply_agile/HEAD/public/images/arrow_large_left_highlighted.png -------------------------------------------------------------------------------- /public/images/arrow_large_right_highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camelpunch/simply_agile/HEAD/public/images/arrow_large_right_highlighted.png -------------------------------------------------------------------------------- /script/performance/profiler: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/profiler' 4 | -------------------------------------------------------------------------------- /spec/helpers/projects_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe ProjectsHelper do 4 | end 5 | -------------------------------------------------------------------------------- /app/views/agile_terminology/iteration.html.erb: -------------------------------------------------------------------------------- 1 |Find me in app/views/agile_terminology/iteration.html.erb
3 | -------------------------------------------------------------------------------- /vendor/plugins/i18n_label/tasks/i18n_label_tasks.rake: -------------------------------------------------------------------------------- 1 | # desc "Explaining what the task does" 2 | # task :i18n_label do 3 | # # Task goes here 4 | # end 5 | -------------------------------------------------------------------------------- /public/images/arrow_small_right_green_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camelpunch/simply_agile/HEAD/public/images/arrow_small_right_green_background.png -------------------------------------------------------------------------------- /public/images/arrow_small_right_grey_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camelpunch/simply_agile/HEAD/public/images/arrow_small_right_grey_background.png -------------------------------------------------------------------------------- /script/performance/benchmarker: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/benchmarker' 4 | -------------------------------------------------------------------------------- /app/views/agile_terminology/organisation.html.erb: -------------------------------------------------------------------------------- 1 |Find me in app/views/agile_terminology/organisation.html.erb
3 | -------------------------------------------------------------------------------- /public/images/arrow_small_right_orange_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camelpunch/simply_agile/HEAD/public/images/arrow_small_right_orange_background.png -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/lib/error.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | class ActiveMerchantError < StandardError #:nodoc: 3 | end 4 | end -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/plugin: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/plugin' 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/runner: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/runner' 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/server' 4 | -------------------------------------------------------------------------------- /vendor/plugins/objectmother/tasks/object_mother_tasks.rake: -------------------------------------------------------------------------------- 1 | # desc "Explaining what the task does" 2 | # task :object_mother do 3 | # # Task goes here 4 | # end 5 | -------------------------------------------------------------------------------- /public/images/a_simple_tool_for_effective_agile_teams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camelpunch/simply_agile/HEAD/public/images/a_simple_tool_for_effective_agile_teams.png -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/console' 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/destroy: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/destroy' 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/generate: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/generate' 4 | -------------------------------------------------------------------------------- /vendor/plugins/no-peeping-toms/spec/db/database.yml: -------------------------------------------------------------------------------- 1 | sqlite3: 2 | :adapter: sqlite3 3 | :dbfile: vendor/plugins/no_peeping_toms/spec/db/no_peeping_toms.sqlite3.db 4 | -------------------------------------------------------------------------------- /vendor/plugins/no-peeping-toms/tasks/no_peeping_toms_tasks.rake: -------------------------------------------------------------------------------- 1 | # desc "Explaining what the task does" 2 | # task :no_peeping_toms do 3 | # # Task goes here 4 | # end 5 | -------------------------------------------------------------------------------- /script/about: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | $LOAD_PATH.unshift "#{RAILTIES_PATH}/builtin/rails_info" 4 | require 'commands/about' -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/dbconsole: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | require 'commands/dbconsole' 4 | -------------------------------------------------------------------------------- /app/controllers/public_controller.rb: -------------------------------------------------------------------------------- 1 | class PublicController < ApplicationController 2 | skip_before_filter :login_required 3 | skip_before_filter :select_organisation 4 | end 5 | -------------------------------------------------------------------------------- /vendor/plugins/assert_valid_xhtml/tasks/assert_valid_xhtml_tasks.rake: -------------------------------------------------------------------------------- 1 | # desc "Explaining what the task does" 2 | # task :assert_valid_xhtml do 3 | # # Task goes here 4 | # end 5 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/spec/models/user_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe User do 4 | 5 | end 6 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/stories/all.rb: -------------------------------------------------------------------------------- 1 | dir = File.dirname(__FILE__) 2 | Dir[File.expand_path("#{dir}/**/*.rb")].uniq.each do |file| 3 | require file 4 | end -------------------------------------------------------------------------------- /vendor/plugins/exception_notification/init.rb: -------------------------------------------------------------------------------- 1 | require "action_mailer" 2 | require "exception_notifier" 3 | require "exception_notifiable" 4 | require "exception_notifier_helper" 5 | -------------------------------------------------------------------------------- /vendor/plugins/exception_notification/views/exception_notifier/_title.rhtml: -------------------------------------------------------------------------------- 1 | ------------------------------- 2 | <%= title.to_s.humanize %>: 3 | ------------------------------- 4 | -------------------------------------------------------------------------------- /app/controllers/sitemaps_controller.rb: -------------------------------------------------------------------------------- 1 | class SitemapsController < ApplicationController 2 | skip_before_filter :login_required 3 | skip_before_filter :select_organisation 4 | end 5 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/gateways.rb: -------------------------------------------------------------------------------- 1 | require 'active_merchant/billing/gateway' 2 | 3 | Dir[File.dirname(__FILE__) + '/gateways/*.rb'].each{|g| require g} -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/app/views/user_mailer/signup.erb: -------------------------------------------------------------------------------- 1 | Hello <%= @name %>! 2 | 3 | <%= link_to "Click here to confirm your account!", confirm_account_url %> 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/process/reaper: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/process/reaper' 4 | -------------------------------------------------------------------------------- /vendor/plugins/country_select/install.rb: -------------------------------------------------------------------------------- 1 | # Install hook code here 2 | puts "The list of countries provided by this plugin may offend some users. Please review it carefully before you use it" -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/process/inspector: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/process/inspector' 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/process/spawner: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/process/spawner' 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | require 'rubygems' 2 | require 'actionmailer' 3 | require 'spec' 4 | require File.expand_path(File.dirname(__FILE__) + '/../lib/email_spec.rb') 5 | -------------------------------------------------------------------------------- /app/models/payment_plan.rb: -------------------------------------------------------------------------------- 1 | class PaymentPlan < ActiveRecord::Base 2 | default_scope :order => 'price' 3 | 4 | def total 5 | price * (1 + Invoice::VAT_RATE / 100.0) 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /spec/object_mother/burndown_data_points.rb: -------------------------------------------------------------------------------- 1 | class BurndownDataPoints < ObjectMother 2 | def self.burndown_data_point_prototype 3 | { 4 | :story_points => 1 5 | } 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/public/images/rails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camelpunch/simply_agile/HEAD/vendor/plugins/email-spec/examples/rails_root/public/images/rails.png -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/performance/request: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/request' 4 | -------------------------------------------------------------------------------- /vendor/plugins/no-peeping-toms/spec/db/schema.rb: -------------------------------------------------------------------------------- 1 | ActiveRecord::Schema.define(:version => 0) do 2 | create_table :people, :force => true do |t| 3 | t.column :name, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/performance/profiler: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/profiler' 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/spec/model_factory.rb: -------------------------------------------------------------------------------- 1 | require 'fixjour' 2 | 3 | Fixjour do 4 | define_builder(User, :name => "Jojo Binks", :email => "jojo@thebinks.com") 5 | end 6 | 7 | -------------------------------------------------------------------------------- /Capfile: -------------------------------------------------------------------------------- 1 | load 'deploy' if respond_to?(:namespace) # cap2 differentiator 2 | Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) } 3 | load 'config/deploy' 4 | default_run_options[:pty] = true 5 | -------------------------------------------------------------------------------- /app/models/user_observer.rb: -------------------------------------------------------------------------------- 1 | class UserObserver < ActiveRecord::Observer 2 | def after_create(user) 3 | unless user.verified? 4 | UserMailer.deliver_verification(user) 5 | end 6 | end 7 | end -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | # Methods added to this helper will be available to all templates in the application. 2 | module ApplicationHelper 3 | end 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/performance/benchmarker: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../../config/boot' 3 | require 'commands/performance/benchmarker' 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/stories/helper.rb: -------------------------------------------------------------------------------- 1 | ENV["RAILS_ENV"] = "test" 2 | require File.expand_path(File.dirname(__FILE__) + "/../config/environment") 3 | require 'spec/rails/story_adapter' -------------------------------------------------------------------------------- /vendor/plugins/objectmother/spec/prototypes/user_mother.rb: -------------------------------------------------------------------------------- 1 | class UserMother < ObjectMother 2 | def self.user_prototype 3 | { 4 | :name => 'some_user', 5 | :pet => false 6 | } 7 | end 8 | end -------------------------------------------------------------------------------- /config/deploy/production.rb: -------------------------------------------------------------------------------- 1 | set :deploy_to, "/rails/besimplyagile.com" 2 | set :branch, 'production' 3 | 4 | set :domain, "www.jandaweb.com" 5 | server domain, :app, :web 6 | role :db, domain, :primary => true 7 | -------------------------------------------------------------------------------- /spec/fixtures/story_actions.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | user_id: 1 5 | story_id: 1 6 | 7 | two: 8 | user_id: 1 9 | story_id: 1 10 | -------------------------------------------------------------------------------- /spec/fixtures/story_team_members.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | user_id: 1 5 | story_id: 1 6 | 7 | two: 8 | user_id: 1 9 | story_id: 1 10 | -------------------------------------------------------------------------------- /spec/object_mother/payments.rb: -------------------------------------------------------------------------------- 1 | class Payments < ObjectMother 2 | truncate_payment 3 | def self.payment_prototype 4 | { 5 | :organisation => Organisations.create_organisation! 6 | } 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/about: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.dirname(__FILE__) + '/../config/boot' 3 | $LOAD_PATH.unshift "#{RAILTIES_PATH}/builtin/rails_info" 4 | require 'commands/about' -------------------------------------------------------------------------------- /app/controllers/privacy_policies_controller.rb: -------------------------------------------------------------------------------- 1 | class PrivacyPoliciesController < ApplicationController 2 | skip_before_filter :login_required 3 | skip_before_filter :select_organisation 4 | layout 'landing' 5 | end 6 | -------------------------------------------------------------------------------- /app/controllers/agile_terminology_controller.rb: -------------------------------------------------------------------------------- 1 | class AgileTerminologyController < ApplicationController 2 | skip_before_filter :login_required 3 | skip_before_filter :select_organisation 4 | 5 | layout 'landing' 6 | end 7 | -------------------------------------------------------------------------------- /config/deploy/development.rb: -------------------------------------------------------------------------------- 1 | set :deploy_to, "/rails/simply-agile.dev.jandaweb.com" 2 | 3 | set :rails_env, 'development' 4 | set :domain, "dev.jandaweb.com" 5 | server domain, :app, :web 6 | role :db, domain, :primary => true 7 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/init.rb: -------------------------------------------------------------------------------- 1 | require 'active_merchant' 2 | require 'active_merchant/billing/integrations/action_view_helper' 3 | ActionView::Base.send(:include, ActiveMerchant::Billing::Integrations::ActionViewHelper) 4 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/Rakefile: -------------------------------------------------------------------------------- 1 | require(File.join(File.dirname(__FILE__), 'config', 'boot')) 2 | 3 | require 'rake' 4 | require 'rake/testtask' 5 | require 'rake/rdoctask' 6 | 7 | require 'tasks/rails' 8 | -------------------------------------------------------------------------------- /app/views/stories/_form.erb: -------------------------------------------------------------------------------- 1 |2 | <%= form.label :name %> 3 | <%= form.text_field :name, :class => 'auto_focus' %> 4 |
5 |6 | <%= form.label :content %> 7 | <%= form.text_area :content, :rows => 5, :cols => 28 %> 8 |
9 | -------------------------------------------------------------------------------- /doc/README_FOR_APP: -------------------------------------------------------------------------------- 1 | Use this README file to introduce your application and point to useful places in the API for learning more. 2 | Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries. 3 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/public/javascripts/application.js: -------------------------------------------------------------------------------- 1 | // Place your application-specific JavaScript functions and classes here 2 | // This file is automatically included by javascript_include_tag :defaults 3 | -------------------------------------------------------------------------------- /spec/fixtures/organisation_memberships.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | user_id: 1 5 | organisation_id: 1 6 | 7 | two: 8 | user_id: 1 9 | organisation_id: 1 10 | -------------------------------------------------------------------------------- /vendor/plugins/assert_valid_xhtml/init.rb: -------------------------------------------------------------------------------- 1 | require 'active_support/test_case' 2 | require 'xml/libxml' 3 | require 'md5' 4 | require 'assert_valid_xhtml' 5 | ActiveSupport::TestCase.class_eval do 6 | include AssertValidXhtmlInstance 7 | end 8 | 9 | -------------------------------------------------------------------------------- /vendor/plugins/exception_notification/test/test_helper.rb: -------------------------------------------------------------------------------- 1 | require 'test/unit' 2 | require 'rubygems' 3 | require 'active_support' 4 | 5 | $:.unshift File.join(File.dirname(__FILE__), '../lib') 6 | 7 | RAILS_ROOT = '.' unless defined?(RAILS_ROOT) 8 | -------------------------------------------------------------------------------- /spec/object_mother/story_team_members.rb: -------------------------------------------------------------------------------- 1 | class StoryTeamMembers < ObjectMother 2 | truncate_story_team_member 3 | 4 | def self.story_team_member_prototype 5 | { 6 | :user => Users.create_user, 7 | } 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /app/views/story_team_members/_story_team_member.erb: -------------------------------------------------------------------------------- 1 |3 | <%= form.label :name %> 4 | <%= form.text_field :name, :class => 'auto_focus' %> 5 |
6 |7 | <%= form.label :description %> 8 | <%= form.text_area :description, :rows => 3, :cols => 28 %> 9 |
10 | -------------------------------------------------------------------------------- /lib/token_generation.rb: -------------------------------------------------------------------------------- 1 | module TokenGeneration 2 | TOKEN_LENGTH = 6 3 | 4 | def generate_token 5 | chars = 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ23456789' 6 | token = '' 7 | TOKEN_LENGTH.times { token << chars[rand(chars.length)] } 8 | token 9 | end 10 | end -------------------------------------------------------------------------------- /app/models/burndown_data_point.rb: -------------------------------------------------------------------------------- 1 | class BurndownDataPoint < ActiveRecord::Base 2 | belongs_to :iteration 3 | 4 | named_scope :for_iteration, lambda { |iteration| 5 | { 6 | :conditions => { :iteration_id => iteration.id }, 7 | :order => 'date' 8 | } 9 | } 10 | end 11 | -------------------------------------------------------------------------------- /config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | # Mime::Type.register_alias "text/html", :iphone 6 | Mime::Type.register "text/plain", :feature 7 | -------------------------------------------------------------------------------- /spec/views/stories/new_guidance.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/stories/new_guidance" do 4 | before(:each) do 5 | render 'stories/new_guidance' 6 | end 7 | 8 | it_should_behave_like "guidance" 9 | end 10 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/utils_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class UtilsTest < Test::Unit::TestCase 4 | def test_unique_id_should_be_32_chars_and_alphanumeric 5 | assert_match /^\w{32}$/, ActiveMerchant::Utils.generate_unique_id 6 | end 7 | end -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | # Mime::Type.register_alias "text/html", :iphone 6 | -------------------------------------------------------------------------------- /db/migrate/20090401132534_add_suspended_to_organisations.rb: -------------------------------------------------------------------------------- 1 | class AddSuspendedToOrganisations < ActiveRecord::Migration 2 | def self.up 3 | add_column :organisations, :suspended, :boolean 4 | end 5 | 6 | def self.down 7 | remove_column :organisations, :suspended 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /vendor/plugins/no-peeping-toms/init.rb: -------------------------------------------------------------------------------- 1 | if "test" == RAILS_ENV 2 | 3 | ActiveRecord::Base.class_eval do 4 | class << self 5 | alias_method :old_add_observer, :add_observer 6 | def add_observer(o); end 7 | end 8 | 9 | extend NoPeepingToms 10 | end 11 | 12 | end 13 | -------------------------------------------------------------------------------- /app/views/projects/new.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, 'New Project' %> 2 | <% content_for :h1, 'New Project' %> 3 | <% breadcrumbs 'New Project' %> 4 | <% form_for @project do |form| %> 5 | <%= render form %> 6 |7 | <%= form.submit 'Create Project' %> 8 |
9 | <% end %> 10 | -------------------------------------------------------------------------------- /db/migrate/20090402111030_add_has_failed_to_payment_method.rb: -------------------------------------------------------------------------------- 1 | class AddHasFailedToPaymentMethod < ActiveRecord::Migration 2 | def self.up 3 | add_column :payment_methods, :has_failed, :boolean 4 | end 5 | 6 | def self.down 7 | remove_column :payment_methods, :has_failed 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090406212619_add_last_four_digits_to_invoices.rb: -------------------------------------------------------------------------------- 1 | class AddLastFourDigitsToInvoices < ActiveRecord::Migration 2 | def self.up 3 | add_column :invoices, :last_four_digits, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :invoices, :last_four_digits 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090311112021_add_initial_estimate_to_iteration.rb: -------------------------------------------------------------------------------- 1 | class AddInitialEstimateToIteration < ActiveRecord::Migration 2 | def self.up 3 | add_column :iterations, :initial_estimate, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :iterations, :initial_estimate 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090318171027_add_acknowledgement_token_to_users.rb: -------------------------------------------------------------------------------- 1 | class AddAcknowledgementTokenToUsers < ActiveRecord::Migration 2 | def self.up 3 | add_column :users, :acknowledgement_token, :string 4 | end 5 | 6 | def self.down 7 | remove_column :users, :acknowledgement_token 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/fixtures/captures.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | payment_id: 1 5 | status: MyString 6 | status_detail: MyString 7 | amount: 1 8 | 9 | two: 10 | payment_id: 1 11 | status: MyString 12 | status_detail: MyString 13 | amount: 1 14 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/doc/README_FOR_APP: -------------------------------------------------------------------------------- 1 | To build the guides: 2 | 3 | * Install source-highlighter (http://www.gnu.org/software/src-highlite/source-highlight.html) 4 | * Install the mizuho gem (http://github.com/FooBarWidget/mizuho/tree/master) 5 | * Run `rake guides` from the railties directory -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/spec: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../vendor/plugins/rspec/lib")) 3 | require 'rubygems' 4 | require 'spec' 5 | exit ::Spec::Runner::CommandLine.run(::Spec::Runner::OptionParser.parse(ARGV, STDERR, STDOUT)) 6 | -------------------------------------------------------------------------------- /app/models/acceptance_criterion_observer.rb: -------------------------------------------------------------------------------- 1 | class AcceptanceCriterionObserver < ActiveRecord::Observer 2 | def after_save(acceptance_criterion) 3 | acceptance_criterion.story.current_user = acceptance_criterion.current_user 4 | acceptance_criterion.story.update_status_from_acceptance_criteria 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /app/models/billing_address.rb: -------------------------------------------------------------------------------- 1 | class BillingAddress < ActiveRecord::Base 2 | validates_presence_of(:name, 3 | :address_line_1, 4 | :town, 5 | :postcode, 6 | :country, 7 | :telephone_number) 8 | end 9 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/db/migrate/20090125013728_create_users.rb: -------------------------------------------------------------------------------- 1 | class CreateUsers < ActiveRecord::Migration 2 | def self.up 3 | create_table :users do |t| 4 | t.string :email, :name 5 | end 6 | end 7 | 8 | def self.down 9 | drop_table :users 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /README.markdown: -------------------------------------------------------------------------------- 1 | # Simply Agile 2 | 3 | Now that [Jandaweb](http://www.jandaweb.com/) is winding down, we decided to 4 | release the source to the project we intended to make us rich. 5 | 6 | NB: I modified the git history a bit to remove database.yml and some other 7 | config, not that you could have done much with it. 8 | 9 | -------------------------------------------------------------------------------- /db/migrate/20090303161221_create_organisations.rb: -------------------------------------------------------------------------------- 1 | class CreateOrganisations < ActiveRecord::Migration 2 | def self.up 3 | create_table :organisations do |t| 4 | t.string :name 5 | 6 | t.timestamps 7 | end 8 | end 9 | 10 | def self.down 11 | drop_table :organisations 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /db/migrate/20090330205513_add_payment_plan_id_to_organisations.rb: -------------------------------------------------------------------------------- 1 | class AddPaymentPlanIdToOrganisations < ActiveRecord::Migration 2 | def self.up 3 | add_column :organisations, :payment_plan_id, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :organisations, :payment_plan_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/views/users/show.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/users/show" do 4 | before(:each) do 5 | assigns[:current_user] = mock_model(User) 6 | render 'users/show' 7 | end 8 | 9 | it_should_behave_like "a standard view" 10 | end 11 | -------------------------------------------------------------------------------- /vendor/plugins/validates_email_format_of/test/schema.rb: -------------------------------------------------------------------------------- 1 | ActiveRecord::Schema.define(:version => 0) do 2 | create_table :people, :force => true do |t| 3 | t.column "email", :string 4 | end 5 | 6 | create_table :mx_records, :force => true do |t| 7 | t.column "email", :string 8 | end 9 | 10 | end -------------------------------------------------------------------------------- /app/controllers/keyboard_shortcuts_controller.rb: -------------------------------------------------------------------------------- 1 | class KeyboardShortcutsController < ApplicationController 2 | skip_before_filter :login_required 3 | skip_before_filter :select_organisation 4 | 5 | def index 6 | unless session[:user_id] 7 | render :layout => 'landing' 8 | end 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20090325134154_add_sponsor_id_to_organisation_member.rb: -------------------------------------------------------------------------------- 1 | class AddSponsorIdToOrganisationMember < ActiveRecord::Migration 2 | def self.up 3 | add_column :organisation_members, :sponsor_id, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :organisation_members, :sponsor_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/views/users/new.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/users/new" do 4 | before(:each) do 5 | @user = User.new 6 | assigns[:user] = @user 7 | render 'users/new' 8 | end 9 | 10 | it_should_behave_like "a standard view" 11 | end 12 | -------------------------------------------------------------------------------- /public/stylesheets/iteration_planning/typography.css: -------------------------------------------------------------------------------- 1 | body.iteration_planning .include a { text-indent:-20000px; outline:none; 2 | text-underline:none } 3 | body.iteration_planning .display h3 { font-weight:bold } 4 | body.iteration_planning .javascript #stories span.estimate { text-align:center } 5 | -------------------------------------------------------------------------------- /spec/views/agile_terminology/user_stories.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/agile_terminology/user_stories" do 4 | before(:each) do 5 | render 'agile_terminology/user_stories' 6 | end 7 | 8 | it_should_behave_like "a standard view" 9 | end 10 | -------------------------------------------------------------------------------- /spec/views/sitemaps/show.xml.builder_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/sitemaps/show" do 4 | before(:each) do 5 | render 'sitemaps/show.xml.builder' 6 | end 7 | 8 | it "should be successful" do 9 | response.should be_success 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/app/views/welcome/index.html.erb: -------------------------------------------------------------------------------- 1 | <% form_tag '/welcome/signup' do -%> 2 | 3 | <%= text_field_tag 'Name' %> 4 | 5 | <%= text_field_tag 'Email' %> 6 |7 | <%= form.submit 'Update Project' %> 8 |
9 | <% end %> 10 | -------------------------------------------------------------------------------- /db/migrate/20090402152648_remove_address_line3_from_billing_address.rb: -------------------------------------------------------------------------------- 1 | class RemoveAddressLine3FromBillingAddress < ActiveRecord::Migration 2 | def self.up 3 | remove_column(:billing_addresses, :address_line_3) 4 | end 5 | 6 | def self.down 7 | add_column(:billing_addresses, :address_line_3, :string) 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /public/stylesheets/iteration/colours.css: -------------------------------------------------------------------------------- 1 | /* iteration lists */ 2 | #content .iteration a img { border:2px solid #fff } 3 | #content .iteration a:hover img, 4 | #content .iteration a:focus img { border:2px solid #999 } 5 | #iterations .active { background:#e4e5f3 } 6 | #iterations .planned { background:#f1f1f8 } 7 | /* end iteration lists */ 8 | -------------------------------------------------------------------------------- /public/stylesheets/story/typography.css: -------------------------------------------------------------------------------- 1 | .story ol li { font-size:100%; margin:0 } 2 | .story h3, .story h4{ font-weight:bold } 3 | .story h3{ padding:4px } 4 | .story h4{ padding:6px 0 0 4px } 5 | #content .story p.estimate { margin:0; text-align:center; 6 | line-height:1.2em; font-weight:bold; font-size:100% } 7 | -------------------------------------------------------------------------------- /spec/controllers/keyboard_shortcuts_controller_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe KeyboardShortcutsController do 4 | 5 | describe "index" do 6 | it "should be successful" do 7 | get :index 8 | response.should be_success 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/integrations/returns/return_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../../test_helper' 2 | 3 | class ReturnTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::Integrations 5 | 6 | 7 | def test_return 8 | r = Return.new('') 9 | assert r.success? 10 | end 11 | end -------------------------------------------------------------------------------- /app/views/stories/new_guidance.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "New Story" %> 2 | <% content_for :h1, "New Story" %> 3 | <% breadcrumbs 'New Story' %> 4 | <% body_classes << 'guidance' %> 5 | 6 |7 | You don't have any projects. You should <%= link_to 'create a project', 8 | new_project_path %> before writing a story. 9 |
10 | -------------------------------------------------------------------------------- /db/migrate/20090303010437_create_projects.rb: -------------------------------------------------------------------------------- 1 | class CreateProjects < ActiveRecord::Migration 2 | def self.up 3 | create_table :projects do |t| 4 | t.string :name 5 | t.integer :organisation_id 6 | 7 | t.timestamps 8 | end 9 | end 10 | 11 | def self.down 12 | drop_table :projects 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /script/autospec: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['RSPEC'] = 'true' # allows autotest to discover rspec 3 | ENV['AUTOTEST'] = 'true' # allows autotest to run w/ color on linux 4 | system((RUBY_PLATFORM =~ /mswin|mingw/ ? 'autotest.bat' : 'autotest'), *ARGV) || 5 | $stderr.puts("Unable to find autotest. Please install ZenTest or fix your PATH") 6 | -------------------------------------------------------------------------------- /spec/views/invoices/index.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/invoices/index" do 4 | before(:each) do 5 | assigns[:invoices] = [Invoices.create_invoice!] 6 | render 'invoices/index' 7 | end 8 | 9 | it_should_behave_like "a standard view" 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/20090402160907_add_repeat_payment_token_to_payment_methods.rb: -------------------------------------------------------------------------------- 1 | class AddRepeatPaymentTokenToPaymentMethods < ActiveRecord::Migration 2 | def self.up 3 | add_column :payment_methods, :repeat_payment_token, :text 4 | end 5 | 6 | def self.down 7 | remove_column :payment_methods, :repeat_payment_token 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/object_mother/payment_plans.rb: -------------------------------------------------------------------------------- 1 | class PaymentPlans < ObjectMother 2 | truncate_payment_plan 3 | 4 | def self.payment_plan_prototype 5 | { 6 | :name => 'protototo', 7 | :price => 25, 8 | :project_limit => 2, 9 | :active_iteration_limit => 5, 10 | :user_limit => 5 11 | } 12 | end 13 | 14 | end 15 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/integrations/bogus/return.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | module Billing #:nodoc: 3 | module Integrations #:nodoc: 4 | module Bogus 5 | class Return < ActiveMerchant::Billing::Integrations::Return 6 | end 7 | end 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/integrations/nochex/return.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | module Billing #:nodoc: 3 | module Integrations #:nodoc: 4 | module Nochex 5 | class Return < ActiveMerchant::Billing::Integrations::Return 6 | end 7 | end 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/integrations/paypal/return.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | module Billing #:nodoc: 3 | module Integrations #:nodoc: 4 | module Paypal 5 | class Return < ActiveMerchant::Billing::Integrations::Return 6 | end 7 | end 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /app/views/shared/_footer.erb: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /spec/fixtures/payments.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | organisation_id: 1 5 | vpstxid: MyString 6 | security_key: MyString 7 | vendor_tx_code: MyString 8 | 9 | two: 10 | organisation_id: 1 11 | vpstxid: MyString 12 | security_key: MyString 13 | vendor_tx_code: MyString 14 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/integrations/chronopay/return.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | module Billing #:nodoc: 3 | module Integrations #:nodoc: 4 | module Chronopay 5 | class Return < ActiveMerchant::Billing::Integrations::Return 6 | end 7 | end 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/integrations/gestpay/return.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | module Billing #:nodoc: 3 | module Integrations #:nodoc: 4 | module Gestpay 5 | class Return < ActiveMerchant::Billing::Integrations::Return 6 | end 7 | end 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/integrations/returns/nochex_return_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../../test_helper' 2 | 3 | class NochexReturnTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::Integrations 5 | 6 | def test_return 7 | r = Nochex::Return.new('') 8 | assert r.success? 9 | end 10 | end -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/integrations/returns/paypal_return_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../../test_helper' 2 | 3 | class PaypalReturnTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::Integrations 5 | 6 | def test_return 7 | r = Paypal::Return.new('') 8 | assert r.success? 9 | end 10 | end -------------------------------------------------------------------------------- /vendor/plugins/i18n_label/spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | begin 2 | require File.dirname(__FILE__) + '/../../../../spec/spec_helper' 3 | rescue LoadError 4 | puts "You need to install rspec in your base app" 5 | exit 6 | end 7 | 8 | plugin_spec_dir = File.dirname(__FILE__) 9 | ActiveRecord::Base.logger = Logger.new(plugin_spec_dir + "/debug.log") 10 | 11 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require(File.join(File.dirname(__FILE__), 'config', 'boot')) 5 | 6 | require 'rake' 7 | require 'rake/testtask' 8 | require 'rake/rdoctask' 9 | 10 | require 'tasks/rails' 11 | -------------------------------------------------------------------------------- /app/views/stories/_estimating_story.erb: -------------------------------------------------------------------------------- 1 |11 | You are not paying for any organisation's usage. 12 |
13 | -------------------------------------------------------------------------------- /db/migrate/20090330205043_create_payment_plans.rb: -------------------------------------------------------------------------------- 1 | class CreatePaymentPlans < ActiveRecord::Migration 2 | def self.up 3 | create_table :payment_plans do |t| 4 | t.string :name 5 | t.text :description 6 | t.decimal :price 7 | 8 | t.timestamps 9 | end 10 | end 11 | 12 | def self.down 13 | drop_table :payment_plans 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /db/migrate/20090310175005_create_burndown_data_points.rb: -------------------------------------------------------------------------------- 1 | class CreateBurndownDataPoints < ActiveRecord::Migration 2 | def self.up 3 | create_table :burndown_data_points do |t| 4 | t.integer :iteration_id 5 | t.integer :story_points 6 | t.date :date 7 | end 8 | end 9 | 10 | def self.down 11 | drop_table :burndown_data_points 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /spec/views/invoices/show.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/invoices/show" do 4 | before(:each) do 5 | assigns[:current_user] = Users.create_user! 6 | assigns[:invoice] = Invoices.create_invoice! 7 | render 'invoices/show' 8 | end 9 | 10 | it_should_behave_like "a standard view" 11 | end 12 | -------------------------------------------------------------------------------- /spec/views/iterations/show_active.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/iterations/new" do 4 | before :each do 5 | @iteration = Iterations.active_iteration 6 | assigns[:iteration] = @iteration 7 | render 'iterations/show_active' 8 | end 9 | 10 | it_should_behave_like "a standard view" 11 | end 12 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/script/autospec: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['RSPEC'] = 'true' # allows autotest to discover rspec 3 | ENV['AUTOTEST'] = 'true' # allows autotest to run w/ color on linux 4 | system((RUBY_PLATFORM =~ /mswin|mingw/ ? 'autotest.bat' : 'autotest'), *ARGV) || 5 | $stderr.puts("Unable to find autotest. Please install ZenTest or fix your PATH") 6 | -------------------------------------------------------------------------------- /db/migrate/20090304004418_create_stories.rb: -------------------------------------------------------------------------------- 1 | class CreateStories < ActiveRecord::Migration 2 | def self.up 3 | create_table :stories do |t| 4 | t.integer :project_id 5 | t.integer :iteration_id 6 | t.string :name 7 | t.text :content 8 | 9 | t.timestamps 10 | end 11 | end 12 | 13 | def self.down 14 | drop_table :stories 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /db/migrate/20090323131037_create_organisation_members.rb: -------------------------------------------------------------------------------- 1 | class CreateOrganisationMembers < ActiveRecord::Migration 2 | def self.up 3 | create_table :organisation_members do |t| 4 | t.integer :user_id 5 | t.integer :organisation_id 6 | 7 | t.timestamps 8 | end 9 | end 10 | 11 | def self.down 12 | drop_table :organisation_members 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /db/migrate/20090327110522_create_story_actions.rb: -------------------------------------------------------------------------------- 1 | class CreateStoryActions < ActiveRecord::Migration 2 | def self.up 3 | create_table :story_actions do |t| 4 | t.integer :user_id 5 | t.integer :story_id 6 | t.integer :iteration_id 7 | 8 | t.timestamps 9 | end 10 | end 11 | 12 | def self.down 13 | drop_table :story_actions 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /spec/object_mother/billing_addresses.rb: -------------------------------------------------------------------------------- 1 | class BillingAddresses < ObjectMother 2 | truncate_billing_address 3 | def self.billing_address_prototype 4 | { 5 | :name => 'asdf', 6 | :telephone_number => '123123', 7 | :country => 'asdf', 8 | :postcode => 'se22 8gb', 9 | :address_line_1 => 'asdf', 10 | :town => 'asdf', 11 | } 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/app/models/user_mailer.rb: -------------------------------------------------------------------------------- 1 | class UserMailer < ActionMailer::Base 2 | default_url_options[:host] = '' 3 | 4 | def signup(email, name) 5 | @recipients = email 6 | @from = "admin@example.com" 7 | @subject = "Account confirmation" 8 | @sent_on = Time.now 9 | @body[:name] = name 10 | end 11 | 12 | end 13 | -------------------------------------------------------------------------------- /vendor/plugins/exception_notification/views/exception_notifier/_environment.rhtml: -------------------------------------------------------------------------------- 1 | <% max = @request.env.keys.max { |a,b| a.length <=> b.length } -%> 2 | <% @request.env.keys.sort.each do |key| -%> 3 | * <%= "%-*s: %s" % [max.length, key, filter_sensitive_post_data_from_env(key, @request.env[key].to_s.strip)] %> 4 | <% end -%> 5 | 6 | * Process: <%= $$ %> 7 | * Server : <%= `hostname -s`.chomp %> 8 | -------------------------------------------------------------------------------- /app/controllers/invoices_controller.rb: -------------------------------------------------------------------------------- 1 | class InvoicesController < ApplicationController 2 | before_filter :get_invoice, :only => :show 3 | skip_before_filter :select_organisation 4 | 5 | def index 6 | @invoices = @current_user.invoices 7 | end 8 | 9 | protected 10 | 11 | def get_invoice 12 | @invoice = @current_user.invoices.find params[:id] 13 | end 14 | 15 | end 16 | -------------------------------------------------------------------------------- /app/views/payment_methods/index.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, 'Payments' %> 2 | <% content_for :h1, "Payments" %> 3 | <% breadcrumbs( 4 | link_to_unless_current('Account', @current_user), 5 | 'Payments', 6 | :organisation_page => false 7 | ) %> 8 | 9 |10 | You are paying for the following organisations. 11 |
12 | 13 |2 | <%= label_tag "priorities_#{prioritising_story.id}", 'Priority' %> 3 | <%= text_field_tag("project[priorities[#{prioritising_story.id}]]", 4 | prioritising_story.priority, 5 | :id => "priorities_#{prioritising_story.id}", 6 | :class => 'numeric', 7 | :size => 2) %> 8 |
9 | -------------------------------------------------------------------------------- /spec/object_mother/payment_methods.rb: -------------------------------------------------------------------------------- 1 | class PaymentMethods < ObjectMother 2 | def self.payment_method_prototype 3 | { 4 | :cardholder_name => 'Joe Bloggs', 5 | :number => '4929000000006', 6 | :month => 1.month.from_now.month, 7 | :year => 1.month.from_now.year, 8 | :verification_value => 123, 9 | :card_type => 'visa' 10 | } 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /app/models/invoice_observer.rb: -------------------------------------------------------------------------------- 1 | class InvoiceObserver < ActiveRecord::Observer 2 | def before_validation_on_create(invoice) 3 | return true unless invoice.amount? 4 | invoice.vat_rate = Invoice::VAT_RATE 5 | invoice.vat_amount = (invoice.amount * Invoice::VAT_RATE) / 100.0 6 | end 7 | 8 | def after_create(invoice) 9 | UserMailer.deliver_invoice(invoice) 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /app/models/organisation_observer.rb: -------------------------------------------------------------------------------- 1 | class OrganisationObserver < ActiveRecord::Observer 2 | 3 | def before_create(organisation) 4 | today = Date.today 5 | 6 | organisation.next_payment_date = 7 | if today.day > 28 8 | then Date.new(today.year, today.month + 2, 1) 9 | else Date.new(today.year, today.month + 1, today.day) 10 | end 11 | end 12 | 13 | end 14 | -------------------------------------------------------------------------------- /app/views/stories/_project_select.erb: -------------------------------------------------------------------------------- 1 |2 | <%= label_tag :project_id %> 3 | <%= select_tag(:project_id, 4 | options_from_collection_for_select(@current_organisation.projects, 5 | :id, 6 | :to_s, 7 | params[:project_id].to_i)) %> 8 |
9 | -------------------------------------------------------------------------------- /db/migrate/20090402091521_create_captures.rb: -------------------------------------------------------------------------------- 1 | class CreateCaptures < ActiveRecord::Migration 2 | def self.up 3 | create_table :captures do |t| 4 | t.integer :payment_id 5 | t.string :status 6 | t.string :status_detail 7 | t.integer :amount 8 | 9 | t.timestamps 10 | end 11 | end 12 | 13 | def self.down 14 | drop_table :captures 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /app/views/stories/new_without_project.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "New Story" %> 2 | <% content_for :h1, "New Story" %> 3 | <% breadcrumbs 'New Story' %> 4 | <% form_for @story do |form| %> 5 | <%= form.error_messages %> 6 | <%= render :partial => 'stories/project_select' %> 7 | <%= render form %> 8 |9 | <%= form.submit 'Create Story' %> 10 |
11 | <% end %> 12 | -------------------------------------------------------------------------------- /spec/controllers/sitemaps_controller_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe SitemapsController do 4 | 5 | describe "show" do 6 | it "should be successful" do 7 | session[:user_id] = nil 8 | session[:organisation_id] = nil 9 | get :show, :format => :xml 10 | response.should be_success 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /app/views/stories/index.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "#{@project} Stories" %> 2 | <% content_for :h1, h("#{@project} Stories") %> 3 | <% breadcrumbs link_to(h(@project), @project), 'Stories' %> 4 | 5 | <% unless @project.stories.empty? %> 6 |8 | You don't have a backlog! You might want to write a 9 | <%= link_to 'new story', new_project_story_path(@project) %>. 10 |
11 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/generators/integration/templates/module_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../test_helper' 2 | 3 | class <%= class_name %>ModuleTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::Integrations 5 | 6 | def test_notification_method 7 | assert_instance_of <%= class_name %>::Notification, <%= class_name %>.notification('name=cody') 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/views/iterations/_new.erb: -------------------------------------------------------------------------------- 1 | <% form_tag new_iteration_path, :method => :get do -%> 2 |3 | <%= label_tag :project_id, "Plan an iteration for" %> 4 | <%= select_tag :project_id, 5 | options_from_collection_for_select(@current_organisation.projects, 6 | :id, 7 | :name) %> 8 | <%= submit_tag "Go" %> 9 |
10 | <% end -%> 11 | -------------------------------------------------------------------------------- /db/migrate/20090312123836_remove_started_on_and_finished_on_from_iteration.rb: -------------------------------------------------------------------------------- 1 | class RemoveStartedOnAndFinishedOnFromIteration < ActiveRecord::Migration 2 | def self.up 3 | remove_column :iterations, :started_on 4 | remove_column :iterations, :finished_on 5 | end 6 | 7 | def self.down 8 | add_column :iterations, :started_on, :date 9 | add_column :iterations, :finished_on, :date 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20090318093902_create_organisation_sponsors.rb: -------------------------------------------------------------------------------- 1 | class CreateOrganisationSponsors < ActiveRecord::Migration 2 | def self.up 3 | create_table :organisation_sponsors do |t| 4 | t.integer :user_id 5 | t.integer :sponsor_id 6 | t.integer :organisation_id 7 | 8 | t.timestamps 9 | end 10 | end 11 | 12 | def self.down 13 | drop_table :organisation_sponsors 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /db/migrate/20090325141402_delete_organisation_sponsors.rb: -------------------------------------------------------------------------------- 1 | class DeleteOrganisationSponsors < ActiveRecord::Migration 2 | def self.up 3 | drop_table :organisation_sponsors 4 | end 5 | 6 | def self.down 7 | create_table :organisation_sponsors do |t| 8 | t.integer :user_id 9 | t.integer :sponsor_id 10 | t.integer :organisation_id 11 | 12 | t.timestamps 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /app/views/stories/new_with_project.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "New Story" %> 2 | <% content_for :h1, "New Story" %> 3 | <% breadcrumbs link_to(h(@project), @project), 'New Story' %> 4 | <% form_for @story do |form| %> 5 | <%= form.error_messages %> 6 | <%= render :partial => 'stories/project_select' %> 7 | <%= render form %> 8 |9 | <%= form.submit 'Create Story' %> 10 |
11 | <% end %> 12 | -------------------------------------------------------------------------------- /app/views/users/show.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "Account" %> 2 | <% content_for :h1, "Account" %> 3 | <% breadcrumbs( 4 | link_to_unless_current('Account', @current_user), 5 | :organisation_page => false 6 | ) %> 7 | 8 |9 | <%= link_to 'Invoices', :invoices %> 10 |
11 | 12 |13 | <%= link_to 'Organisations', :organisations %> 14 |
15 | 16 |17 | <%= link_to 'Payments', :payment_methods %> 18 |
19 | -------------------------------------------------------------------------------- /db/migrate/20090303213012_create_iterations.rb: -------------------------------------------------------------------------------- 1 | class CreateIterations < ActiveRecord::Migration 2 | def self.up 3 | create_table :iterations do |t| 4 | t.integer :project_id 5 | t.string :name 6 | t.integer :duration 7 | t.date :started_on 8 | t.date :finished_on 9 | 10 | t.timestamps 11 | end 12 | end 13 | 14 | def self.down 15 | drop_table :iterations 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /public/stylesheets/iteration_active/typography.css: -------------------------------------------------------------------------------- 1 | body.iteration_active .javascript #stories .guidance p { max-width:none } 2 | body.iteration_active .javascript #stories .guidance, 3 | body.iteration_active .javascript #burndown, 4 | body.iteration_active .javascript #headings ol li { text-align:center } 5 | body.iteration_active h1 { margin-bottom:0 } 6 | body.iteration_active #content .story li { font-size:93%; padding:2px 5px 1px } 7 | -------------------------------------------------------------------------------- /spec/helpers/home_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe HomeHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(HomeHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /app/helpers/stories_helper.rb: -------------------------------------------------------------------------------- 1 | module StoriesHelper 2 | 3 | def story_classes(story) 4 | "story #{story.status} #{story.team_members.empty? ? '' : 'with_team'}" 5 | end 6 | 7 | def story_breadcrumbs(story) 8 | crumbs = [ link_to(h(@project), @project) ] 9 | 10 | if @story.iteration_id? 11 | crumbs << link_to(@story.iteration, [@project, @story.iteration]) 12 | end 13 | 14 | crumbs 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /db/migrate/20090401164134_add_payment_dates_to_organisations.rb: -------------------------------------------------------------------------------- 1 | class AddPaymentDatesToOrganisations < ActiveRecord::Migration 2 | def self.up 3 | add_column :organisations, :first_payment_date, :date 4 | add_column :organisations, :next_payment_date, :date 5 | end 6 | 7 | def self.down 8 | remove_column :organisations, :next_payment_date 9 | remove_column :organisations, :first_payment_date 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/public_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe PublicHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(PublicHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/users_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe UsersHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(UsersHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/stories_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe StoriesHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(StoriesHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /vendor/plugins/no-peeping-toms/spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../../../spec/spec_helper' 2 | 3 | plugin_spec_dir = File.dirname(__FILE__) 4 | ActiveRecord::Base.logger = Logger.new(plugin_spec_dir + "/debug.log") 5 | 6 | databases = YAML::load(IO.read(plugin_spec_dir + "/db/database.yml")) 7 | ActiveRecord::Base.establish_connection(databases[ENV["DB"] || "sqlite3"]) 8 | load(File.join(plugin_spec_dir, "db", "schema.rb")) 9 | -------------------------------------------------------------------------------- /app/models/capture.rb: -------------------------------------------------------------------------------- 1 | class Capture < ActiveRecord::Base 2 | include PaymentGateway 3 | 4 | attr_accessor :authorization 5 | attr_accessor :response 6 | 7 | belongs_to :payment 8 | 9 | def before_create 10 | self.response = gateway.capture(amount, authorization, :authenticate => true) 11 | 12 | self.status = response.params['Status'] 13 | self.status_detail = response.params['StatusDetail'] 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /spec/helpers/burndowns_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe BurndownsHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(BurndownsHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/invoices_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe InvoicesHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(InvoicesHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/sessions_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe SessionsHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(SessionsHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/sitemaps_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe SitemapsHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(SitemapsHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/views/burndowns/show.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/burndowns/show" do 4 | before(:each) do 5 | render 'burndowns/show' 6 | end 7 | 8 | #Delete this example and add some real ones or delete this file 9 | it "should tell you where to find the file" do 10 | response.should have_tag('p', %r[Find me in app/views/burndowns/show]) 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /app/views/stories/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "Editing #{@story}" %> 2 | <% content_for :h1, h("Editing #{@story}") %> 3 | <% breadcrumbs(*story_breadcrumbs(@story) + 4 | [ link_to(h(@story), [@project, @story]), 'Edit' ] 5 | ) %> 6 | <% form_for [@project, @story] do |form| %> 7 | <%= form.error_messages %> 8 | <%= render form %> 9 |10 | <%= form.submit 'Update Story' %> 11 |
12 | <% end %> 13 | -------------------------------------------------------------------------------- /db/migrate/20090401182040_create_authorisations.rb: -------------------------------------------------------------------------------- 1 | class CreateAuthorisations < ActiveRecord::Migration 2 | def self.up 3 | create_table :authorisations do |t| 4 | t.integer :payment_id 5 | t.string :authorisation 6 | t.string :status 7 | t.text :status_detail 8 | t.integer :amount 9 | 10 | t.timestamps 11 | end 12 | end 13 | 14 | def self.down 15 | drop_table :authorisations 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /spec/helpers/iterations_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe IterationsHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(IterationsHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /app/views/iterations/new.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "Planning iteration for #{@project}" %> 2 | <% content_for :h1, "Planning iteration for #{h(@project)}" %> 3 | <% breadcrumbs link_to(h(@project), @project), 'Plan Iteration' %> 4 | <% body_classes << 'iteration_planning' %> 5 | 6 | <% form_for [@project, @iteration] do |form| %> 7 | <%= render form %> 8 |9 | <%= form.submit 'Create Iteration' %> 10 |
11 | <% end %> 12 | -------------------------------------------------------------------------------- /config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying do debug a problem that might steem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! -------------------------------------------------------------------------------- /db/migrate/20090403091156_create_repeats.rb: -------------------------------------------------------------------------------- 1 | class CreateRepeats < ActiveRecord::Migration 2 | def self.up 3 | create_table :repeats do |t| 4 | t.integer :payment_id 5 | t.integer :amount 6 | t.string :description 7 | t.text :authorization 8 | t.string :status 9 | t.string :status_detail 10 | 11 | t.timestamps 12 | end 13 | end 14 | 15 | def self.down 16 | drop_table :repeats 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /spec/controllers/public_controller_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe PublicController do 4 | 5 | describe "show" do 6 | def do_call 7 | get :show 8 | end 9 | 10 | it_should_behave_like "it's successful" 11 | 12 | it "should render the show template" do 13 | do_call 14 | response.should render_template('public/show') 15 | end 16 | end 17 | 18 | end 19 | -------------------------------------------------------------------------------- /spec/fixtures/protx/successful_capture.yml: -------------------------------------------------------------------------------- 1 | --- !ruby/object:ActiveMerchant::Billing::Response 2 | authorization: 2;;; 3 | avs_result: 4 | code: 5 | postal_match: 6 | street_match: 7 | message: 8 | cvv_result: 9 | code: 10 | message: 11 | fraud_review: 12 | message: Success 13 | params: 14 | Status: OK 15 | StatusDetail: The transaction was RELEASEed successfully. 16 | VPSProtocol: "2.23" 17 | success: true 18 | test: false 19 | -------------------------------------------------------------------------------- /spec/helpers/organisations_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe OrganisationsHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(OrganisationsHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/payment_methods_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe PaymentMethodsHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(PaymentMethodsHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/verifications_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe VerificationsHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(VerificationsHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/script/destroy: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | APP_ROOT = File.join(File.dirname(__FILE__), '..') 3 | 4 | begin 5 | require 'rubigen' 6 | rescue LoadError 7 | require 'rubygems' 8 | require 'rubigen' 9 | end 10 | require 'rubigen/scripts/destroy' 11 | 12 | ARGV.shift if ['--help', '-h'].include?(ARGV[0]) 13 | RubiGen::Base.use_component_sources! [:activemerchant, :rubygems, :test_unit] 14 | RubiGen::Scripts::Destroy.new.run(ARGV) 15 | -------------------------------------------------------------------------------- /spec/views/iterations/new_guidance.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/iterations/new_guidance" do 4 | before :each do 5 | @project = mock_model(Project) 6 | @iteration = mock_model(Iteration) 7 | assigns[:project] = @project 8 | assigns[:iteration] = @iteration 9 | 10 | render 'iterations/new_guidance' 11 | end 12 | 13 | it_should_behave_like "guidance" 14 | end 15 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/gateways/payflow/payflow_response.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | module Billing #:nodoc: 3 | class PayflowResponse < Response 4 | def profile_id 5 | @params['profile_id'] 6 | end 7 | 8 | def payment_history 9 | @payment_history ||= @params['rp_payment_result'].collect{ |result| result.stringify_keys } rescue [] 10 | end 11 | end 12 | end 13 | end -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/script/generate: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | APP_ROOT = File.join(File.dirname(__FILE__), '..') 3 | 4 | begin 5 | require 'rubigen' 6 | rescue LoadError 7 | require 'rubygems' 8 | require 'rubigen' 9 | end 10 | require 'rubigen/scripts/generate' 11 | 12 | ARGV.shift if ['--help', '-h'].include?(ARGV[0]) 13 | RubiGen::Base.use_component_sources! [:activemerchant, :rubygems, :test_unit] 14 | RubiGen::Scripts::Generate.new.run(ARGV) 15 | -------------------------------------------------------------------------------- /db/migrate/20090401162346_create_payments.rb: -------------------------------------------------------------------------------- 1 | class CreatePayments < ActiveRecord::Migration 2 | def self.up 3 | create_table :payments do |t| 4 | t.integer :organisation_id 5 | t.string :vpstxid 6 | t.string :security_key 7 | t.string :tx_auth_no 8 | t.string :vendor_tx_code 9 | t.integer :amount 10 | 11 | t.timestamps 12 | end 13 | end 14 | 15 | def self.down 16 | drop_table :payments 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /spec/helpers/active_iterations_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe ActiveIterationsHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(ActiveIterationsHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/agile_terminology_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe AgileTerminologyHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(AgileTerminologyHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/keyboard_shortcuts_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe KeyboardShortcutsHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(KeyboardShortcutsHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /spec/helpers/story_team_members_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe StoryTeamMembersHelper do 4 | 5 | #Delete this example and add some real ones or delete this file 6 | it "should be included in the object returned by #helper" do 7 | included_modules = (class << helper; self; end).send :included_modules 8 | included_modules.should include(StoryTeamMembersHelper) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/gateways/payflow_express_uk_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../test_helper' 2 | 3 | class PayflowExpressUkTest < Test::Unit::TestCase 4 | def setup 5 | @gateway = PayflowExpressUkGateway.new( 6 | :login => 'LOGIN', 7 | :password => 'PASSWORD' 8 | ) 9 | end 10 | 11 | def test_supported_countries 12 | assert_equal ['GB'], PayflowExpressUkGateway.supported_countries 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /app/views/payment_plans/_payment_plan.erb: -------------------------------------------------------------------------------- 1 | <% unless defined? short %> 2 |4 | <%= number_to_currency payment_plan.price %> per month 5 |
6 | <% end %> 7 |3 | <%= form.label :name %> 4 | <%= form.text_field :name %> 5 |
6 |7 | <%= form.label :duration, 'Duration (days)' %> 8 | <%= form.text_field :duration, :class => 'numeric', :size => 2 %> 9 |
10 | 11 |13 | You should start by <%= link_to 'creating a story', [:new, @project, :story] %>. 14 |
15 | -------------------------------------------------------------------------------- /db/migrate/20090325101204_move_acknowledgement_token_from_user_to_organisation_member.rb: -------------------------------------------------------------------------------- 1 | class MoveAcknowledgementTokenFromUserToOrganisationMember < ActiveRecord::Migration 2 | def self.up 3 | add_column :organisation_members, :acknowledgement_token, :string 4 | remove_column :users, :acknowledgement_token 5 | end 6 | 7 | def self.down 8 | add_column :users, :acknowledgement_token, :string 9 | remove_column :organisation_members, :acknowledgement_token 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /spec/views/agile_terminology/iteration.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/agile_terminology/iteration" do 4 | before(:each) do 5 | render 'agile_terminology/iteration' 6 | end 7 | 8 | #Delete this example and add some real ones or delete this file 9 | it "should tell you where to find the file" do 10 | response.should have_tag('p', %r[Find me in app/views/agile_terminology/iteration]) 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/lib/utils.rb: -------------------------------------------------------------------------------- 1 | require 'digest/md5' 2 | 3 | module ActiveMerchant #:nodoc: 4 | module Utils #:nodoc: 5 | def generate_unique_id 6 | md5 = Digest::MD5.new 7 | now = Time.now 8 | md5 << now.to_s 9 | md5 << String(now.usec) 10 | md5 << String(rand(0)) 11 | md5 << String($$) 12 | md5 << self.class.name 13 | md5.hexdigest 14 | end 15 | 16 | module_function :generate_unique_id 17 | end 18 | end -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/integrations/nochex_module_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../test_helper' 2 | 3 | class ChronopayModuleTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::Integrations 5 | 6 | def test_notification_method 7 | assert_instance_of Nochex::Notification, Nochex.notification('name=cody') 8 | end 9 | 10 | def test_return_method 11 | assert_instance_of Nochex::Return, Nochex.return('name=cody') 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /app/views/user_mailer/acknowledgement.erb: -------------------------------------------------------------------------------- 1 | Welcome to Simply Agile. 2 | 3 | You have been added to the organisation '<%= @organisation.name %>' by 4 | <%= @sponsor.email_address %>. To acknowledge this and to start using 5 | Simply Agile please visit the following url and finish 6 | setting up your account: 7 | 8 | <%= new_user_acknowledgement_url(@user, :token => @token) %> 9 | 10 | 11 | To find out more about Simple Agile visit http://besimplyagile.com/ 12 | 13 | Regards. 14 | The Simply Agile Team 15 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/integrations/hi_trust_module_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../test_helper' 2 | 3 | class HiTrustModuleTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::Integrations 5 | 6 | def test_notification_method 7 | assert_instance_of HiTrust::Notification, HiTrust.notification('name=cody') 8 | end 9 | 10 | def test_return_method 11 | assert_instance_of HiTrust::Return, HiTrust.return('name=cody') 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /app/views/iterations/new_guidance.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "New iteration for #{@project}" %> 2 | <% content_for :h1, "No available stories for #{h(@project)}" %> 3 | <% breadcrumbs link_to(h(@project), @project), 'New Iteration' %> 4 | <% body_classes << 'guidance' %> 5 | 6 |7 | There are no available stories for this project, so you can't plan an iteration. 8 |
9 |10 | You might want to 11 | <%= link_to 'create a story for this project', new_project_story_path(@project) %>. 12 |
13 | -------------------------------------------------------------------------------- /spec/models/story_action_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe StoryAction do 4 | describe "associations" do 5 | it "should belong to a user" do 6 | StoryAction.should belong_to(:user) 7 | end 8 | 9 | it "should belong to a story" do 10 | StoryAction.should belong_to(:story) 11 | end 12 | 13 | it "should belong to an iteration" do 14 | StoryAction.should belong_to(:iteration) 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /spec/views/agile_terminology/organisation.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/agile_terminology/organisation" do 4 | before(:each) do 5 | render 'agile_terminology/organisation' 6 | end 7 | 8 | #Delete this example and add some real ones or delete this file 9 | it "should tell you where to find the file" do 10 | response.should have_tag('p', %r[Find me in app/views/agile_terminology/organisation]) 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20090621194747_replace_repeat_payment_token_with_initial_payment_in_payment_methods.rb: -------------------------------------------------------------------------------- 1 | class ReplaceRepeatPaymentTokenWithInitialPaymentInPaymentMethods < ActiveRecord::Migration 2 | def self.up 3 | remove_column :payment_methods, :repeat_payment_token 4 | add_column :payment_methods, :initial_payment_id, :integer 5 | end 6 | 7 | def self.down 8 | add_column :payment_methods, :repeat_payment_token, :text 9 | remove_column :payment_methods, :initial_payment_id 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/integrations/chronopay_module_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../test_helper' 2 | 3 | class ChronopayModuleTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::Integrations 5 | 6 | def test_notification_method 7 | assert_instance_of Chronopay::Notification, Chronopay.notification('name=cody') 8 | end 9 | 10 | def test_return_method 11 | assert_instance_of Chronopay::Return, Chronopay.return('name=cody') 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /app/views/acceptance_criteria/edit.js.erb: -------------------------------------------------------------------------------- 1 |5 | <%= 6 | f.text_field :criterion, 7 | :id => 'edit_acceptance_criterion_criterion', 8 | :class => 'auto_focus' 9 | %> 10 | <%= f.submit 'Update' %> 11 |
12 | <% end %> 13 |13 | <%= form.submit 'Update Iteration' %> 14 |
15 | <% end %> 16 | -------------------------------------------------------------------------------- /vendor/plugins/validates_email_format_of/test/fixtures/person.rb: -------------------------------------------------------------------------------- 1 | class Person < ActiveRecord::Base 2 | validates_email_format_of :email, 3 | :on => :create, 4 | :message => 'fails with custom message', 5 | :allow_nil => true 6 | end 7 | 8 | class MxRecord < ActiveRecord::Base 9 | validates_email_format_of :email, 10 | :on => :create, 11 | :check_mx => true 12 | end 13 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/integrations/two_checkout_module_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../test_helper' 2 | 3 | class TwoCheckoutModuleTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::Integrations 5 | 6 | def test_notification_method 7 | assert_instance_of TwoCheckout::Notification, TwoCheckout.notification('name=cody') 8 | end 9 | 10 | def test_return_method 11 | assert_instance_of TwoCheckout::Return, TwoCheckout.return('name=cody') 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /db/migrate/20090331105217_add_limits_to_payment_plans.rb: -------------------------------------------------------------------------------- 1 | class AddLimitsToPaymentPlans < ActiveRecord::Migration 2 | def self.up 3 | add_column :payment_plans, :active_iteration_limit, :integer 4 | add_column :payment_plans, :project_limit, :integer 5 | add_column :payment_plans, :user_limit, :integer 6 | end 7 | 8 | def self.down 9 | remove_column :payment_plans, :user_limit 10 | remove_column :payment_plans, :project_limit 11 | remove_column :payment_plans, :active_iteration_limit 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/integrations/two_checkout/return.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | module Billing #:nodoc: 3 | module Integrations #:nodoc: 4 | module TwoCheckout 5 | class Return < ActiveMerchant::Billing::Integrations::Return 6 | def success? 7 | params['credit_card_processed'] == 'Y' 8 | end 9 | 10 | def message 11 | 12 | end 13 | end 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /app/controllers/active_iterations_controller.rb: -------------------------------------------------------------------------------- 1 | class ActiveIterationsController < ApplicationController 2 | 3 | before_filter :get_iteration 4 | 5 | def create 6 | if @iteration.start 7 | redirect_to [@iteration.project, @iteration] 8 | else 9 | @project = @iteration.project 10 | render :template => 'iterations/show' 11 | end 12 | end 13 | 14 | protected 15 | 16 | def get_iteration 17 | @iteration = 18 | current_organisation.iterations.find(params[:iteration_id]) 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /app/views/acceptance_criteria/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, @acceptance_criterion %> 2 | <% content_for :h1, h(@acceptance_criterion) %> 3 | <% breadcrumbs( 4 | link_to(h(@project), @project), 5 | link_to(h(@story), [@project, @story]), 6 | h(@acceptance_criterion), 7 | 'Edit' 8 | ) %> 9 | 10 | <% form_for [@project, @story, @acceptance_criterion] do |f| %> 11 |12 | <%= f.label :criterion %> 13 | <%= f.text_field :criterion, :class => 'auto_focus' %> 14 | <%= f.submit 'Update' %> 15 |
16 | <% end %> 17 | 18 | -------------------------------------------------------------------------------- /app/views/verification_notifications/new.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "Re-send Verification Email" %> 2 | <% content_for :h1, "Re-send Verification Email" %> 3 | 4 | <% form_for User.new, :url => verification_notification_path, 5 | :html => {:id => 'reverification'} do |f| %> 6 |7 | Please enter your email address to receive a new verification email. 8 |
9 |10 | <%= f.label :email_address %> 11 | <%= f.text_field :email_address %> 12 |
13 |14 | <%= f.submit 'Send' %> 15 |
16 | <% end %> 17 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/spec/controllers/welcome_controller_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 2 | 3 | describe WelcomeController do 4 | 5 | describe "POST /signup (#signup)" do 6 | it "should deliver the signup email" do 7 | # expect 8 | UserMailer.should_receive(:deliver_signup).with("email@example.com", "Jimmy Bean") 9 | # when 10 | post :signup, "Email" => "email@example.com", "Name" => "Jimmy Bean" 11 | end 12 | 13 | end 14 | 15 | end 16 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/lib/email_spec.rb: -------------------------------------------------------------------------------- 1 | unless defined?(ActionMailer) 2 | Kernel.warn("ActionMailer did not appear to be loaded so email-spec is requiring it.") 3 | require 'actionmailer' 4 | end 5 | 6 | $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))) unless $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__))) 7 | 8 | require 'email_spec/deliveries' 9 | require 'email_spec/address_converter' 10 | require 'email_spec/email_viewer' 11 | require 'email_spec/helpers' 12 | require 'email_spec/matchers' 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/models/story_team_member.rb: -------------------------------------------------------------------------------- 1 | class StoryTeamMember < ActiveRecord::Base 2 | include CurrentUser 3 | 4 | attr_protected :user_id 5 | belongs_to :user 6 | belongs_to :story 7 | 8 | validates_presence_of :user_id, :story_id 9 | 10 | validates_uniqueness_of :story_id, :scope => :user_id, 11 | :message => 'is already assigned to you' 12 | 13 | def validate 14 | if story && !user.organisations.include?(story.project.organisation) 15 | errors.add(:story, "must belong to one of your projects") 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /spec/views/projects/edit.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/projects/edit" do 4 | 5 | before :each do 6 | @project = mock_model(Project, 7 | :stories => [], 8 | :iterations => [], 9 | :name => '', 10 | :description => '') 11 | assigns[:project] = @project 12 | 13 | render 'projects/edit' 14 | end 15 | 16 | it_should_behave_like "a standard view" 17 | end 18 | -------------------------------------------------------------------------------- /vendor/plugins/country_select/README: -------------------------------------------------------------------------------- 1 | CountrySelect 2 | ============= 3 | 4 | Provides a simple helper to get an HTML select list of countries. The list of countries comes from the ISO 3166 standard. While it is a relatively neutral source of country names, it will still offend some users. 5 | 6 | Users are strongly advised to evaluate the suitability of this list given their user base. 7 | 8 | Example 9 | ======= 10 | 11 | country_select("user", "country_name") 12 | 13 | 14 | Copyright (c) 2008 Michael Koziarski, released under the MIT license 15 | -------------------------------------------------------------------------------- /vendor/plugins/no-peeping-toms/lib/no_peeping_toms.rb: -------------------------------------------------------------------------------- 1 | module NoPeepingToms 2 | def with_observers(*observer_syms) 3 | observer_names = [observer_syms].flatten 4 | observers = observer_names.map do |o| 5 | if o.respond_to?(:instance) && o.instance.is_a?(ActiveRecord::Observer) 6 | o.instance 7 | else 8 | o.to_s.classify.constantize.instance 9 | end 10 | end 11 | 12 | observers.each { |o| old_add_observer(o) } 13 | yield 14 | observers.each { |o| delete_observer(o) } 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /spec/object_mother/organisations.rb: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(__FILE__), 'payment_plans') 2 | class Organisations < ObjectMother 3 | truncate_organisation 4 | 5 | def self.organisation_prototype 6 | { 7 | :name => (Organisation.count + 1), 8 | :payment_plan_id => PaymentPlans.create_payment_plan!.id, 9 | } 10 | end 11 | 12 | define_organisation(:jandaweb, 13 | :name => 'Jandaweb', 14 | :payment_plan_id => PaymentPlans.create_payment_plan!(:project_limit => 1000).id) 15 | end 16 | -------------------------------------------------------------------------------- /spec/views/payment_methods/new.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/payment_methods/new" do 4 | before(:each) do 5 | assigns[:current_organisation] = Organisation.new 6 | assigns[:organisation] = mock_model Organisation, :name => '' 7 | payment_method = PaymentMethod.new 8 | payment_method.build_billing_address 9 | assigns[:payment_method] = payment_method 10 | render 'payment_methods/new' 11 | end 12 | 13 | # it_should_behave_like "a standard view" 14 | end 15 | -------------------------------------------------------------------------------- /vendor/plugins/objectmother/doc/dot/f_0.dot: -------------------------------------------------------------------------------- 1 | digraph TopLevel { 2 | compound = true 3 | bgcolor = lightcyan1 4 | fontname = Arial 5 | fontsize = 8 6 | label = "TopLevel" 7 | node [ 8 | fontname = Arial, 9 | fontsize = 8, 10 | color = black 11 | ] 12 | 13 | ObjectMother [ 14 | fontcolor = black, 15 | URL = "classes/ObjectMother.html", 16 | shape = ellipse, 17 | color = palegoldenrod, 18 | style = filled, 19 | label = "ObjectMother" 20 | ] 21 | 22 | } 23 | 24 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/rails_generators/email_spec/email_spec_generator.rb: -------------------------------------------------------------------------------- 1 | # This generator adds email steps to the step definitions directory 2 | generator_base = defined?(Rails) ? Rails::Generator::Base : RubiGen::Base 3 | class EmailSpecGenerator < generator_base 4 | def manifest 5 | record do |m| 6 | m.directory 'features/step_definitions' 7 | m.file 'email_steps.rb', 'features/step_definitions/email_steps.rb' 8 | end 9 | end 10 | 11 | protected 12 | 13 | def banner 14 | "Usage: #{$0} email_spec" 15 | end 16 | 17 | end 18 | -------------------------------------------------------------------------------- /spec/views/projects/show_guidance.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') 2 | 3 | describe "/projects/show_guidance" do 4 | 5 | before :each do 6 | @project = mock_model(Project, 7 | :stories => [], 8 | :iterations => [], 9 | :name => '', 10 | :description => '') 11 | assigns[:project] = @project 12 | 13 | render 'projects/show_guidance' 14 | end 15 | 16 | it_should_behave_like "guidance" 17 | end 18 | -------------------------------------------------------------------------------- /app/models/repeat.rb: -------------------------------------------------------------------------------- 1 | class Repeat < ActiveRecord::Base 2 | include PaymentGateway 3 | 4 | attr_accessor :authorization, :response, :organisation 5 | belongs_to :payment 6 | 7 | def before_create 8 | payment = create_payment :organisation => organisation 9 | self.response = gateway.purchase( 10 | amount, 11 | authorization, 12 | :order_id => payment.vendor_tx_code, 13 | :description => description 14 | ) 15 | 16 | self.status = response.params['Status'] 17 | self.status_detail = response.params['StatusDetail'] 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /db/migrate/20090331120108_create_billing_addresses.rb: -------------------------------------------------------------------------------- 1 | class CreateBillingAddresses < ActiveRecord::Migration 2 | def self.up 3 | create_table :billing_addresses do |t| 4 | t.string :name 5 | t.string :address_line_1 6 | t.string :address_line_2 7 | t.string :address_line_3 8 | t.string :county 9 | t.string :town 10 | t.string :postcode 11 | t.string :country 12 | t.string :telephone_number 13 | 14 | t.timestamps 15 | end 16 | end 17 | 18 | def self.down 19 | drop_table :billing_addresses 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /app/views/user_verifications/new.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "Verify your account" %> 2 | <% content_for :h1, "Verify your account" %> 3 | 4 | <%= render_flash %> 5 | 6 | <% form_tag :action => :create do -%> 7 |9 | <%= label_tag :token %> 10 | <%= text_field_tag :token, params[:token], :size => 6 %> 11 |
12 |13 | Your 6 character verification token was emailed to you when you signed up. 14 |
15 |17 | <%= submit_tag 'Verify Account' %> 18 |
19 | <% end -%> 20 | -------------------------------------------------------------------------------- /app/views/organisations/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "Editing #{@organisation}" %> 2 | <% content_for :h1, h("Editing #{@organisation}") %> 3 | <% breadcrumbs( 4 | link_to('Account', @current_user), 5 | link_to('Organisations', :organisations), 6 | h(@organisation), 7 | 'Edit', 8 | :organisation_page => false 9 | ) %> 10 | 11 | <% form_for @organisation do |f| %> 12 | <%= f.error_messages %> 13 |14 | <%= f.label :name %> 15 | <%= f.text_field :name, :class => 'auto_focus' %> 16 |
17 |18 | <%= f.submit 'Rename' %> 19 |
20 | <% end %> 21 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/generators/integration/templates/integration.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/<%= name %>/helper.rb' 2 | require File.dirname(__FILE__) + '/<%= name %>/notification.rb' 3 | 4 | module ActiveMerchant #:nodoc: 5 | module Billing #:nodoc: 6 | module Integrations #:nodoc: 7 | module <%= class_name %> 8 | 9 | mattr_accessor :service_url 10 | self.service_url = 'https://www.example.com' 11 | 12 | def self.notification(post) 13 | Notification.new(post) 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /spec/object_mother/invoices.rb: -------------------------------------------------------------------------------- 1 | class Invoices < ObjectMother 2 | truncate_invoice 3 | def self.invoice_prototype 4 | { 5 | :amount => 23.23, 6 | :vat_amount => 0.35, 7 | :date => Date.today, 8 | :customer_name => 'Andrew', 9 | :customer_address_line_1 => 'Some Place', 10 | :customer_address_line_2 => 'Nice', 11 | :customer_county => 'Bananashire', 12 | :customer_town => 'Bananaton', 13 | :customer_postcode => 'BN1 1NA', 14 | :customer_country => 'Bananaland', 15 | :payment => Payments.create_payment! 16 | } 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/lib/post_data.rb: -------------------------------------------------------------------------------- 1 | require 'cgi' 2 | 3 | class PostData < Hash 4 | class_inheritable_accessor :required_fields, :instance_writer => false 5 | self.required_fields = [] 6 | 7 | def []=(key, value) 8 | return if value.blank? && !required?(key) 9 | super 10 | end 11 | 12 | def to_post_data 13 | collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join("&") 14 | end 15 | 16 | alias_method :to_s, :to_post_data 17 | 18 | private 19 | def required?(key) 20 | required_fields.include?(key) 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/vendor/plugins/email_spec/rails_generators/email_spec/email_spec_generator.rb: -------------------------------------------------------------------------------- 1 | # This generator adds email steps to the step definitions directory 2 | generator_base = defined?(Rails) ? Rails::Generator::Base : RubiGen::Base 3 | class EmailSpecGenerator < generator_base 4 | def manifest 5 | record do |m| 6 | m.directory 'features/step_definitions' 7 | m.file 'email_steps.rb', 'features/step_definitions/email_steps.rb' 8 | end 9 | end 10 | 11 | protected 12 | 13 | def banner 14 | "Usage: #{$0} email_spec" 15 | end 16 | 17 | end 18 | -------------------------------------------------------------------------------- /spec/fixtures/billing_addresses.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | name: MyString 5 | address_line_1: MyString 6 | address_line_2: MyString 7 | address_line_3: MyString 8 | county: MyString 9 | town: MyString 10 | postcode: MyString 11 | country: MyString 12 | phone_number: MyString 13 | 14 | two: 15 | name: MyString 16 | address_line_1: MyString 17 | address_line_2: MyString 18 | address_line_3: MyString 19 | county: MyString 20 | town: MyString 21 | postcode: MyString 22 | country: MyString 23 | phone_number: MyString 24 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/gateways/payflow_express_uk.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/payflow_express' 2 | 3 | module ActiveMerchant #:nodoc: 4 | module Billing #:nodoc: 5 | class PayflowExpressUkGateway < PayflowExpressGateway 6 | self.default_currency = 'GBP' 7 | self.partner = 'PayPalUk' 8 | 9 | self.supported_countries = ['GB'] 10 | self.homepage_url = 'https://www.paypal.com/uk/cgi-bin/webscr?cmd=_additional-payment-overview-outside' 11 | self.display_name = 'PayPal Express Checkout (UK)' 12 | end 13 | end 14 | end 15 | 16 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/public/dispatch.rb: -------------------------------------------------------------------------------- 1 | #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/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 11 | -------------------------------------------------------------------------------- /config/initializers/custom_active_record_view_errors.rb: -------------------------------------------------------------------------------- 1 | # Changes default Rails behaviour when displaying form fields with errors. 2 | # Instead of wrapping tags in a div, which invalidates the XHTML, we just add a 3 | # class to the element instead 4 | module ActionView 5 | class Base 6 | @@field_error_proc = Proc.new do |html_tag, instance| 7 | if html_tag.include?('class="') 8 | html_tag.sub(/class="/, 'class="field_with_errors ') 9 | else 10 | html_tag.sub(/<(\w*) /, '<\1 class="field_with_errors" ') 11 | end 12 | end 13 | cattr_accessor :field_error_proc 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/tasks/cucumber.rake: -------------------------------------------------------------------------------- 1 | $LOAD_PATH.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib') if File.directory?(RAILS_ROOT + '/vendor/plugins/cucumber/lib') 2 | 3 | begin 4 | require 'cucumber/rake/task' 5 | 6 | Cucumber::Rake::Task.new(:features) do |t| 7 | t.fork = true 8 | t.cucumber_opts = ['--drb', '--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')] 9 | end 10 | task :features# => 'db:test:prepare' 11 | rescue LoadError 12 | desc 'Cucumber rake task not available' 13 | task :features do 14 | abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin' 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/integrations/helpers/hi_trust_helper_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../../../test_helper' 2 | 3 | class HiTrustHelperTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::Integrations 5 | 6 | def setup 7 | @helper = HiTrust::Helper.new('order-500','cody@example.com', :amount => 500, :currency => 'USD') 8 | end 9 | 10 | def test_basic_helper_fields 11 | assert_field 'storeid', 'cody@example.com' 12 | assert_field 'amount', '500' 13 | assert_field 'ordernumber', 'order-500' 14 | assert_field 'currency', 'USD' 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /app/controllers/burndowns_controller.rb: -------------------------------------------------------------------------------- 1 | class BurndownsController < ApplicationController 2 | before_filter :get_iteration 3 | before_filter :get_burndown 4 | 5 | def show 6 | send_data( 7 | @burndown.to_png, 8 | :disposition => 'inline', 9 | :type => 'image/png', 10 | :filename => "#{@iteration.name} Burndown.png" 11 | ) 12 | end 13 | 14 | protected 15 | 16 | def get_iteration 17 | @iteration = 18 | current_organisation.iterations.find(params[:iteration_id]) 19 | end 20 | 21 | def get_burndown 22 | @burndown = @iteration.burndown(params[:width]) 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/gateways/paypal_ca.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/paypal' 2 | 3 | module ActiveMerchant #:nodoc: 4 | module Billing #:nodoc: 5 | # The PayPal gateway for PayPal Website Payments Pro Canada only supports Visa and MasterCard 6 | class PaypalCaGateway < PaypalGateway 7 | self.supported_cardtypes = [:visa, :master] 8 | self.supported_countries = ['CA'] 9 | self.homepage_url = 'https://www.paypal.com/cgi-bin/webscr?cmd=_wp-pro-overview-outside' 10 | self.display_name = 'PayPal Website Payments Pro (CA)' 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/integrations/bogus/helper.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | module Billing #:nodoc: 3 | module Integrations #:nodoc: 4 | module Bogus 5 | class Helper < ActiveMerchant::Billing::Integrations::Helper 6 | mapping :account, 'account' 7 | mapping :order, 'order' 8 | mapping :amount, 'amount' 9 | mapping :currency, 'currency' 10 | mapping :customer, :first_name => 'first_name', 11 | :last_name => 'last_name' 12 | 13 | end 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /app/models/payment_gateway.rb: -------------------------------------------------------------------------------- 1 | module PaymentGateway 2 | def gateway 3 | ActiveMerchant::Billing::ProtxGateway.simulate = true if config['simulate'] 4 | @gateway ||= ActiveMerchant::Billing::ProtxGateway.new(:login => vendor) 5 | end 6 | 7 | def vendor 8 | @vendor ||= config['vendor'] 9 | end 10 | 11 | def successful? 12 | self.respond_to?(:status) and self.status == 'OK' 13 | end 14 | 15 | protected 16 | 17 | def config 18 | @config ||= YAML.load_file(config_file)[RAILS_ENV] 19 | end 20 | 21 | def config_file 22 | File.expand_path(File.join(RAILS_ROOT, 'config', 'protx.yml')) 23 | end 24 | end -------------------------------------------------------------------------------- /app/views/organisations/index.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "Organisations" %> 2 | <% content_for :h1, "Organisations" %> 3 | <% breadcrumbs( 4 | link_to_unless_current('Account', @current_user), 5 | 'Organisations', 6 | :organisation_page => false 7 | ) 8 | %> 9 | <% content_for :actions do %> 10 |16 | <%= link_to 'New Organisation', new_organisation_path %> 17 |
18 | <% else -%> 19 |'+this.messages.notice+'
10 | <%= f.submit 'Save Priorities' %> 11 |
12 | <% end %> 13 | 14 |6 | Next payment: <%= l payment_method.organisation.next_payment_date %> 7 |
8 | <%= render payment_method.organisation.payment_plan %> 9 |10 | Card number: <%= card_number payment_method.last_four_digits %> 11 |
12 |13 | Expiry: 14 | <%= 15 | l Date.new(payment_method.year, payment_method.month), :format => :month 16 | %> 17 |
18 | 19 | <%= button_to 'Cancel this payment', payment_method, :method => :delete %> 20 |12 | <%= form.check_box :iteration_id, {}, @iteration.id, nil %> 13 | <%= form.label :iteration_id, "Add to the '#{h(@iteration)}' iteration" %> 14 |
15 | <%= render form %> 16 |17 | <%= form.submit 'Create Story' %> 18 |
19 | <% end %> 20 | -------------------------------------------------------------------------------- /vendor/plugins/email-spec/examples/rails_root/features/support/env.rb: -------------------------------------------------------------------------------- 1 | # Sets up the Rails environment for Cucumber 2 | ENV["RAILS_ENV"] = "test" 3 | require File.expand_path(File.dirname(__FILE__) + '/../../config/environment') 4 | require 'cucumber/rails/world' 5 | Cucumber::Rails.use_transactional_fixtures 6 | 7 | require 'webrat' 8 | require 'cucumber/rails/rspec' 9 | require 'webrat/core/matchers' 10 | 11 | Webrat.configure do |config| 12 | config.mode = :rails 13 | end 14 | 15 | 16 | 17 | require File.expand_path(File.dirname(__FILE__) + '../../../../../lib/email_spec') 18 | require 'email_spec/cucumber' 19 | 20 | require File.expand_path(File.dirname(__FILE__) +'/../../spec/model_factory.rb') 21 | World(Fixjour) 22 | -------------------------------------------------------------------------------- /app/controllers/user_verifications_controller.rb: -------------------------------------------------------------------------------- 1 | class UserVerificationsController < ApplicationController 2 | skip_before_filter :login_required 3 | skip_before_filter :select_organisation 4 | before_filter :get_user 5 | 6 | layout 'landing' 7 | 8 | def new 9 | end 10 | 11 | def create 12 | if @user.verify(params) 13 | session[:user_id] = @user.id 14 | flash[:notice] = "Your account has now been verified." 15 | redirect_to home_url 16 | else 17 | flash.now[:error] = "The verification token has not been recognised." 18 | render :action => 'new' 19 | end 20 | end 21 | 22 | protected 23 | 24 | def get_user 25 | @user = User.find(params[:user_id]) 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /app/views/payment_methods/_form.html.erb: -------------------------------------------------------------------------------- 1 |2 | <%= form.label :cardholder_name %> 3 | <%= form.text_field :cardholder_name, :class => 'auto_focus' %> 4 |
5 | 6 |7 | <%= form.label :card_type%> 8 | <%= form.collection_select :card_type, PaymentMethod::CARD_TYPES, :to_s, :humanize %> 9 |
10 | 11 |12 | <%= form.label :number %> 13 | <%= form.text_field :number %> 14 |
15 | 16 |17 | <%= form.label :month %> 18 | <%= form.text_field :month, :size => 2 %> 19 |
20 |21 | <%= form.label :year %> 22 | <%= form.text_field :year, :size => 2 %> 23 |
24 | 25 |26 | <%= form.label :verification_value %> 27 | <%= form.text_field :verification_value, :size => 3 %> 28 |
29 | -------------------------------------------------------------------------------- /spec/fixtures/invoices.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html 2 | 3 | one: 4 | price: 9.99 5 | vat_rate: 9.99 6 | vat_amount: 9.99 7 | customer_name: MyString 8 | customer_address_line_1: MyString 9 | customer_address_line_2: MyString 10 | customer_county: MyString 11 | customer_town: MyString 12 | customer_postcode: MyString 13 | customer_country: MyString 14 | 15 | two: 16 | price: 9.99 17 | vat_rate: 9.99 18 | vat_amount: 9.99 19 | customer_name: MyString 20 | customer_address_line_1: MyString 21 | customer_address_line_2: MyString 22 | customer_county: MyString 23 | customer_town: MyString 24 | customer_postcode: MyString 25 | customer_country: MyString 26 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/lib/active_merchant/billing/credit_card_formatting.rb: -------------------------------------------------------------------------------- 1 | module ActiveMerchant #:nodoc: 2 | module Billing #:nodoc: 3 | module CreditCardFormatting 4 | 5 | # This method is used to format numerical information pertaining to credit cards. 6 | # 7 | # format(2005, :two_digits) # => "05" 8 | # format(05, :four_digits) # => "0005" 9 | def format(number, option) 10 | return '' if number.blank? 11 | 12 | case option 13 | when :two_digits ; sprintf("%.2i", number)[-2..-1] 14 | when :four_digits ; sprintf("%.4i", number)[-4..-1] 15 | else number 16 | end 17 | end 18 | 19 | end 20 | end 21 | end -------------------------------------------------------------------------------- /spec/fixtures/protx/successful_authorization.yml: -------------------------------------------------------------------------------- 1 | --- !ruby/object:ActiveMerchant::Billing::Response 2 | authorization: 2;{F48981C8-158B-4EFA-B8A8-635D3B7A86CE};5123;08S2ZURVM4 3 | avs_result: 4 | code: 5 | postal_match: Y 6 | street_match: N 7 | message: 8 | cvv_result: 9 | code: Y 10 | message: 11 | fraud_review: 12 | message: Success 13 | params: 14 | Status: OK 15 | SecurityKey: 08S2ZURVM4 16 | AVSCV2: SECURITY CODE MATCH ONLY 17 | VPSTxId: "{F48981C8-158B-4EFA-B8A8-635D3B7A86CE}" 18 | StatusDetail: VSP Direct transaction from VSP Simulator. 19 | TxAuthNo: "5123" 20 | VPSProtocol: "2.23" 21 | AddressResult: NOTMATCHED 22 | PostCodeResult: MATCHED 23 | CV2Result: MATCHED 24 | success: true 25 | test: false 26 | -------------------------------------------------------------------------------- /app/views/home/_active_work.html.erb: -------------------------------------------------------------------------------- 1 | <% 2 | width ||= 300 3 | ratio = 600 / width 4 | height = 450 / ratio 5 | 6 | iteration = active_work 7 | %> 8 |Drag stories to change priority.
'); 6 | 7 | // enable sorting 8 | $('ol.stories').sortable({ 9 | axis: 'y', 10 | stop: function(event, ui) { 11 | var ids = $(this).sortable('toArray'); 12 | $(ids).each( function(i) { 13 | var priority = i + 1; 14 | var field = $('#' + this + ' input[type="text"]'); 15 | 16 | // set new field value 17 | $(field).val(priority); 18 | }); 19 | 20 | // submit form 21 | $('form.edit_project').ajaxSubmit(); 22 | } 23 | }); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /script/create_payment_plans: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | script/runner -e $1 " 3 | PaymentPlan.create!(:name => 'Small Team', 4 | :active_iteration_limit => 1, 5 | :project_limit => 3, 6 | :user_limit => 3, 7 | :price => 10) 8 | PaymentPlan.create!(:name => 'Medium Team', 9 | :active_iteration_limit => 10, 10 | :project_limit => 10, 11 | :user_limit => 10, 12 | :price => 25) 13 | PaymentPlan.create!(:name => 'Large Team', 14 | :active_iteration_limit => 50, 15 | :project_limit => 50, 16 | :user_limit => 50, 17 | :price => 50) 18 | " 19 | -------------------------------------------------------------------------------- /vendor/plugins/active_merchant/test/unit/credit_card_formatting_test.rb: -------------------------------------------------------------------------------- 1 | require File.dirname(__FILE__) + '/../test_helper' 2 | 3 | class CreditCardFormattingTest < Test::Unit::TestCase 4 | include ActiveMerchant::Billing::CreditCardFormatting 5 | 6 | def test_should_format_number_by_rule 7 | assert_equal 2005, format(2005, :steven_colbert) 8 | 9 | assert_equal '0005', format(05, :four_digits) 10 | assert_equal '2005', format(2005, :four_digits) 11 | 12 | assert_equal '05', format(2005, :two_digits) 13 | assert_equal '05', format(05, :two_digits) 14 | assert_equal '08', format(8, :two_digits) 15 | 16 | assert format(nil, :two_digits).blank? 17 | assert format('', :two_digits).blank? 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /app/views/projects/index.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "Projects" %> 2 | <% content_for :h1, h("#{@current_organisation} Projects") %> 3 | <% breadcrumbs 'Projects' %> 4 | 5 | <% if @current_organisation.projects.empty? %> 6 |8 | <%= h @current_organisation %> has no projects. 9 | Let's <%= link_to "make a project", new_project_path %>. 10 |
11 |17 | <%= link_to "Make a new project", new_project_path %> 18 |
19 |3 | This story has no acceptance criteria. 4 |
5 | <% else %> 6 |5 | <%= hidden_field_tag "acceptance_criterion[complete]", 6 | ! criterion.complete?, :id => "complete_#{criterion.id}" %> 7 | <%= f.submit criterion.complete? ? "Uncomplete" : "Complete", :id => nil, :class => 'submit_complete' %> 8 |
9 | <% end -%> 10 |Story Points: <%= static_story.estimate %>
7 | <% end %> 8 |11 | You have not yet received any invoices. 12 |
13 | <% else %> 14 || Reference | 18 |Organisation | 19 |Plan | 20 |Period | 21 |Amount | 22 |VAT | 23 |Full version | 24 |
|---|