xrono 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +19 -0
- data/.rspec +1 -0
- data/.travis.yml +20 -0
- data/Gemfile +30 -0
- data/Gemfile.lock +336 -0
- data/LICENSE +21 -0
- data/README.md +64 -0
- data/RELEASE_NOTES.md +83 -0
- data/Rakefile +15 -0
- data/XRONO.md +64 -0
- data/app/assets/images/chosen-sprite.png +0 -0
- data/app/assets/images/grid.png +0 -0
- data/app/assets/images/isotope_logo.png +0 -0
- data/app/assets/images/logo.png +0 -0
- data/app/assets/images/logo_122x40.png +0 -0
- data/app/assets/images/logo_97x40.png +0 -0
- data/app/assets/images/main_bg.jpg +0 -0
- data/app/assets/images/nav_bg.jpg +0 -0
- data/app/assets/images/rails.png +0 -0
- data/app/assets/images/top_bg.jpg +0 -0
- data/app/assets/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/app/assets/images/ui-bg_flat_0_fbf9ee_40x100.png +0 -0
- data/app/assets/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/app/assets/images/ui-bg_flat_65_ffffff_40x100.png +0 -0
- data/app/assets/images/ui-bg_flat_75_cccccc_40x100.png +0 -0
- data/app/assets/images/ui-bg_flat_75_dadada_40x100.png +0 -0
- data/app/assets/images/ui-bg_flat_75_e6e6e6_40x100.png +0 -0
- data/app/assets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/app/assets/images/ui-bg_flat_95_fef1ec_40x100.png +0 -0
- data/app/assets/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/app/assets/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/app/assets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/app/assets/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/app/assets/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/app/assets/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/app/assets/images/ui-icons_217bc0_256x240.png +0 -0
- data/app/assets/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/images/ui-icons_2e83ff_256x240.png +0 -0
- data/app/assets/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/images/ui-icons_469bdd_256x240.png +0 -0
- data/app/assets/images/ui-icons_6da8d5_256x240.png +0 -0
- data/app/assets/images/ui-icons_888888_256x240.png +0 -0
- data/app/assets/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/app/assets/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/app/assets/images/ui-icons_f9bd01_256x240.png +0 -0
- data/app/assets/javascripts/add_taxonomy.js.erb +307 -0
- data/app/assets/javascripts/admin_invoices.js +15 -0
- data/app/assets/javascripts/api/v1/clients.js.coffee +3 -0
- data/app/assets/javascripts/api/v1/tokens.js.coffee +3 -0
- data/app/assets/javascripts/application.js.erb +25 -0
- data/app/assets/javascripts/bootstrap-dropdown.js +92 -0
- data/app/assets/javascripts/bootstrap-tabs.js +80 -0
- data/app/assets/javascripts/bootstrap.js.coffee +4 -0
- data/app/assets/javascripts/calendar.js +25 -0
- data/app/assets/javascripts/chosen.jquery.js +898 -0
- data/app/assets/javascripts/client_login/clients.js.coffee +3 -0
- data/app/assets/javascripts/client_login/reports.js.coffee +3 -0
- data/app/assets/javascripts/comments.js +16 -0
- data/app/assets/javascripts/css_browser_selector.js +8 -0
- data/app/assets/javascripts/dashboard.js +3 -0
- data/app/assets/javascripts/data_vaults.js.coffee +3 -0
- data/app/assets/javascripts/file_attachments.js +9 -0
- data/app/assets/javascripts/jquery-tagselector.js +50 -0
- data/app/assets/javascripts/jquery-ui-1.8.16.custom.min.js +791 -0
- data/app/assets/javascripts/jquery.jeditable.js +543 -0
- data/app/assets/javascripts/jquery_ujs.js +336 -0
- data/app/assets/javascripts/schedule_modal.js +25 -0
- data/app/assets/javascripts/specify_project.js +21 -0
- data/app/assets/javascripts/ticket_board.js +104 -0
- data/app/assets/stylesheets/_jquery-ui-1.8.16.custom.css +568 -0
- data/app/assets/stylesheets/application.css +7 -0
- data/app/assets/stylesheets/bootstrap_and_overrides.css.scss +41 -0
- data/app/assets/stylesheets/chosen.css +367 -0
- data/app/assets/stylesheets/client_login/clients.css.scss +3 -0
- data/app/assets/stylesheets/client_login/reports.css.scss +3 -0
- data/app/assets/stylesheets/data_vaults.css.scss +3 -0
- data/app/assets/stylesheets/jquery-tagselector.css +49 -0
- data/app/assets/stylesheets/responsive.scss +650 -0
- data/app/assets/stylesheets/screen.scss +303 -0
- data/app/controllers/admin/base_controller.rb +18 -0
- data/app/controllers/admin/invoices_controller.rb +42 -0
- data/app/controllers/admin/payroll_controller.rb +29 -0
- data/app/controllers/admin/site_settings_controller.rb +19 -0
- data/app/controllers/admin/unentered_time_report_controller.rb +26 -0
- data/app/controllers/admin/users_controller.rb +86 -0
- data/app/controllers/admin/weekly_time_report_controller.rb +11 -0
- data/app/controllers/api/base_controller.rb +14 -0
- data/app/controllers/api/v1/base_controller.rb +2 -0
- data/app/controllers/api/v1/clients_controller.rb +10 -0
- data/app/controllers/api/v1/credentials_controller.rb +10 -0
- data/app/controllers/api/v1/projects_controller.rb +27 -0
- data/app/controllers/api/v1/tickets_controller.rb +46 -0
- data/app/controllers/api/v1/tokens_controller.rb +30 -0
- data/app/controllers/api/v1/work_units_controller.rb +23 -0
- data/app/controllers/client_login/base_controller.rb +3 -0
- data/app/controllers/client_login/clients_controller.rb +35 -0
- data/app/controllers/client_login/contacts_controller.rb +53 -0
- data/app/controllers/client_login/projects_controller.rb +24 -0
- data/app/controllers/client_login/reports_controller.rb +23 -0
- data/app/controllers/client_login/tickets_controller.rb +41 -0
- data/app/controllers/client_login/work_units_controller.rb +11 -0
- data/app/controllers/clients_controller.rb +103 -0
- data/app/controllers/comments_controller.rb +75 -0
- data/app/controllers/contacts_controller.rb +54 -0
- data/app/controllers/dashboard/base_controller.rb +79 -0
- data/app/controllers/data_vaults_controller.rb +12 -0
- data/app/controllers/doorkeeper/application_controller.rb +33 -0
- data/app/controllers/file_attachments_controller.rb +60 -0
- data/app/controllers/projects_controller.rb +62 -0
- data/app/controllers/tickets_controller.rb +48 -0
- data/app/controllers/users_controller.rb +57 -0
- data/app/controllers/work_units_controller.rb +114 -0
- data/app/controllers/xrono/application_controller.rb +65 -0
- data/app/helpers/admin/unentered_time_report_helper.rb +9 -0
- data/app/helpers/admin_base_helper.rb +14 -0
- data/app/helpers/clients_helper.rb +5 -0
- data/app/helpers/dashboard_helper.rb +9 -0
- data/app/helpers/gravatar_helper.rb +5 -0
- data/app/helpers/refurl_helper.rb +9 -0
- data/app/helpers/xrono/application_helper.rb +54 -0
- data/app/mailers/notifier.rb +18 -0
- data/app/models/chart_data.rb +20 -0
- data/app/models/client.rb +98 -0
- data/app/models/comment.rb +8 -0
- data/app/models/contact.rb +10 -0
- data/app/models/data_vault.rb +6 -0
- data/app/models/file_attachment.rb +8 -0
- data/app/models/project.rb +76 -0
- data/app/models/role.rb +3 -0
- data/app/models/roles_user.rb +4 -0
- data/app/models/site_settings.rb +4 -0
- data/app/models/ticket.rb +85 -0
- data/app/models/user.rb +147 -0
- data/app/models/weekly_time_report.rb +26 -0
- data/app/models/work_unit.rb +99 -0
- data/app/models/work_unit/finders.rb +67 -0
- data/app/views/admin/_nav.html.haml +1 -0
- data/app/views/admin/base/index.html.haml +3 -0
- data/app/views/admin/base/reports.html.haml +3 -0
- data/app/views/admin/invoices/index.html.haml +19 -0
- data/app/views/admin/invoices/show.html.haml +57 -0
- data/app/views/admin/payroll/index.html.haml +18 -0
- data/app/views/admin/payroll/show.html.haml +56 -0
- data/app/views/admin/site_settings/edit.html.haml +32 -0
- data/app/views/admin/unentered_time_report/_week_navigation.html.haml +6 -0
- data/app/views/admin/unentered_time_report/show.html.haml +16 -0
- data/app/views/admin/users/_form.html.haml +48 -0
- data/app/views/admin/users/_locked_users.html.haml +31 -0
- data/app/views/admin/users/_users_table.html.haml +25 -0
- data/app/views/admin/users/edit.html.haml +1 -0
- data/app/views/admin/users/index.html.haml +14 -0
- data/app/views/admin/users/locked_clients.html.haml +13 -0
- data/app/views/admin/users/locked_users.html.haml +13 -0
- data/app/views/admin/users/new.html.haml +1 -0
- data/app/views/admin/users/projects.html.haml +25 -0
- data/app/views/admin/users/unlocked_clients.html.haml +13 -0
- data/app/views/admin/weekly_time_report/_week_pagination.html.haml +11 -0
- data/app/views/admin/weekly_time_report/show.html.haml +41 -0
- data/app/views/client_login/_work_unit_index.haml +16 -0
- data/app/views/client_login/base/index.html.haml +18 -0
- data/app/views/client_login/clients/show.html.haml +32 -0
- data/app/views/client_login/contacts/_form.html.haml +34 -0
- data/app/views/client_login/contacts/edit.html.haml +4 -0
- data/app/views/client_login/contacts/index.html.haml +30 -0
- data/app/views/client_login/contacts/new.html.haml +5 -0
- data/app/views/client_login/contacts/show.html.haml +26 -0
- data/app/views/client_login/projects/_tickets.html.haml +31 -0
- data/app/views/client_login/projects/show.html.haml +8 -0
- data/app/views/client_login/reports/index.html.haml +4 -0
- data/app/views/client_login/reports/work_units.html.haml +96 -0
- data/app/views/client_login/tickets/_form.html.haml +33 -0
- data/app/views/client_login/tickets/new.html.haml +1 -0
- data/app/views/client_login/tickets/show.html.haml +23 -0
- data/app/views/client_login/work_units/show.html.haml +18 -0
- data/app/views/clients/_breadcrumbs.html.haml +2 -0
- data/app/views/clients/_clients_table.html.haml +24 -0
- data/app/views/clients/_form.html.haml +34 -0
- data/app/views/clients/_projects.html.haml +31 -0
- data/app/views/clients/edit.html.haml +1 -0
- data/app/views/clients/inactive_clients.html.haml +9 -0
- data/app/views/clients/index.html.haml +8 -0
- data/app/views/clients/new.html.haml +1 -0
- data/app/views/clients/show.html.haml +34 -0
- data/app/views/clients/suspended_clients.html.haml +8 -0
- data/app/views/comments/_comment.html.haml +46 -0
- data/app/views/comments/_comment_form.haml +29 -0
- data/app/views/comments/_comments.html.haml +3 -0
- data/app/views/contacts/_form.html.haml +34 -0
- data/app/views/contacts/edit.html.haml +1 -0
- data/app/views/contacts/index.html.haml +23 -0
- data/app/views/contacts/new.html.haml +1 -0
- data/app/views/contacts/show.html.haml +26 -0
- data/app/views/dashboard/base/_two_week_time_report.html.haml +13 -0
- data/app/views/dashboard/base/_week_pagination.html.haml +10 -0
- data/app/views/dashboard/base/calendar.html.haml +1 -0
- data/app/views/dashboard/base/calendar.js.erb +3 -0
- data/app/views/dashboard/base/index.html.haml +18 -0
- data/app/views/devise/confirmations/new.html.haml +9 -0
- data/app/views/devise/mailer/confirmation_instructions.html.haml +4 -0
- data/app/views/devise/mailer/reset_password_instructions.html.haml +6 -0
- data/app/views/devise/mailer/unlock_instructions.html.haml +5 -0
- data/app/views/devise/passwords/edit.html.haml +17 -0
- data/app/views/devise/passwords/new.html.haml +12 -0
- data/app/views/devise/registrations/edit.html.haml +36 -0
- data/app/views/devise/registrations/new.html.haml +32 -0
- data/app/views/devise/sessions/new.html.haml +22 -0
- data/app/views/devise/shared/_links.haml +15 -0
- data/app/views/devise/unlocks/new.html.haml +9 -0
- data/app/views/file_attachments/_file_attachment.html.haml +10 -0
- data/app/views/file_attachments/_file_attachment_combined.html.haml +30 -0
- data/app/views/file_attachments/_file_attachments.html.haml +5 -0
- data/app/views/file_attachments/new.html.haml +17 -0
- data/app/views/layouts/application.html.haml +32 -0
- data/app/views/layouts/doorkeeper.html.haml +31 -0
- data/app/views/notifier/daily.text.erb +8 -0
- data/app/views/notifier/work_unit_notification.text.erb +17 -0
- data/app/views/projects/_breadcrumbs.html.haml +5 -0
- data/app/views/projects/_form.html.haml +94 -0
- data/app/views/projects/_pie_chart_metrics.html.haml +4 -0
- data/app/views/projects/_specify.html.haml +11 -0
- data/app/views/projects/_ticket_table.html.haml +36 -0
- data/app/views/projects/edit.html.haml +2 -0
- data/app/views/projects/new.html.haml +2 -0
- data/app/views/projects/show.html.haml +57 -0
- data/app/views/shared/_calendar.html.haml +86 -0
- data/app/views/shared/_data_vault.html.haml +16 -0
- data/app/views/shared/_files_and_comments.html.haml +21 -0
- data/app/views/shared/_flashes.html.haml +10 -0
- data/app/views/shared/_javascripts.html.haml +8 -0
- data/app/views/shared/_menu.html.haml +14 -0
- data/app/views/shared/_user_roles.html.haml +7 -0
- data/app/views/shared/_work_unit_index.html.haml +24 -0
- data/app/views/tickets/_add_ticket.html.haml +27 -0
- data/app/views/tickets/_breadcrumbs.html.haml +8 -0
- data/app/views/tickets/_form.html.haml +40 -0
- data/app/views/tickets/_ticket_detail.html.haml +18 -0
- data/app/views/tickets/edit.html.haml +2 -0
- data/app/views/tickets/modal_new.html.haml +28 -0
- data/app/views/tickets/new.html.haml +1 -0
- data/app/views/tickets/show.html.haml +28 -0
- data/app/views/tickets/ticket_detail.html.haml +18 -0
- data/app/views/users/_change_password_form.haml +13 -0
- data/app/views/users/_user_head.html.haml +7 -0
- data/app/views/users/edit.haml +34 -0
- data/app/views/users/historical_time.html.haml +5 -0
- data/app/views/users/index.html.haml +18 -0
- data/app/views/users/show.html.haml +13 -0
- data/app/views/work_units/_add_work_unit.html.haml +81 -0
- data/app/views/work_units/_breadcrumbs.html.haml +11 -0
- data/app/views/work_units/_dashboard_line.html.haml +6 -0
- data/app/views/work_units/_edit_work_unit.haml +44 -0
- data/app/views/work_units/_shared_form.haml +40 -0
- data/app/views/work_units/edit.html.haml +2 -0
- data/app/views/work_units/index.html.haml +7 -0
- data/app/views/work_units/new.html.haml +6 -0
- data/app/views/work_units/show.html.haml +25 -0
- data/app/workers/daily_notifier_worker.rb +7 -0
- data/app/workers/work_unit_notifier_worker.rb +7 -0
- data/config.ru +7 -0
- data/config/admin_navigation.rb +71 -0
- data/config/admin_reports_navigation.rb +6 -0
- data/config/boot.rb +6 -0
- data/config/client_navigation.rb +64 -0
- data/config/cucumber.yml +8 -0
- data/config/initializers/00_requirements.rb +2 -0
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/devise.rb +144 -0
- data/config/initializers/doorkeeper.rb +32 -0
- data/config/initializers/doorkeeper_monkeypatch.rb +66 -0
- data/config/initializers/github_concern.rb +4 -0
- data/config/initializers/haml.rb +13 -0
- data/config/initializers/inflections.rb +10 -0
- data/config/initializers/load_controller_mixins.rb +1 -0
- data/config/initializers/mime_types.rb +5 -0
- data/config/initializers/paper_clip.rb +1 -0
- data/config/initializers/simple_navigation.rb +1 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/locales/devise.en.yml +39 -0
- data/config/locales/doorkeeper.en.yml +23 -0
- data/config/locales/en.yml +201 -0
- data/config/locales/faker.en.yml +48 -0
- data/config/navigation.rb +78 -0
- data/config/rackspace_cloudfiles.yml +14 -0
- data/config/routes.rb +113 -0
- data/config/secondary_navigation.rb +65 -0
- data/config/trinidad.yml +4 -0
- data/config/warble.rb +144 -0
- data/db/migrate/20100825165612_create_clients.rb +14 -0
- data/db/migrate/20100825185313_create_projects.rb +14 -0
- data/db/migrate/20100825223943_create_tickets.rb +16 -0
- data/db/migrate/20100902174920_create_work_units.rb +14 -0
- data/db/migrate/20100902190129_add_missing_fields_to_work_units.rb +13 -0
- data/db/migrate/20100904173839_add_guid_to_clients_projects_tickets_and_work_orders.rb +13 -0
- data/db/migrate/20100922181642_create_comments.rb +19 -0
- data/db/migrate/20100927180254_devise_create_users.rb +32 -0
- data/db/migrate/20100927184505_add_details_to_users.rb +13 -0
- data/db/migrate/20100927191329_add_user_to_work_units.rb +9 -0
- data/db/migrate/20100928163356_create_roles.rb +22 -0
- data/db/migrate/20100928203745_create_addresses.rb +19 -0
- data/db/migrate/20100928204544_create_contacts.rb +17 -0
- data/db/migrate/20101007175626_add_lockable_to_users.rb +11 -0
- data/db/migrate/20101020162216_add_paid_at_to_work_units_table.rb +9 -0
- data/db/migrate/20101020162516_add_check_number_to_work_units_table.rb +9 -0
- data/db/migrate/20101020215135_add_paid_field_to_work_units_table.rb +9 -0
- data/db/migrate/20101020215226_add_invoiced_field_to_work_units_table.rb +9 -0
- data/db/migrate/20101020215457_remove_paid_at_from_work_units_table.rb +9 -0
- data/db/migrate/20101020215624_remove_check_number_from_work_units_table.rb +9 -0
- data/db/migrate/20101025161443_add_invoiced_at_to_work_units_table.rb +9 -0
- data/db/migrate/20101026151900_add_initials_to_clients.rb +9 -0
- data/db/migrate/20101029145059_create_file_attachments.rb +18 -0
- data/db/migrate/20101030142615_add_guid_to_users.rb +9 -0
- data/db/migrate/20101102145137_add_paid_at_to_work_units.rb +9 -0
- data/db/migrate/20101112151337_add_active_to_comments.rb +9 -0
- data/db/migrate/20101119172727_add_recieves_email_to_contact.rb +10 -0
- data/db/migrate/20101122225423_projects_users.rb +11 -0
- data/db/migrate/20101129214537_remove_projects_users_table.rb +11 -0
- data/db/migrate/20101130225328_contact_receives_email.rb +9 -0
- data/db/migrate/20101202203051_add_address_to_contacts.rb +19 -0
- data/db/migrate/20101202214746_remove_address_table.rb +17 -0
- data/db/migrate/20101216214304_add_hours_type_to_work_unit.rb +9 -0
- data/db/migrate/20101217152455_add_effective_hours_to_work_units.rb +9 -0
- data/db/migrate/20101228154820_add_overtime_multiplier_to_clients_table.rb +9 -0
- data/db/migrate/20101228154951_add_overtime_multiplier_to_projects_table.rb +9 -0
- data/db/migrate/20101228155122_create_site_settings_table.rb +11 -0
- data/db/migrate/20110107190927_add_site_logo_columns_to_site_settings.rb +15 -0
- data/db/migrate/20110111155513_add_total_yearly_pto_per_user_to_site_settings.rb +9 -0
- data/db/migrate/20110111220015_add_not_valid_to_file_attachment.rb +9 -0
- data/db/migrate/20110125153818_add_fullwidth_to_users.rb +9 -0
- data/db/migrate/20110222162404_add_daily_target_hours_to_users.rb +9 -0
- data/db/migrate/20110310021732_add_client_to_site_settings.rb +9 -0
- data/db/migrate/20110630194044_add_expanded_calendar_to_user.rb +9 -0
- data/db/migrate/20110922175742_add_state_to_tickets.rb +9 -0
- data/db/migrate/20111212193345_add_estimated_hours_to_tickets.rb +5 -0
- data/db/migrate/20111216152557_add_client_boolean_to_user.rb +5 -0
- data/db/migrate/20111220193307_add_repo_and_branch_to_projects_and_ticket.rb +6 -0
- data/db/migrate/20111220193619_create_git_pushes.rb +9 -0
- data/db/migrate/20111220193620_create_git_commits.rb +10 -0
- data/db/migrate/20111220193621_add_user_id_to_git_push.rb +5 -0
- data/db/migrate/20111220193622_create_github_concernable_git_pushes.rb +11 -0
- data/db/migrate/20111227140859_add_token_to_user.rb +7 -0
- data/db/migrate/20120102185406_add_completed_boolean_to_ticket.rb +5 -0
- data/db/migrate/20120104132121_add_completed_to_project.rb +5 -0
- data/db/migrate/20120124184915_modify_project_for_new_git_integration.rb +11 -0
- data/db/migrate/20120125145833_add_rates_to_project.rb +6 -0
- data/db/migrate/20120126151009_create_data_vaults.rb +11 -0
- data/db/migrate/20120126151341_create_versions.rb +18 -0
- data/db/migrate/20120126154403_rename_column_data_to_encrypted_data.rb +8 -0
- data/db/migrate/20120221193022_add_index_to_user_id_on_work_units.rb +5 -0
- data/db/migrate/20120221195345_acts_as_taggable_on_migration.rb +30 -0
- data/db/migrate/20120320212313_remove_timestamps_from_roles_users_table.rb +11 -0
- data/db/migrate/20120710034831_create_doorkeeper_tables.rb +42 -0
- data/db/migrate/20121021122002_add_missing_indices.rb +21 -0
- data/doc/website/favicon.ico +0 -0
- data/doc/website/images/clock_box.png +0 -0
- data/doc/website/images/demo.png +0 -0
- data/doc/website/images/download.png +0 -0
- data/doc/website/images/fork_me.png +0 -0
- data/doc/website/images/lightbox-blank.gif +0 -0
- data/doc/website/images/lightbox-btn-close.gif +0 -0
- data/doc/website/images/lightbox-btn-next.gif +0 -0
- data/doc/website/images/lightbox-btn-prev.gif +0 -0
- data/doc/website/images/lightbox-ico-loading.gif +0 -0
- data/doc/website/images/main_bg.png +0 -0
- data/doc/website/images/nav_bg.png +0 -0
- data/doc/website/images/screen_1.png +0 -0
- data/doc/website/images/screen_2.png +0 -0
- data/doc/website/images/screen_3.png +0 -0
- data/doc/website/images/screen_4.png +0 -0
- data/doc/website/images/screen_5.png +0 -0
- data/doc/website/images/screen_6.png +0 -0
- data/doc/website/images/support.png +0 -0
- data/doc/website/images/thumb_1.png +0 -0
- data/doc/website/images/thumb_2.png +0 -0
- data/doc/website/images/thumb_3.png +0 -0
- data/doc/website/images/thumb_4.png +0 -0
- data/doc/website/images/thumb_5.png +0 -0
- data/doc/website/images/thumb_6.png +0 -0
- data/doc/website/images/xrono_logo.png +0 -0
- data/doc/website/index.html +274 -0
- data/doc/website/javascripts/application.js +18 -0
- data/doc/website/javascripts/greyscalebasic_regular.typeface.js +1 -0
- data/doc/website/javascripts/jquery.lightbox-0.5.min.js +42 -0
- data/doc/website/javascripts/jquery.min.js +32 -0
- data/doc/website/javascripts/jquery.tweet.js +181 -0
- data/doc/website/javascripts/typeface.js +873 -0
- data/doc/website/javascripts/verdana_regular.typeface.js +1 -0
- data/doc/website/stylesheets/jquery.lightbox.css +104 -0
- data/doc/website/stylesheets/jquery.tweet.css +38 -0
- data/doc/website/stylesheets/reset-fonts-grids.css +32 -0
- data/doc/website/stylesheets/screen.css +228 -0
- data/doc/xrono_dash.png +0 -0
- data/doc/xrono_ticket.png +0 -0
- data/features/admin/invoices.feature +37 -0
- data/features/admin/manage_users.feature +17 -0
- data/features/admin/payroll.feature +64 -0
- data/features/admin/roles.feature +9 -0
- data/features/admin/site_settings.feature +19 -0
- data/features/admin/unentered_time_report.feature +38 -0
- data/features/admin/weekly_time_report.feature +14 -0
- data/features/api/v1/clients_controller.feature +58 -0
- data/features/authorization-admin.feature +34 -0
- data/features/authorization-non-admin.feature +38 -0
- data/features/client_login.feature +15 -0
- data/features/collaborative_work_units.feature +112 -0
- data/features/daily_emails.feature +11 -0
- data/features/dashboard.feature +74 -0
- data/features/manage_clients.feature +116 -0
- data/features/manage_comments.feature +30 -0
- data/features/manage_contacts.feature +56 -0
- data/features/manage_file_attachments.feature +51 -0
- data/features/manage_projects.feature +92 -0
- data/features/manage_self.feature +48 -0
- data/features/manage_tickets.feature +74 -0
- data/features/manage_users.feature +76 -0
- data/features/manage_work_units.feature +115 -0
- data/features/mockups/images/asset-tracker-client-show.png +0 -0
- data/features/mockups/images/asset-tracker.png +0 -0
- data/features/mockups/images/ixi - asset tracker v3 homepage - no time entered modal.png +0 -0
- data/features/mockups/images/ixi - asset tracker v3 homepage - schedule on modal.png +0 -0
- data/features/mockups/images/ixi - asset tracker v3 homepage.png +0 -0
- data/features/mockups/ixi - asset tracker v3 homepage - no time entered modal.bmml +194 -0
- data/features/mockups/ixi - asset tracker v3 homepage - schedule on modal.bmml +208 -0
- data/features/mockups/ixi - asset tracker v3 homepage.bmml +172 -0
- data/features/project_assignment.feature +69 -0
- data/features/search_work_units.feature +38 -0
- data/features/step_definitions/calendar_expansion_steps.rb +7 -0
- data/features/step_definitions/client_login_steps.rb +8 -0
- data/features/step_definitions/client_steps.rb +29 -0
- data/features/step_definitions/comment_steps.rb +4 -0
- data/features/step_definitions/contact_steps.rb +22 -0
- data/features/step_definitions/debug_steps.rb +5 -0
- data/features/step_definitions/devise_steps.rb +26 -0
- data/features/step_definitions/email_steps.rb +74 -0
- data/features/step_definitions/file_attachment_steps.rb +8 -0
- data/features/step_definitions/modified_web_steps.rb +25 -0
- data/features/step_definitions/pickle_steps.rb +101 -0
- data/features/step_definitions/project_steps.rb +32 -0
- data/features/step_definitions/search_steps.rb +3 -0
- data/features/step_definitions/ticket_board_steps.rb +39 -0
- data/features/step_definitions/ticket_detail_steps.rb +9 -0
- data/features/step_definitions/ticket_steps.rb +12 -0
- data/features/step_definitions/unentered_time_report_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +43 -0
- data/features/step_definitions/web_steps.rb +274 -0
- data/features/step_definitions/weekly_time_report_steps.rb +7 -0
- data/features/step_definitions/work_unit_index_steps.rb +8 -0
- data/features/step_definitions/work_unit_steps.rb +39 -0
- data/features/support/email.rb +21 -0
- data/features/support/env.rb +80 -0
- data/features/support/paths.rb +96 -0
- data/features/support/pickle.rb +26 -0
- data/features/support/selectors.rb +51 -0
- data/features/support/xrono.rb +19 -0
- data/features/work_unit_notifier.feature +11 -0
- data/lib/controller_mixins.rb +5 -0
- data/lib/controller_mixins/authorization.rb +15 -0
- data/lib/controller_mixins/contacts.rb +37 -0
- data/lib/controller_mixins/generic.rb +15 -0
- data/lib/controller_mixins/tickets.rb +35 -0
- data/lib/controller_mixins/work_units.rb +13 -0
- data/lib/date_ext.rb +16 -0
- data/lib/guid_referenced.rb +19 -0
- data/lib/tasks/.gitkeep +0 -0
- data/lib/tasks/acts_as_commentable_tasks.rake +4 -0
- data/lib/tasks/cucumber.rake +65 -0
- data/lib/tasks/git_repo_tasks.rake +47 -0
- data/lib/tasks/notifications.rake +8 -0
- data/lib/tasks/paperclip_tasks.rake +79 -0
- data/lib/xrono.rb +1 -0
- data/lib/xrono/engine.rb +45 -0
- data/public/404.html +26 -0
- data/public/422.html +26 -0
- data/public/500.html +26 -0
- data/public/favicon.ico +0 -0
- data/public/favicon.psd +0 -0
- data/public/robots.txt +5 -0
- data/public/stylesheets/.gitkeep +0 -0
- data/public/stylesheets/ie.css +53 -0
- data/public/stylesheets/print.css +57 -0
- data/public/stylesheets/screen.css +182 -0
- data/script/cucumber +10 -0
- data/script/rails +6 -0
- data/spec/blueprints.rb +86 -0
- data/spec/controllers/api/v1/clients_controller_spec.rb +41 -0
- data/spec/controllers/api/v1/projects_controller_spec.rb +54 -0
- data/spec/controllers/api/v1/tickets_controller_spec.rb +122 -0
- data/spec/controllers/api/v1/tokens_controller_spec.rb +52 -0
- data/spec/controllers/client_login/clients_controller_spec.rb +5 -0
- data/spec/controllers/client_login/reports_controller_spec.rb +5 -0
- data/spec/controllers/data_vaults_controller_spec.rb +5 -0
- data/spec/internal/app/controllers/application_controller.rb +5 -0
- data/spec/internal/config/admin_navigation.rb +71 -0
- data/spec/internal/config/database.yml +14 -0
- data/spec/internal/config/database.yml.example +20 -0
- data/spec/internal/config/database.yml.mysql +20 -0
- data/spec/internal/config/database.yml.mysql.jruby +20 -0
- data/spec/internal/config/database.yml.postgres +20 -0
- data/spec/internal/config/database.yml.postgres.jruby +20 -0
- data/spec/internal/config/navigation.rb +80 -0
- data/spec/internal/config/routes.rb +3 -0
- data/spec/internal/config/secondary_navigation.rb +65 -0
- data/spec/internal/db/schema.rb +296 -0
- data/spec/internal/log/.gitignore +1 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/internal/public/system/attachment_files/2/original/tmp.txt +1 -0
- data/spec/internal/public/system/attachment_files/3/original/tmp.txt +1 -0
- data/spec/lib/date_ext_spec.rb +40 -0
- data/spec/mailers/notifier_spec.rb +9 -0
- data/spec/models/client_spec.rb +167 -0
- data/spec/models/contact_spec.rb +29 -0
- data/spec/models/data_vault_spec.rb +5 -0
- data/spec/models/project_spec.rb +115 -0
- data/spec/models/ticket_spec.rb +223 -0
- data/spec/models/user_spec.rb +258 -0
- data/spec/models/work_unit_spec.rb +467 -0
- data/spec/spec_helper.rb +44 -0
- data/spec/support/xrono/macros.rb +15 -0
- data/vendor/plugins/.gitkeep +0 -0
- data/xrono.gemspec +50 -0
- metadata +1209 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Configures your navigation
|
|
3
|
+
SimpleNavigation::Configuration.run do |navigation|
|
|
4
|
+
# Specify a custom renderer if needed.
|
|
5
|
+
# The default renderer is SimpleNavigation::Renderer::List which renders HTML lists.
|
|
6
|
+
# The renderer can also be specified as option in the render_navigation call.
|
|
7
|
+
# navigation.renderer = Your::Custom::Renderer
|
|
8
|
+
|
|
9
|
+
# Specify the class that will be applied to active navigation items. Defaults to 'selected'
|
|
10
|
+
# navigation.selected_class = 'your_selected_class'
|
|
11
|
+
|
|
12
|
+
# Specify the class that will be applied to the current leaf of
|
|
13
|
+
# active navigation items. Defaults to 'simple-navigation-active-leaf'
|
|
14
|
+
# navigation.active_leaf_class = 'your_active_leaf_class'
|
|
15
|
+
|
|
16
|
+
# Item keys are normally added to list items as id.
|
|
17
|
+
# This setting turns that off
|
|
18
|
+
# navigation.autogenerate_item_ids = false
|
|
19
|
+
|
|
20
|
+
# You can override the default logic that is used to autogenerate the item ids.
|
|
21
|
+
# To do this, define a Proc which takes the key of the current item as argument.
|
|
22
|
+
# The example below would add a prefix to each key.
|
|
23
|
+
# navigation.id_generator = Proc.new {|key| "my-prefix-#{key}"}
|
|
24
|
+
|
|
25
|
+
# If you need to add custom html around item names, you can define a proc that will be called with the name you pass in to the navigation.
|
|
26
|
+
# The example below shows how to wrap items spans.
|
|
27
|
+
# navigation.name_generator = Proc.new {|name| "<span>#{name}</span>"}
|
|
28
|
+
|
|
29
|
+
# The auto highlight feature is turned on by default.
|
|
30
|
+
# This turns it off globally (for the whole plugin)
|
|
31
|
+
# navigation.auto_highlight = false
|
|
32
|
+
|
|
33
|
+
# Define the primary navigation
|
|
34
|
+
navigation.items do |primary|
|
|
35
|
+
# Add an item to the primary navigation. The following params apply:
|
|
36
|
+
# key - a symbol which uniquely defines your navigation item in the scope of the primary_navigation
|
|
37
|
+
# name - will be displayed in the rendered navigation. This can also be a call to your I18n-framework.
|
|
38
|
+
# url - the address that the generated item links to. You can also use url_helpers (named routes, restful routes helper, url_for etc.)
|
|
39
|
+
# options - can be used to specify attributes that will be included in the rendered navigation item (e.g. id, class etc.)
|
|
40
|
+
# some special options that can be set:
|
|
41
|
+
# :if - Specifies a proc to call to determine if the item should
|
|
42
|
+
# be rendered (e.g. <tt>:if => Proc.new { current_user.admin? }</tt>). The
|
|
43
|
+
# proc should evaluate to a true or false value and is evaluated in the context of the view.
|
|
44
|
+
# :unless - Specifies a proc to call to determine if the item should not
|
|
45
|
+
# be rendered (e.g. <tt>:unless => Proc.new { current_user.admin? }</tt>). The
|
|
46
|
+
# proc should evaluate to a true or false value and is evaluated in the context of the view.
|
|
47
|
+
# :method - Specifies the http-method for the generated link - default is :get.
|
|
48
|
+
# :highlights_on - if autohighlighting is turned off and/or you want to explicitly specify
|
|
49
|
+
# when the item should be highlighted, you can set a regexp which is matched
|
|
50
|
+
# against the current URI. You may also use a proc, or the symbol <tt>:subpath</tt>.
|
|
51
|
+
#
|
|
52
|
+
primary.item :edit_user, t(:edit_profile), edit_user_path(current_user)
|
|
53
|
+
primary.item :logout, t(:logout), destroy_user_session_path
|
|
54
|
+
|
|
55
|
+
primary.dom_class = 'dropdown-menu'
|
|
56
|
+
|
|
57
|
+
# you can also specify a css id or class to attach to this particular level
|
|
58
|
+
# works for all levels of the menu
|
|
59
|
+
# primary.dom_id = 'menu-id'
|
|
60
|
+
# primary.dom_class = 'menu-class'
|
|
61
|
+
|
|
62
|
+
# You can turn off auto highlighting for a specific level
|
|
63
|
+
# primary.auto_highlight = false
|
|
64
|
+
end
|
|
65
|
+
end
|
data/config/trinidad.yml
ADDED
data/config/warble.rb
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Disable Rake-environment-task framework detection by uncommenting/setting to false
|
|
2
|
+
# Warbler.framework_detection = false
|
|
3
|
+
|
|
4
|
+
# Warbler web application assembly configuration file
|
|
5
|
+
Warbler::Config.new do |config|
|
|
6
|
+
# Features: additional options controlling how the jar is built.
|
|
7
|
+
# Currently the following features are supported:
|
|
8
|
+
# - gemjar: package the gem repository in a jar file in WEB-INF/lib
|
|
9
|
+
# - executable: embed a web server and make the war executable
|
|
10
|
+
# - compiled: compile .rb files to .class files
|
|
11
|
+
# config.features = %w(gemjar)
|
|
12
|
+
|
|
13
|
+
# Application directories to be included in the webapp.
|
|
14
|
+
config.dirs = %w(app config lib log vendor tmp)
|
|
15
|
+
|
|
16
|
+
# Additional files/directories to include, above those in config.dirs
|
|
17
|
+
# config.includes = FileList["db"]
|
|
18
|
+
|
|
19
|
+
# Additional files/directories to exclude
|
|
20
|
+
# config.excludes = FileList["lib/tasks/*"]
|
|
21
|
+
|
|
22
|
+
# Additional Java .jar files to include. Note that if .jar files are placed
|
|
23
|
+
# in lib (and not otherwise excluded) then they need not be mentioned here.
|
|
24
|
+
# JRuby and JRuby-Rack are pre-loaded in this list. Be sure to include your
|
|
25
|
+
# own versions if you directly set the value
|
|
26
|
+
# config.java_libs += FileList["lib/java/*.jar"]
|
|
27
|
+
|
|
28
|
+
# Loose Java classes and miscellaneous files to be included.
|
|
29
|
+
# config.java_classes = FileList["target/classes/**.*"]
|
|
30
|
+
|
|
31
|
+
# One or more pathmaps defining how the java classes should be copied into
|
|
32
|
+
# the archive. The example pathmap below accompanies the java_classes
|
|
33
|
+
# configuration above. See http://rake.rubyforge.org/classes/String.html#M000017
|
|
34
|
+
# for details of how to specify a pathmap.
|
|
35
|
+
# config.pathmaps.java_classes << "%{target/classes/,}p"
|
|
36
|
+
|
|
37
|
+
# Bundler support is built-in. If Warbler finds a Gemfile in the
|
|
38
|
+
# project directory, it will be used to collect the gems to bundle
|
|
39
|
+
# in your application. If you wish to explicitly disable this
|
|
40
|
+
# functionality, uncomment here.
|
|
41
|
+
# config.bundler = false
|
|
42
|
+
|
|
43
|
+
# An array of Bundler groups to avoid including in the war file.
|
|
44
|
+
# Defaults to ["development", "test"].
|
|
45
|
+
# config.bundle_without = []
|
|
46
|
+
|
|
47
|
+
# Other gems to be included. If you don't use Bundler or a gemspec
|
|
48
|
+
# file, you need to tell Warbler which gems your application needs
|
|
49
|
+
# so that they can be packaged in the archive.
|
|
50
|
+
# For Rails applications, the Rails gems are included by default
|
|
51
|
+
# unless the vendor/rails directory is present.
|
|
52
|
+
# config.gems += ["activerecord-jdbcmysql-adapter", "jruby-openssl"]
|
|
53
|
+
# config.gems << "tzinfo"
|
|
54
|
+
|
|
55
|
+
# Uncomment this if you don't want to package rails gem.
|
|
56
|
+
# config.gems -= ["rails"]
|
|
57
|
+
|
|
58
|
+
# The most recent versions of gems are used.
|
|
59
|
+
# You can specify versions of gems by using a hash assignment:
|
|
60
|
+
# config.gems["rails"] = "2.3.10"
|
|
61
|
+
|
|
62
|
+
# You can also use regexps or Gem::Dependency objects for flexibility or
|
|
63
|
+
# finer-grained control.
|
|
64
|
+
# config.gems << /^merb-/
|
|
65
|
+
# config.gems << Gem::Dependency.new("merb-core", "= 0.9.3")
|
|
66
|
+
|
|
67
|
+
# Include gem dependencies not mentioned specifically. Default is
|
|
68
|
+
# true, uncomment to turn off.
|
|
69
|
+
# config.gem_dependencies = false
|
|
70
|
+
|
|
71
|
+
# Array of regular expressions matching relative paths in gems to be
|
|
72
|
+
# excluded from the war. Defaults to empty, but you can set it like
|
|
73
|
+
# below, which excludes test files.
|
|
74
|
+
# config.gem_excludes = [/^(test|spec)\//]
|
|
75
|
+
|
|
76
|
+
# Pathmaps for controlling how application files are copied into the archive
|
|
77
|
+
# config.pathmaps.application = ["WEB-INF/%p"]
|
|
78
|
+
|
|
79
|
+
# Name of the archive (without the extension). Defaults to the basename
|
|
80
|
+
# of the project directory.
|
|
81
|
+
# config.jar_name = "mywar"
|
|
82
|
+
|
|
83
|
+
# Name of the MANIFEST.MF template for the war file. Defaults to a simple
|
|
84
|
+
# MANIFEST.MF that contains the version of Warbler used to create the war file.
|
|
85
|
+
# config.manifest_file = "config/MANIFEST.MF"
|
|
86
|
+
|
|
87
|
+
# When using the 'compiled' feature and specified, only these Ruby
|
|
88
|
+
# files will be compiled. Default is to compile all \.rb files in
|
|
89
|
+
# the application.
|
|
90
|
+
# config.compiled_ruby_files = FileList['app/**/*.rb']
|
|
91
|
+
|
|
92
|
+
# === War files only below here ===
|
|
93
|
+
|
|
94
|
+
# Path to the pre-bundled gem directory inside the war file. Default
|
|
95
|
+
# is 'WEB-INF/gems'. Specify path if gems are already bundled
|
|
96
|
+
# before running Warbler. This also sets 'gem.path' inside web.xml.
|
|
97
|
+
# config.gem_path = "WEB-INF/vendor/bundler_gems"
|
|
98
|
+
|
|
99
|
+
# Files for WEB-INF directory (next to web.xml). This contains
|
|
100
|
+
# web.xml by default. If there is an .erb-File it will be processed
|
|
101
|
+
# with webxml-config. You may want to exclude this file via
|
|
102
|
+
# config.excludes.
|
|
103
|
+
# config.webinf_files += FileList["jboss-web.xml"]
|
|
104
|
+
|
|
105
|
+
# Files to be included in the root of the webapp. Note that files in public
|
|
106
|
+
# will have the leading 'public/' part of the path stripped during staging.
|
|
107
|
+
# config.public_html = FileList["public/**/*", "doc/**/*"]
|
|
108
|
+
|
|
109
|
+
# Pathmaps for controlling how public HTML files are copied into the .war
|
|
110
|
+
# config.pathmaps.public_html = ["%{public/,}p"]
|
|
111
|
+
|
|
112
|
+
# Value of RAILS_ENV for the webapp -- default as shown below
|
|
113
|
+
# config.webxml.rails.env = ENV['RAILS_ENV'] || 'production'
|
|
114
|
+
|
|
115
|
+
# Application booter to use, one of :rack, :rails, or :merb (autodetected by default)
|
|
116
|
+
# config.webxml.booter = :rails
|
|
117
|
+
|
|
118
|
+
# Set JRuby to run in 1.9 mode.
|
|
119
|
+
config.webxml.jruby.compat.version = "1.9"
|
|
120
|
+
|
|
121
|
+
# When using the :rack booter, "Rackup" script to use.
|
|
122
|
+
# - For 'rackup.path', the value points to the location of the rackup
|
|
123
|
+
# script in the web archive file. You need to make sure this file
|
|
124
|
+
# gets included in the war, possibly by adding it to config.includes
|
|
125
|
+
# or config.webinf_files above.
|
|
126
|
+
# - For 'rackup', the rackup script you provide as an inline string
|
|
127
|
+
# is simply embedded in web.xml.
|
|
128
|
+
# The script is evaluated in a Rack::Builder to load the application.
|
|
129
|
+
# Examples:
|
|
130
|
+
# config.webxml.rackup.path = 'WEB-INF/hello.ru'
|
|
131
|
+
# config.webxml.rackup = %{require './lib/demo'; run Rack::Adapter::Camping.new(Demo)}
|
|
132
|
+
# config.webxml.rackup = require 'cgi' && CGI::escapeHTML(File.read("config.ru"))
|
|
133
|
+
|
|
134
|
+
# Control the pool of Rails runtimes. Leaving unspecified means
|
|
135
|
+
# the pool will grow as needed to service requests. It is recommended
|
|
136
|
+
# that you fix these values when running a production server!
|
|
137
|
+
# If you're using threadsafe! mode, you probably don't want to set these values,
|
|
138
|
+
# since 1 runtime(default for threadsafe mode) will be enough.
|
|
139
|
+
# config.webxml.jruby.min.runtimes = 2
|
|
140
|
+
# config.webxml.jruby.max.runtimes = 4
|
|
141
|
+
|
|
142
|
+
# JNDI data source name
|
|
143
|
+
# config.webxml.jndi = 'jdbc/rails'
|
|
144
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class CreateTickets < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :tickets do |t|
|
|
4
|
+
t.integer :project_id
|
|
5
|
+
t.string :priority
|
|
6
|
+
t.string :name
|
|
7
|
+
t.text :description
|
|
8
|
+
|
|
9
|
+
t.timestamps
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.down
|
|
14
|
+
drop_table :tickets
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class AddMissingFieldsToWorkUnits < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
add_column :work_units, :hours, :decimal, :precision => 10, :scale => 2
|
|
4
|
+
add_column :work_units, :overtime, :boolean
|
|
5
|
+
add_column :work_units, :scheduled_at, :datetime
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.down
|
|
9
|
+
remove_column :work_units, :scheduled_at
|
|
10
|
+
remove_column :work_units, :overtime
|
|
11
|
+
remove_column :work_units, :hours
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class AddGuidToClientsProjectsTicketsAndWorkOrders < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
[:clients, :projects, :tickets, :work_units].each do |key|
|
|
4
|
+
add_column key, :guid, :string
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.down
|
|
9
|
+
[:clients, :projects, :tickets, :work_units].each do |key|
|
|
10
|
+
remove_column key, :guid
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class CreateComments < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :comments do |t|
|
|
4
|
+
t.string :title, :limit => 50, :default => ""
|
|
5
|
+
t.text :comment
|
|
6
|
+
t.references :commentable, :polymorphic => true
|
|
7
|
+
t.references :user
|
|
8
|
+
t.timestamps
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
add_index :comments, :commentable_type
|
|
12
|
+
add_index :comments, :commentable_id
|
|
13
|
+
add_index :comments, :user_id
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.down
|
|
17
|
+
drop_table :comments
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
class DeviseCreateUsers < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table(:users) do |t|
|
|
4
|
+
t.string :email, :null => false, :default => ""
|
|
5
|
+
t.string :encrypted_password, :null => false, :default => ""
|
|
6
|
+
t.string :reset_password_token
|
|
7
|
+
t.datetime :reset_password_sent_at
|
|
8
|
+
t.datetime :remember_created_at
|
|
9
|
+
t.integer :sign_in_count, :default => 0
|
|
10
|
+
t.datetime :current_sign_in_at
|
|
11
|
+
t.datetime :last_sign_in_at
|
|
12
|
+
t.string :current_sign_in_ip
|
|
13
|
+
t.string :last_sign_in_ip
|
|
14
|
+
|
|
15
|
+
# t.confirmable
|
|
16
|
+
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
|
|
17
|
+
# t.token_authenticatable
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
t.timestamps
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
add_index :users, :email, :unique => true
|
|
24
|
+
add_index :users, :reset_password_token, :unique => true
|
|
25
|
+
# add_index :users, :confirmation_token, :unique => true
|
|
26
|
+
# add_index :users, :unlock_token, :unique => true
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.down
|
|
30
|
+
drop_table :users
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class AddDetailsToUsers < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
add_column :users, :first_name, :string
|
|
4
|
+
add_column :users, :last_name, :string
|
|
5
|
+
add_column :users, :middle_initial, :string
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.down
|
|
9
|
+
remove_column :users, :middle_initial
|
|
10
|
+
remove_column :users, :last_name
|
|
11
|
+
remove_column :users, :first_name
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class CreateRoles < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table "roles", :force => true do |t|
|
|
4
|
+
t.string :name, :limit => 40
|
|
5
|
+
t.string :authorizable_type, :limit => 40
|
|
6
|
+
t.integer :authorizable_id
|
|
7
|
+
t.timestamps
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
create_table "roles_users", :id => false, :force => true do |t|
|
|
11
|
+
t.references :user
|
|
12
|
+
t.references :role
|
|
13
|
+
t.timestamps
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.down
|
|
18
|
+
drop_table "roles_users"
|
|
19
|
+
|
|
20
|
+
drop_table "roles"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class CreateAddresses < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :addresses do |t|
|
|
4
|
+
t.string :address1
|
|
5
|
+
t.string :address2
|
|
6
|
+
t.string :city
|
|
7
|
+
t.string :state, :limit => 2
|
|
8
|
+
t.string :zipcode
|
|
9
|
+
|
|
10
|
+
t.references :addressable, :polymorphic => true
|
|
11
|
+
|
|
12
|
+
t.timestamps
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.down
|
|
17
|
+
drop_table :addresses
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class CreateContacts < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :contacts do |t|
|
|
4
|
+
t.string :first_name
|
|
5
|
+
t.string :last_name
|
|
6
|
+
t.string :email_address
|
|
7
|
+
t.string :phone_number
|
|
8
|
+
t.integer :client_id
|
|
9
|
+
|
|
10
|
+
t.timestamps
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.down
|
|
15
|
+
drop_table :contacts
|
|
16
|
+
end
|
|
17
|
+
end
|