backlog 0.37.2 → 0.41.4
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.
- checksums.yaml +7 -0
- data/History.txt +128 -0
- data/README.txt +4 -2
- data/bin/backlog +1 -1
- data/lib/array_helper.rb +4 -4
- data/{vendor/plugins → lib}/backlog_jira/README +0 -0
- data/{vendor/plugins → lib}/backlog_jira/Rakefile +0 -0
- data/{vendor/plugins → lib}/backlog_jira/generators/backlog_jira/backlog_jira_generator.rb +0 -0
- data/{vendor/plugins → lib}/backlog_jira/generators/backlog_jira/templates/migration.rb +0 -0
- data/{vendor/plugins → lib}/backlog_jira/generators/history_model/history_model_generator.rb +0 -0
- data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/fixtures.yml +0 -0
- data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/functional_test.rb +0 -0
- data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/model.rb +0 -0
- data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/unit_test.rb +0 -0
- data/lib/backlog_jira/init.rb +66 -0
- data/{vendor/plugins → lib}/backlog_jira/install.rb +0 -0
- data/{vendor/plugins → lib}/backlog_jira/lib/backlog_jira.rb +0 -0
- data/{vendor/plugins → lib}/backlog_jira/lib/tasks/backlog_jira_tasks.rake +0 -0
- data/{vendor/plugins → lib}/backlog_jira/test/backlog_jira_test.rb +0 -0
- data/{vendor/plugins → lib}/backlog_jira/uninstall.rb +0 -0
- data/lib/big_decimal_yaml_fix.rb +16 -25
- data/lib/tasks/backup.rake +18 -18
- data/lib/time_extras.rb +6 -6
- data/lib/user_system.rb +41 -38
- data/lib/version_from_history.rb +2 -2
- metadata +196 -749
- data/Capfile +0 -2
- data/Gemfile +0 -34
- data/Gemfile.lock +0 -139
- data/MODIFICATIONS.txt +0 -13
- data/Manifest.txt +0 -0
- data/README_LOGIN_SUGAR +0 -194
- data/Rakefile +0 -73
- data/Rakefile~ +0 -73
- data/Screenshot.png +0 -0
- data/app/controllers/absences_controller.rb +0 -67
- data/app/controllers/application_controller.rb +0 -185
- data/app/controllers/application_controller.rb.rails2 +0 -186
- data/app/controllers/customers_controller.rb +0 -51
- data/app/controllers/dashboard_controller.rb +0 -17
- data/app/controllers/estimates_controller.rb +0 -49
- data/app/controllers/groups_controller.rb +0 -65
- data/app/controllers/parties_controller.rb +0 -33
- data/app/controllers/periods_controller.rb +0 -242
- data/app/controllers/projects_controller.rb +0 -185
- data/app/controllers/public_holidays_controller.rb +0 -70
- data/app/controllers/search_controller.rb +0 -15
- data/app/controllers/task_files_controller.rb +0 -19
- data/app/controllers/tasks_controller.rb +0 -305
- data/app/controllers/user_controller.rb +0 -251
- data/app/controllers/welcome_controller.rb +0 -29
- data/app/controllers/work_locks_controller.rb +0 -88
- data/app/controllers/works_controller.rb +0 -383
- data/app/helpers/absences_helper.rb +0 -2
- data/app/helpers/application_helper.rb +0 -119
- data/app/helpers/application_helper.rb.rails2 +0 -118
- data/app/helpers/customers_helper.rb +0 -2
- data/app/helpers/dashboard_helper.rb +0 -2
- data/app/helpers/estimates_helper.rb +0 -2
- data/app/helpers/groups_helper.rb +0 -2
- data/app/helpers/parties_helper.rb +0 -2
- data/app/helpers/periods_helper.rb +0 -57
- data/app/helpers/projects_helper.rb +0 -74
- data/app/helpers/public_holidays_helper.rb +0 -2
- data/app/helpers/search_helper.rb +0 -2
- data/app/helpers/task_files_helper.rb +0 -2
- data/app/helpers/tasks_helper.rb +0 -2
- data/app/helpers/user_helper.rb +0 -53
- data/app/helpers/welcome_helper.rb +0 -2
- data/app/helpers/work_locks_helper.rb +0 -2
- data/app/helpers/works_helper.rb +0 -5
- data/app/mailers/user_notify.rb +0 -76
- data/app/models/absence.rb +0 -27
- data/app/models/chart.rb +0 -5
- data/app/models/clock.rb +0 -14
- data/app/models/configuration.rb +0 -2
- data/app/models/customer.rb +0 -2
- data/app/models/estimate.rb +0 -17
- data/app/models/group.rb +0 -16
- data/app/models/party.rb +0 -27
- data/app/models/period.rb +0 -251
- data/app/models/project.rb +0 -49
- data/app/models/public_holiday.rb +0 -13
- data/app/models/report_filter.rb +0 -29
- data/app/models/search_result.rb +0 -8
- data/app/models/sidebar.rb +0 -41
- data/app/models/task.rb +0 -425
- data/app/models/task_file.rb +0 -7
- data/app/models/task_notify.rb +0 -27
- data/app/models/user.rb +0 -146
- data/app/models/work.rb +0 -191
- data/app/models/work_lock.rb +0 -11
- data/app/models/work_lock_nagger.rb +0 -60
- data/app/models/work_lock_notify.rb +0 -43
- data/app/models/works_report_filter.rb +0 -27
- data/app/views/absences/_form.rhtml +0 -10
- data/app/views/absences/edit.rhtml +0 -9
- data/app/views/absences/list.rhtml +0 -25
- data/app/views/absences/new.rhtml +0 -8
- data/app/views/absences/show.rhtml +0 -8
- data/app/views/customers/_form.rhtml +0 -7
- data/app/views/customers/_name_list.rhtml +0 -5
- data/app/views/customers/edit.rhtml +0 -9
- data/app/views/customers/list.rhtml +0 -28
- data/app/views/customers/new.rhtml +0 -8
- data/app/views/customers/show.rhtml +0 -8
- data/app/views/dashboard/show.rhtml +0 -24
- data/app/views/display_notice.rjs +0 -1
- data/app/views/groups/_form.rhtml +0 -7
- data/app/views/groups/edit.rhtml +0 -57
- data/app/views/groups/list.rhtml +0 -26
- data/app/views/groups/new.rhtml +0 -7
- data/app/views/groups/set_member.rjs +0 -1
- data/app/views/layouts/_headers.rhtml +0 -24
- data/app/views/layouts/_left_top.rhtml +0 -33
- data/app/views/layouts/_notice.rhtml +0 -12
- data/app/views/layouts/_shortcuts.rhtml +0 -22
- data/app/views/layouts/_shortcuts_js.rhtml +0 -19
- data/app/views/layouts/mwrt002.html.erb +0 -44
- data/app/views/layouts/wide.rhtml +0 -23
- data/app/views/periods/_burn_down_chart.rhtml +0 -9
- data/app/views/periods/_form.rhtml +0 -74
- data/app/views/periods/_link.rhtml +0 -3
- data/app/views/periods/_show_active.rhtml +0 -61
- data/app/views/periods/_sidebar_block.rhtml +0 -11
- data/app/views/periods/_title.rhtml +0 -18
- data/app/views/periods/edit.rhtml +0 -10
- data/app/views/periods/finish_task.rjs +0 -4
- data/app/views/periods/move_task_to_period.rjs +0 -4
- data/app/views/periods/new.rhtml +0 -9
- data/app/views/periods/order.rjs +0 -0
- data/app/views/periods/reopen_task.rjs +0 -6
- data/app/views/periods/show.rhtml +0 -56
- data/app/views/projects/_buttons.rhtml +0 -4
- data/app/views/projects/_form.rhtml +0 -44
- data/app/views/projects/_name_list.rhtml +0 -5
- data/app/views/projects/edit.rhtml +0 -14
- data/app/views/projects/finish_task.rjs +0 -3
- data/app/views/projects/list.rhtml +0 -16
- data/app/views/projects/move_task_to_period.rjs +0 -3
- data/app/views/projects/new.rhtml +0 -11
- data/app/views/projects/reopen_task.rjs +0 -3
- data/app/views/projects/show.rhtml +0 -39
- data/app/views/public_holidays/_form.rhtml +0 -7
- data/app/views/public_holidays/edit.rhtml +0 -9
- data/app/views/public_holidays/list.rhtml +0 -25
- data/app/views/public_holidays/new.rhtml +0 -8
- data/app/views/public_holidays/show.rhtml +0 -8
- data/app/views/redirect.rjs +0 -1
- data/app/views/search/results.rhtml +0 -40
- data/app/views/task_notify/invite.en.html.erb +0 -13
- data/app/views/task_notify/invite.no.html.erb +0 -13
- data/app/views/tasks/_backlog_header.rhtml +0 -17
- data/app/views/tasks/_completed.rhtml +0 -18
- data/app/views/tasks/_fields_header.rhtml +0 -13
- data/app/views/tasks/_form.rhtml +0 -125
- data/app/views/tasks/_invite.rjs +0 -1
- data/app/views/tasks/_period_header.rhtml +0 -1
- data/app/views/tasks/_task.rhtml +0 -116
- data/app/views/tasks/_update.rjs +0 -2
- data/app/views/tasks/edit.rhtml +0 -81
- data/app/views/tasks/grab.rhtml +0 -9
- data/app/views/tasks/invite.rhtml +0 -9
- data/app/views/tasks/list.rhtml +0 -77
- data/app/views/tasks/list_started.rhtml +0 -62
- data/app/views/tasks/new.rhtml +0 -10
- data/app/views/tasks/notes.rhtml +0 -12
- data/app/views/tasks/start_work.rjs +0 -1
- data/app/views/tasks/update_estimate.rjs +0 -3
- data/app/views/user/_edit.rhtml +0 -31
- data/app/views/user/_password.rhtml +0 -21
- data/app/views/user/change_password.rhtml +0 -19
- data/app/views/user/delete.rhtml +0 -14
- data/app/views/user/edit.rhtml +0 -154
- data/app/views/user/forgot_password.rhtml +0 -19
- data/app/views/user/login.rhtml +0 -33
- data/app/views/user/logout.rhtml +0 -8
- data/app/views/user/set_group.rjs +0 -1
- data/app/views/user/signup.rhtml +0 -15
- data/app/views/user/toggle_work_lock_monitoring.rjs +0 -2
- data/app/views/user/welcome.rhtml +0 -8
- data/app/views/user_notify/change_password.en.html.erb +0 -10
- data/app/views/user_notify/change_password.no.html.erb +0 -10
- data/app/views/user_notify/forgot_password.en.html.erb +0 -11
- data/app/views/user_notify/forgot_password.no.html.erb +0 -11
- data/app/views/user_notify/monitoring.en.html.erb +0 -3
- data/app/views/user_notify/monitoring.no.html.erb +0 -3
- data/app/views/user_notify/monitoring_invitation.en.html.erb +0 -7
- data/app/views/user_notify/monitoring_invitation.no.html.erb +0 -7
- data/app/views/user_notify/signup.en.html.erb +0 -12
- data/app/views/user_notify/signup.no.html.erb +0 -12
- data/app/views/work_lock_notify/lock.en.html.erb +0 -7
- data/app/views/work_lock_notify/lock.no.html.erb +0 -7
- data/app/views/work_lock_notify/nag.en.html.erb +0 -6
- data/app/views/work_lock_notify/nag.no.html.erb +0 -7
- data/app/views/work_locks/_form.rhtml +0 -10
- data/app/views/work_locks/edit.rhtml +0 -9
- data/app/views/work_locks/list.rhtml +0 -25
- data/app/views/work_locks/new.rhtml +0 -8
- data/app/views/work_locks/show.rhtml +0 -8
- data/app/views/works/_buttons.rhtml +0 -2
- data/app/views/works/_description_list.rhtml +0 -5
- data/app/views/works/_form.rhtml +0 -107
- data/app/views/works/_new_row.rhtml +0 -141
- data/app/views/works/_row.rhtml +0 -115
- data/app/views/works/_row_field.rhtml +0 -17
- data/app/views/works/_task_id_list.rhtml +0 -5
- data/app/views/works/_weekly_work_sheet_buttons.rhtml +0 -22
- data/app/views/works/daily_work_sheet.rhtml +0 -108
- data/app/views/works/edit.rhtml +0 -11
- data/app/views/works/list.rhtml +0 -148
- data/app/views/works/list_excel.rhtml +0 -114
- data/app/views/works/new.rhtml +0 -12
- data/app/views/works/show.rhtml +0 -10
- data/app/views/works/timeliste.rhtml +0 -884
- data/app/views/works/update_new_row.rjs +0 -28
- data/app/views/works/update_row.rjs +0 -18
- data/app/views/works/update_time.rjs +0 -3
- data/app/views/works/weekly_work_sheet.rhtml +0 -64
- data/app/views/works/weekly_work_sheet_details.rhtml +0 -102
- data/backlog.gemspec +0 -44
- data/config.ru +0 -4
- data/config/application.rb +0 -11
- data/config/boot.rb +0 -13
- data/config/database.yml +0 -15
- data/config/database.yml~ +0 -17
- data/config/environment.rb +0 -100
- data/config/environments/development.rb +0 -30
- data/config/environments/development.rb.rails2 +0 -26
- data/config/environments/production.rb +0 -33
- data/config/environments/test.rb +0 -24
- data/config/environments/user_environment.rb +0 -21
- data/config/initializers/backtrace_silencers.rb +0 -7
- data/config/initializers/inflections.rb +0 -10
- data/config/initializers/jdbc.rb +0 -7
- data/config/initializers/mime_types.rb +0 -5
- data/config/initializers/secret_token.rb +0 -7
- data/config/initializers/session_store.rb +0 -8
- data/config/locales/en.yml +0 -200
- data/config/locales/no.yml +0 -193
- data/config/mime_types.yaml +0 -1
- data/config/routes.rb +0 -5
- data/config/war.rb +0 -27
- data/config/warble.rb +0 -84
- data/cruise_build.sh +0 -14
- data/cruise_config.rb +0 -5
- data/db/migrate/001_create_tasks.rb +0 -22
- data/db/migrate/003_add_estimation_points.rb +0 -16
- data/db/migrate/004_add_period.rb +0 -63
- data/db/migrate/005_add_field_work_started_at.rb +0 -9
- data/db/migrate/006_works_data_fix.rb +0 -13
- data/db/migrate/007_add_task_created_at.rb +0 -23
- data/db/migrate/008_add_backlog_options.rb +0 -13
- data/db/migrate/009_add_subtasks.rb +0 -29
- data/db/migrate/010_add_work_start.rb +0 -9
- data/db/migrate/011_login_sugar.rb +0 -21
- data/db/migrate/012_add_resolution.rb +0 -12
- data/db/migrate/013_create_estimates.rb +0 -20
- data/db/migrate/014_add_customer_option.rb +0 -11
- data/db/migrate/015_add_user_option.rb +0 -33
- data/db/migrate/016_add_invoicable_flag.rb +0 -11
- data/db/migrate/017_increase_backlog_name_limit.rb +0 -10
- data/db/migrate/018_create_groups.rb +0 -118
- data/db/migrate/019_remove_unique_index_for_period_position.rb +0 -9
- data/db/migrate/020_create_task_files.rb +0 -17
- data/db/migrate/021_create_work_accounts.rb +0 -111
- data/db/migrate/022_remove_track_done_flag.rb +0 -9
- data/db/migrate/023_add_indices_for_burn_down_chart.rb +0 -13
- data/db/migrate/024_add_sprint_option.rb +0 -10
- data/db/migrate/025_add_simple_auditing_of_tasks.rb +0 -11
- data/db/migrate/026_add_users_to_tasks.rb +0 -14
- data/db/migrate/027_create_work_locks.rb +0 -25
- data/db/migrate/028_create_absences.rb +0 -34
- data/db/migrate/029_add_work_comments.rb +0 -9
- data/db/migrate/030_create_public_holidays.rb +0 -11
- data/db/migrate/031_expand_work_done_precision.rb +0 -9
- data/db/migrate/20100720124707_merge_work_account_into_backlog.rb +0 -74
- data/db/migrate/20101006092700_rename_backlogs_to_projects.rb +0 -22
- data/db/migrate/20101006092700_rename_backlogs_to_projects.rb~ +0 -22
- data/db/schema.rb +0 -159
- data/db/seeds.rb +0 -7
- data/db/test.db +0 -0
- data/etc/backlog.conf +0 -32
- data/ext/mkrf_conf.rb +0 -26
- data/lib/class_table_inheritance.rb +0 -224
- data/lib/postgresql-8.2-504.jdbc4.jar +0 -0
- data/lib/tasks/jdbc.rake +0 -8
- data/lib/url_for_fix.rb +0 -30
- data/nbproject/private/config.properties +0 -0
- data/nbproject/private/private.properties +0 -1
- data/nbproject/private/private.xml +0 -4
- data/nbproject/private/rake-t.txt +0 -95
- data/nbproject/project.properties +0 -4
- data/nbproject/project.xml +0 -9
- data/public/404.html +0 -26
- data/public/422.html +0 -26
- data/public/500.html +0 -26
- data/public/Frav/303/246rsskjema.xls +0 -0
- data/public/applets/bsf.jar +0 -0
- data/public/applets/jruby.jar +0 -0
- data/public/favicon.ico +0 -0
- data/public/images/add.png +0 -0
- data/public/images/add.svg +0 -70
- data/public/images/ajax-loading.gif +0 -0
- data/public/images/appunti_architetto_franc_01.svg +0 -92
- data/public/images/arrow-down.gif +0 -0
- data/public/images/arrow-up.gif +0 -0
- data/public/images/arrow07_2.png +0 -0
- data/public/images/arrow07_4.png +0 -0
- data/public/images/arrow_down.png +0 -0
- data/public/images/arrow_down.svg +0 -59
- data/public/images/arrow_left.png +0 -0
- data/public/images/arrow_left.svg +0 -59
- data/public/images/arrow_right.png +0 -0
- data/public/images/arrow_right.svg +0 -59
- data/public/images/arrow_up.png +0 -0
- data/public/images/arrow_up.svg +0 -59
- data/public/images/black-70.png +0 -0
- data/public/images/black.png +0 -0
- data/public/images/blank.jpg +0 -0
- data/public/images/blank.png +0 -0
- data/public/images/cestino_pieno_architetto_01.svg +0 -470
- data/public/images/checkmark.png +0 -0
- data/public/images/checkmark_org.png +0 -0
- data/public/images/clipboard.png +0 -0
- data/public/images/clipboard.svg +0 -62
- data/public/images/construction_hammer_jon__01.svg +0 -116
- data/public/images/delete.png +0 -0
- data/public/images/email.png +0 -0
- data/public/images/email_grey.png +0 -0
- data/public/images/eraser.png +0 -0
- data/public/images/eraser_org.png +0 -0
- data/public/images/ernes_stop.png +0 -0
- data/public/images/ernes_stop_org.png +0 -0
- data/public/images/flag_red.png +0 -0
- data/public/images/flag_yellow.png +0 -0
- data/public/images/grab.png +0 -0
- data/public/images/grab_gray.png +0 -0
- data/public/images/group.png +0 -0
- data/public/images/hammer.png +0 -0
- data/public/images/header.jpg +0 -0
- data/public/images/nextlabel.gif +0 -0
- data/public/images/pagebak.jpg +0 -0
- data/public/images/paper3.svg +0 -54
- data/public/images/period.png +0 -0
- data/public/images/period_org.png +0 -0
- data/public/images/person.org.png +0 -0
- data/public/images/prevlabel.gif +0 -0
- data/public/images/question.svg +0 -56
- data/public/images/rails.png +0 -0
- data/public/images/refresh.png +0 -0
- data/public/images/rmagick.gif +0 -0
- data/public/images/rmagick_270.gif +0 -0
- data/public/images/tabella_architetto_franc_01.svg +0 -105
- data/public/images/task.png +0 -0
- data/public/images/text-x-generic.png +0 -0
- data/public/images/user group.png +0 -0
- data/public/images/user.png +0 -0
- data/public/images/view_fullscreen.png +0 -0
- data/public/images/work_account.png +0 -0
- data/public/javascripts/application.js +0 -2
- data/public/javascripts/builder.js +0 -136
- data/public/javascripts/controls.js +0 -965
- data/public/javascripts/dragdrop.js +0 -974
- data/public/javascripts/effects.js +0 -1123
- data/public/javascripts/lightwindow.js +0 -1921
- data/public/javascripts/prototype.js +0 -6001
- data/public/javascripts/rails.js +0 -175
- data/public/javascripts/ruby.js +0 -46
- data/public/javascripts/scriptaculous.js +0 -58
- data/public/javascripts/slider.js +0 -275
- data/public/javascripts/sound.js +0 -55
- data/public/javascripts/unittest.js +0 -568
- data/public/javascripts/zapatec/utils/transport.js +0 -2217
- data/public/javascripts/zapatec/utils/utils.js +0 -1799
- data/public/javascripts/zapatec/utils/zapatec.js +0 -90
- data/public/javascripts/zapatec/utils/zpeventdriven.js +0 -212
- data/public/javascripts/zapatec/utils/zpwidget.js +0 -729
- data/public/javascripts/zapatec/zpcal/lang/calendar-no.js +0 -124
- data/public/javascripts/zapatec/zpcal/src/calendar-core.js +0 -2878
- data/public/javascripts/zapatec/zpcal/src/calendar-date-core.js +0 -348
- data/public/javascripts/zapatec/zpcal/src/calendar-setup.js +0 -360
- data/public/javascripts/zapatec/zpcal/src/calendar.js +0 -35
- data/public/robots.txt +0 -5
- data/public/stylesheets/backlog.css +0 -135
- data/public/stylesheets/lightwindow.css +0 -376
- data/public/stylesheets/mwrt002.css +0 -54
- data/public/stylesheets/mwrt002MAC.css +0 -3
- data/public/stylesheets/mwrt002NN.css +0 -3
- data/public/stylesheets/scaffold.css +0 -74
- data/public/stylesheets/user.css +0 -74
- data/public/stylesheets/zpcal/themes/green.css +0 -153
- data/public/stylesheets/zpcal/themes/layouts/layout-2d.css +0 -134
- data/public/stylesheets/zpcal/themes/layouts/layout-common.css +0 -74
- data/public/stylesheets/zpcal/themes/menuarrow.gif +0 -0
- data/public/stylesheets/zpcal/themes/scroller-down.gif +0 -0
- data/public/stylesheets/zpcal/themes/scroller-up.gif +0 -0
- data/script/rails +0 -6
- data/test/client/login.rb +0 -23
- data/test/client/login_test.rb +0 -64
- data/test/client/setup.rb +0 -25
- data/test/fixtures/absences.yml +0 -11
- data/test/fixtures/configurations.yml +0 -5
- data/test/fixtures/customers.yml +0 -7
- data/test/fixtures/estimates.yml +0 -10
- data/test/fixtures/groups.yml +0 -6
- data/test/fixtures/groups_users.yml +0 -3
- data/test/fixtures/parties.yml +0 -32
- data/test/fixtures/periods.yml +0 -24
- data/test/fixtures/projects.yml +0 -8
- data/test/fixtures/public_holidays.yml +0 -7
- data/test/fixtures/task_files.yml +0 -13
- data/test/fixtures/tasks.yml +0 -82
- data/test/fixtures/users.yml +0 -59
- data/test/fixtures/work_lock_subscriptions.yml +0 -7
- data/test/fixtures/work_locks.yml +0 -11
- data/test/fixtures/works.yml +0 -47
- data/test/functional/absences_controller_test.rb +0 -93
- data/test/functional/customers_controller_test.rb +0 -93
- data/test/functional/dashboard_controller_test.rb +0 -18
- data/test/functional/estimates_controller_test.rb +0 -40
- data/test/functional/groups_controller_test.rb +0 -120
- data/test/functional/parties_controller_test.rb +0 -35
- data/test/functional/periods_controller_test.rb +0 -297
- data/test/functional/projects_controller_test.rb +0 -152
- data/test/functional/public_holidays_controller_test.rb +0 -93
- data/test/functional/search_controller_test.rb +0 -24
- data/test/functional/task_files_controller_test.rb +0 -29
- data/test/functional/tasks_controller_test.rb +0 -229
- data/test/functional/user_controller_test.rb +0 -261
- data/test/functional/welcome_controller_test.rb +0 -62
- data/test/functional/work_locks_controller_test.rb +0 -93
- data/test/functional/works_controller_test.rb +0 -220
- data/test/integration/user_system_test.rb +0 -95
- data/test/mocks/test/clock.rb +0 -14
- data/test/performance/browsing_test.rb +0 -9
- data/test/performance/common.rb +0 -91
- data/test/performance/jetty_test.rb +0 -15
- data/test/performance/server_test.rb +0 -17
- data/test/test_helper.rb +0 -119
- data/test/test_helper.rb~ +0 -121
- data/test/unit/absence_test.rb +0 -29
- data/test/unit/big_decimal_yaml_fix_test.rb +0 -15
- data/test/unit/configuration_test.rb +0 -10
- data/test/unit/customer_test.rb +0 -10
- data/test/unit/estimate_test.rb +0 -10
- data/test/unit/group_test.rb +0 -10
- data/test/unit/party_test.rb +0 -10
- data/test/unit/period_test.rb +0 -9
- data/test/unit/public_holiday_test.rb +0 -10
- data/test/unit/task_file_test.rb +0 -10
- data/test/unit/task_test.rb +0 -73
- data/test/unit/time_of_day_test.rb +0 -23
- data/test/unit/user_test.rb +0 -148
- data/test/unit/work_lock_subscription_test.rb +0 -10
- data/test/unit/work_lock_test.rb +0 -10
- data/test/unit/work_test.rb +0 -81
- data/vendor/plugins/acts_as_list/README +0 -23
- data/vendor/plugins/acts_as_list/init.rb +0 -3
- data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +0 -256
- data/vendor/plugins/acts_as_list/test/list_test.rb +0 -332
- data/vendor/plugins/acts_as_tree/README +0 -26
- data/vendor/plugins/acts_as_tree/Rakefile +0 -22
- data/vendor/plugins/acts_as_tree/init.rb +0 -1
- data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +0 -96
- data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
- data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +0 -219
- data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
- data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
- data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
- data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
- data/vendor/plugins/assert_cookie/MIT-LICENSE +0 -7
- data/vendor/plugins/assert_cookie/README +0 -6
- data/vendor/plugins/assert_cookie/Rakefile +0 -21
- data/vendor/plugins/assert_cookie/init.rb +0 -1
- data/vendor/plugins/assert_cookie/lib/assert_cookie.rb +0 -73
- data/vendor/plugins/assert_cookie/meta.yml +0 -7
- data/vendor/plugins/assert_cookie/test/test_assert_cookie.rb +0 -124
- data/vendor/plugins/assert_cookie/test/test_helper.rb +0 -31
- data/vendor/plugins/auto_complete/README +0 -23
- data/vendor/plugins/auto_complete/Rakefile +0 -22
- data/vendor/plugins/auto_complete/init.rb +0 -2
- data/vendor/plugins/auto_complete/lib/auto_complete.rb +0 -47
- data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +0 -143
- data/vendor/plugins/auto_complete/test/auto_complete_test.rb +0 -67
- data/vendor/plugins/backlog_jira/init.rb +0 -66
- data/vendor/plugins/dynamic_form/MIT-LICENSE +0 -20
- data/vendor/plugins/dynamic_form/README +0 -13
- data/vendor/plugins/dynamic_form/Rakefile +0 -10
- data/vendor/plugins/dynamic_form/dynamic_form.gemspec +0 -12
- data/vendor/plugins/dynamic_form/init.rb +0 -1
- data/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb +0 -300
- data/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml +0 -8
- data/vendor/plugins/dynamic_form/lib/dynamic_form.rb +0 -5
- data/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb +0 -42
- data/vendor/plugins/dynamic_form/test/dynamic_form_test.rb +0 -370
- data/vendor/plugins/dynamic_form/test/test_helper.rb +0 -9
- data/vendor/plugins/has_history/README +0 -12
- data/vendor/plugins/has_history/Rakefile +0 -22
- data/vendor/plugins/has_history/generators/history_migration/history_migration_generator.rb +0 -30
- data/vendor/plugins/has_history/generators/history_migration/templates/migration.rb +0 -14
- data/vendor/plugins/has_history/generators/history_model/history_model_generator.rb +0 -39
- data/vendor/plugins/has_history/generators/history_model/templates/fixtures.yml +0 -17
- data/vendor/plugins/has_history/generators/history_model/templates/functional_test.rb +0 -129
- data/vendor/plugins/has_history/generators/history_model/templates/migration.rb +0 -14
- data/vendor/plugins/has_history/generators/history_model/templates/model.rb +0 -4
- data/vendor/plugins/has_history/generators/history_model/templates/unit_test.rb +0 -75
- data/vendor/plugins/has_history/init.rb +0 -5
- data/vendor/plugins/has_history/install.rb +0 -1
- data/vendor/plugins/has_history/lib/has_history.rb +0 -178
- data/vendor/plugins/has_history/lib/tasks/has_history_tasks.rake +0 -4
- data/vendor/plugins/has_history/test/has_history_test.rb +0 -31
- data/vendor/plugins/has_history/test/ignorant_master.rb +0 -3
- data/vendor/plugins/has_history/test/ignorant_master_history.rb +0 -4
- data/vendor/plugins/has_history/test/lone_master.rb +0 -42
- data/vendor/plugins/has_history/test/paired_master.rb +0 -5
- data/vendor/plugins/has_history/test/paired_master_history.rb +0 -5
- data/vendor/plugins/has_history/test/test_helper.rb +0 -154
- data/vendor/plugins/has_history/uninstall.rb +0 -1
- data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +0 -432
- data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +0 -297
- data/vendor/plugins/rails_time/MIT-LICENSE +0 -20
- data/vendor/plugins/rails_time/README +0 -28
- data/vendor/plugins/rails_time/init.rb +0 -2
- data/vendor/plugins/rails_time/lib/activerecord_time_extension.rb +0 -28
- data/vendor/plugins/rails_time/lib/time_of_day.rb +0 -88
- data/vendor/plugins/rails_time/test/database.yml +0 -18
- data/vendor/plugins/rails_time/test/debug.log +0 -1
- data/vendor/plugins/rails_time/test/rails_time_test.rb +0 -122
- data/vendor/plugins/rails_time/test/schema.rb +0 -10
- data/vendor/plugins/rails_time/test/test_helper.rb +0 -17
- data/vendor/plugins/verification/MIT-LICENSE +0 -20
- data/vendor/plugins/verification/README +0 -34
- data/vendor/plugins/verification/Rakefile +0 -22
- data/vendor/plugins/verification/init.rb +0 -3
- data/vendor/plugins/verification/lib/action_controller/verification.rb +0 -132
- data/vendor/plugins/verification/test/test_helper.rb +0 -18
- data/vendor/plugins/verification/test/verification_test.rb +0 -270
- data/vendor/plugins/will_paginate/LICENSE +0 -18
- data/vendor/plugins/will_paginate/README +0 -138
- data/vendor/plugins/will_paginate/Rakefile +0 -27
- data/vendor/plugins/will_paginate/init.rb +0 -4
- data/vendor/plugins/will_paginate/lib/will_paginate.rb +0 -61
- data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +0 -132
- data/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +0 -80
- data/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +0 -181
- data/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +0 -206
- data/vendor/plugins/will_paginate/test/array_pagination_test.rb +0 -131
- data/vendor/plugins/will_paginate/test/boot.rb +0 -23
- data/vendor/plugins/will_paginate/test/console +0 -9
- data/vendor/plugins/will_paginate/test/finder_test.rb +0 -290
- data/vendor/plugins/will_paginate/test/fixtures/admin.rb +0 -3
- data/vendor/plugins/will_paginate/test/fixtures/developer.rb +0 -11
- data/vendor/plugins/will_paginate/test/fixtures/developers_projects.yml +0 -13
- data/vendor/plugins/will_paginate/test/fixtures/project.rb +0 -15
- data/vendor/plugins/will_paginate/test/fixtures/projects.yml +0 -7
- data/vendor/plugins/will_paginate/test/fixtures/replies.yml +0 -34
- data/vendor/plugins/will_paginate/test/fixtures/reply.rb +0 -5
- data/vendor/plugins/will_paginate/test/fixtures/schema.rb +0 -38
- data/vendor/plugins/will_paginate/test/fixtures/topic.rb +0 -4
- data/vendor/plugins/will_paginate/test/fixtures/topics.yml +0 -30
- data/vendor/plugins/will_paginate/test/fixtures/user.rb +0 -2
- data/vendor/plugins/will_paginate/test/fixtures/users.yml +0 -35
- data/vendor/plugins/will_paginate/test/helper.rb +0 -25
- data/vendor/plugins/will_paginate/test/lib/activerecord_test_case.rb +0 -23
- data/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb +0 -67
- data/vendor/plugins/will_paginate/test/lib/load_fixtures.rb +0 -13
- data/vendor/plugins/will_paginate/test/pagination_test.rb +0 -240
@@ -1,18 +0,0 @@
|
|
1
|
-
Copyright (c) 2007 PJ Hyett and Mislav Marohnić
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4
|
-
this software and associated documentation files (the "Software"), to deal in
|
5
|
-
the Software without restriction, including without limitation the rights to
|
6
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
7
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
8
|
-
subject to the following conditions:
|
9
|
-
|
10
|
-
The above copyright notice and this permission notice shall be included in all
|
11
|
-
copies or substantial portions of the Software.
|
12
|
-
|
13
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
15
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
16
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
17
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
18
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,138 +0,0 @@
|
|
1
|
-
= WillPaginate
|
2
|
-
|
3
|
-
Pagination is just limiting the number of records displayed. Why should you let
|
4
|
-
it get in your way while developing, then? This plugin makes magic happen. Did
|
5
|
-
you ever want to be able to do just this on a model:
|
6
|
-
|
7
|
-
Post.paginate :page => 1
|
8
|
-
|
9
|
-
... and then render the page links with a single view helper? Well, now you
|
10
|
-
can. Ryan Bates made an awesome screencast[http://railscasts.com/episodes/51],
|
11
|
-
check it out.
|
12
|
-
|
13
|
-
Need to ask questions? Join our Google
|
14
|
-
group[http://groups.google.com/group/will_paginate].
|
15
|
-
|
16
|
-
== Install the plugin
|
17
|
-
|
18
|
-
Simply do:
|
19
|
-
|
20
|
-
script/plugin install svn://errtheblog.com/svn/plugins/will_paginate
|
21
|
-
|
22
|
-
The plugin officially supports Rails versions 1.2.6 and 2.0.2.
|
23
|
-
|
24
|
-
== Example usage
|
25
|
-
|
26
|
-
Use a paginate finder in the controller:
|
27
|
-
|
28
|
-
@posts = Post.paginate_by_board_id @board.id, :page => params[:page]
|
29
|
-
|
30
|
-
Yeah, +paginate+ works just like +find+ -- it just doesn't fetch all the
|
31
|
-
records. Don't forget to tell it which page you want, or it will complain!
|
32
|
-
Read more on WillPaginate::Finder::ClassMethods.
|
33
|
-
|
34
|
-
Render the posts in your view like you would normally do. When you need to render
|
35
|
-
pagination, just stick this in:
|
36
|
-
|
37
|
-
<%= will_paginate @posts %>
|
38
|
-
|
39
|
-
You're done. (Copy and paste the example fancy CSS styles from the bottom.) You
|
40
|
-
can find the option list at WillPaginate::ViewHelpers.
|
41
|
-
|
42
|
-
How does it know how much items to fetch per page? It asks your model by calling
|
43
|
-
+Post.per_page+. You can define it like this:
|
44
|
-
|
45
|
-
class Post < ActiveRecord::Base
|
46
|
-
cattr_reader :per_page
|
47
|
-
@@per_page = 50
|
48
|
-
end
|
49
|
-
|
50
|
-
... or like this:
|
51
|
-
|
52
|
-
class Post < ActiveRecord::Base
|
53
|
-
def self.per_page
|
54
|
-
50
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
... or don't worry about it at all. (WillPaginate defines it to be 30 if missing.)
|
59
|
-
You can also specify the count explicitly when calling +paginate+:
|
60
|
-
|
61
|
-
@posts = Post.paginate :page => params[:page], :per_page => 50
|
62
|
-
|
63
|
-
The +paginate+ finder wraps the original finder and returns your resultset that now has
|
64
|
-
some new properties. You can use the collection as you would with any ActiveRecord
|
65
|
-
resultset, but WillPaginate view helpers also need that object to be able to render pagination:
|
66
|
-
|
67
|
-
<ol>
|
68
|
-
<% for post in @posts -%>
|
69
|
-
<li>Render `post` in some nice way.</li>
|
70
|
-
<% end -%>
|
71
|
-
</ol>
|
72
|
-
|
73
|
-
<p>Now let's render us some pagination!</p>
|
74
|
-
<%= will_paginate @posts %>
|
75
|
-
|
76
|
-
|
77
|
-
== Authors, credits, contact!
|
78
|
-
|
79
|
-
REPORT BUGS on Lighthouse: http://err.lighthouseapp.com/projects/466-plugins/overview
|
80
|
-
|
81
|
-
BROWSE SOURCE on Warehouse: http://plugins.require.errtheblog.com/browser/will_paginate
|
82
|
-
|
83
|
-
Want to discuss, request features, ask questions? Join the Google group:
|
84
|
-
http://groups.google.com/group/will_paginate
|
85
|
-
|
86
|
-
Authors: Mislav Marohnić, PJ Hyett
|
87
|
-
Original announcement: http://errtheblog.com/post/929
|
88
|
-
Original PHP source: http://www.strangerstudios.com/sandbox/pagination/diggstyle.php
|
89
|
-
|
90
|
-
All these people helped making will_paginate what it is now with their code
|
91
|
-
contributions or simply awesome ideas:
|
92
|
-
|
93
|
-
Chris Wanstrath, Dr. Nic Williams, K. Adam Christensen, Mike Garey, Bence
|
94
|
-
Golda, Matt Aimonetti, Charles Brian Quinn, Desi McAdam, James Coglan, Matijs
|
95
|
-
van Zuijlen, Maria, Brendan Ribera.
|
96
|
-
|
97
|
-
== Usable pagination in the UI
|
98
|
-
|
99
|
-
Copy the following CSS into your stylesheet for a good start:
|
100
|
-
|
101
|
-
.pagination {
|
102
|
-
padding: 3px;
|
103
|
-
margin: 3px;
|
104
|
-
}
|
105
|
-
.pagination a {
|
106
|
-
padding: 2px 5px 2px 5px;
|
107
|
-
margin: 2px;
|
108
|
-
border: 1px solid #aaaadd;
|
109
|
-
text-decoration: none;
|
110
|
-
color: #000099;
|
111
|
-
}
|
112
|
-
.pagination a:hover, .pagination a:active {
|
113
|
-
border: 1px solid #000099;
|
114
|
-
color: #000;
|
115
|
-
}
|
116
|
-
.pagination span.current {
|
117
|
-
padding: 2px 5px 2px 5px;
|
118
|
-
margin: 2px;
|
119
|
-
border: 1px solid #000099;
|
120
|
-
font-weight: bold;
|
121
|
-
background-color: #000099;
|
122
|
-
color: #FFF;
|
123
|
-
}
|
124
|
-
.pagination span.disabled {
|
125
|
-
padding: 2px 5px 2px 5px;
|
126
|
-
margin: 2px;
|
127
|
-
border: 1px solid #eee;
|
128
|
-
color: #ddd;
|
129
|
-
}
|
130
|
-
|
131
|
-
More reading about pagination as design pattern:
|
132
|
-
|
133
|
-
* Pagination 101:
|
134
|
-
http://kurafire.net/log/archive/2007/06/22/pagination-101
|
135
|
-
* Pagination gallery:
|
136
|
-
http://www.smashingmagazine.com/2007/11/16/pagination-gallery-examples-and-good-practices/
|
137
|
-
* Pagination on Yahoo Design Pattern Library:
|
138
|
-
http://developer.yahoo.com/ypatterns/parent.php?pattern=pagination
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'rake'
|
2
|
-
require 'rake/testtask'
|
3
|
-
require 'rake/rdoctask'
|
4
|
-
|
5
|
-
desc 'Default: run unit tests.'
|
6
|
-
task :default => :test
|
7
|
-
|
8
|
-
desc 'Test the will_paginate plugin.'
|
9
|
-
Rake::TestTask.new(:test) do |t|
|
10
|
-
t.pattern = 'test/**/*_test.rb'
|
11
|
-
t.verbose = true
|
12
|
-
end
|
13
|
-
|
14
|
-
desc 'Generate RDoc documentation for the will_paginate plugin.'
|
15
|
-
Rake::RDocTask.new(:rdoc) do |rdoc|
|
16
|
-
files = ['README', 'LICENSE', 'lib/**/*.rb']
|
17
|
-
rdoc.rdoc_files.add(files)
|
18
|
-
rdoc.main = "README" # page to start on
|
19
|
-
rdoc.title = "will_paginate"
|
20
|
-
|
21
|
-
templates = %w[/Users/chris/ruby/projects/err/rock/template.rb /var/www/rock/template.rb]
|
22
|
-
rdoc.template = templates.find { |t| File.exists? t }
|
23
|
-
|
24
|
-
rdoc.rdoc_dir = 'doc' # rdoc output folder
|
25
|
-
rdoc.options << '--inline-source'
|
26
|
-
rdoc.options << '--charset=UTF-8'
|
27
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require 'active_support'
|
2
|
-
|
3
|
-
# = You *will* paginate!
|
4
|
-
#
|
5
|
-
# First read about WillPaginate::Finder::ClassMethods, then see
|
6
|
-
# WillPaginate::ViewHelpers. The magical array you're handling in-between is
|
7
|
-
# WillPaginate::Collection.
|
8
|
-
#
|
9
|
-
# Happy paginating!
|
10
|
-
module WillPaginate
|
11
|
-
class << self
|
12
|
-
# shortcut for <tt>enable_actionpack; enable_activerecord</tt>
|
13
|
-
def enable
|
14
|
-
enable_actionpack
|
15
|
-
enable_activerecord
|
16
|
-
end
|
17
|
-
|
18
|
-
# mixes in WillPaginate::ViewHelpers in ActionView::Base
|
19
|
-
def enable_actionpack
|
20
|
-
return if ActionView::Base.instance_methods.include? 'will_paginate'
|
21
|
-
require 'will_paginate/view_helpers'
|
22
|
-
ActionView::Base.class_eval { include ViewHelpers }
|
23
|
-
end
|
24
|
-
|
25
|
-
# mixes in WillPaginate::Finder in ActiveRecord::Base and classes that deal
|
26
|
-
# with associations
|
27
|
-
def enable_activerecord
|
28
|
-
return if ActiveRecord::Base.respond_to? :paginate
|
29
|
-
require 'will_paginate/finder'
|
30
|
-
ActiveRecord::Base.class_eval { include Finder }
|
31
|
-
|
32
|
-
associations = ActiveRecord::Associations
|
33
|
-
collection = associations::AssociationCollection
|
34
|
-
|
35
|
-
# to support paginating finders on associations, we have to mix in the
|
36
|
-
# method_missing magic from WillPaginate::Finder::ClassMethods to AssociationProxy
|
37
|
-
# subclasses, but in a different way for Rails 1.2.x and 2.0
|
38
|
-
(collection.instance_methods.include?(:create!) ?
|
39
|
-
collection : collection.subclasses.map(&:constantize)
|
40
|
-
).push(associations::HasManyThroughAssociation).each do |klass|
|
41
|
-
klass.class_eval do
|
42
|
-
include Finder::ClassMethods
|
43
|
-
alias_method_chain :method_missing, :paginate
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
module Deprecation #:nodoc:
|
50
|
-
extend ActiveSupport::Deprecation
|
51
|
-
|
52
|
-
def self.warn(message, callstack = caller)
|
53
|
-
message = 'WillPaginate: ' + message.strip.gsub(/ {3,}/, ' ')
|
54
|
-
behavior.call(message, callstack) if behavior && !silenced?
|
55
|
-
end
|
56
|
-
|
57
|
-
def self.silenced?
|
58
|
-
ActiveSupport::Deprecation.silenced?
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,132 +0,0 @@
|
|
1
|
-
require 'will_paginate'
|
2
|
-
|
3
|
-
module WillPaginate
|
4
|
-
# = OMG, invalid page number!
|
5
|
-
# This is an ArgumentError raised in case a page was requested that is either
|
6
|
-
# zero or negative number. You should decide how do deal with such errors in
|
7
|
-
# the controller.
|
8
|
-
#
|
9
|
-
# This error is *not* raised when a page further than the last page is
|
10
|
-
# requested. Use <tt>WillPaginate::Collection#out_of_bounds?</tt> method to
|
11
|
-
# check for those cases and manually deal with them as you see fit.
|
12
|
-
class InvalidPage < ArgumentError
|
13
|
-
def initialize(page, page_num)
|
14
|
-
super "#{page.inspect} given as value, which translates to '#{page_num}' as page number"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
# Arrays returned from paginating finds are, in fact, instances of this.
|
19
|
-
# You may think of WillPaginate::Collection as an ordinary array with some
|
20
|
-
# extra properties. Those properties are used by view helpers to generate
|
21
|
-
# correct page links.
|
22
|
-
#
|
23
|
-
# WillPaginate::Collection also assists in rolling out your own pagination
|
24
|
-
# solutions: see +create+.
|
25
|
-
#
|
26
|
-
class Collection < Array
|
27
|
-
attr_reader :current_page, :per_page, :total_entries
|
28
|
-
|
29
|
-
# Arguments to this constructor are the current page number, per-page limit
|
30
|
-
# and the total number of entries. The last argument is optional because it
|
31
|
-
# is best to do lazy counting; in other words, count *conditionally* after
|
32
|
-
# populating the collection using the +replace+ method.
|
33
|
-
#
|
34
|
-
def initialize(page, per_page, total = nil)
|
35
|
-
@current_page = page.to_i
|
36
|
-
raise InvalidPage.new(page, @current_page) if @current_page < 1
|
37
|
-
@per_page = per_page.to_i
|
38
|
-
raise ArgumentError, "`per_page` setting cannot be less than 1 (#{@per_page} given)" if @per_page < 1
|
39
|
-
|
40
|
-
self.total_entries = total if total
|
41
|
-
end
|
42
|
-
|
43
|
-
# Just like +new+, but yields the object after instantiation and returns it
|
44
|
-
# afterwards. This is very useful for manual pagination:
|
45
|
-
#
|
46
|
-
# @entries = WillPaginate::Collection.create(1, 10) do |pager|
|
47
|
-
# result = Post.find(:all, :limit => pager.per_page, :offset => pager.offset)
|
48
|
-
# # inject the result array into the paginated collection:
|
49
|
-
# pager.replace(result)
|
50
|
-
#
|
51
|
-
# unless pager.total_entries
|
52
|
-
# # the pager didn't manage to guess the total count, do it manually
|
53
|
-
# pager.total_entries = Post.count
|
54
|
-
# end
|
55
|
-
# end
|
56
|
-
#
|
57
|
-
# The possibilities with this are endless. For another example, here is how
|
58
|
-
# WillPaginate used to define pagination for Array instances:
|
59
|
-
#
|
60
|
-
# Array.class_eval do
|
61
|
-
# def paginate(page = 1, per_page = 15)
|
62
|
-
# WillPaginate::Collection.create(page, per_page, size) do |pager|
|
63
|
-
# pager.replace self[pager.offset, pager.per_page].to_a
|
64
|
-
# end
|
65
|
-
# end
|
66
|
-
# end
|
67
|
-
#
|
68
|
-
def self.create(page, per_page, total = nil, &block)
|
69
|
-
pager = new(page, per_page, total)
|
70
|
-
yield pager
|
71
|
-
pager
|
72
|
-
end
|
73
|
-
|
74
|
-
# The total number of pages.
|
75
|
-
def page_count
|
76
|
-
@total_pages
|
77
|
-
end
|
78
|
-
|
79
|
-
# Helper method that is true when someone tries to fetch a page with a
|
80
|
-
# larger number than the last page. Can be used in combination with flashes
|
81
|
-
# and redirecting.
|
82
|
-
def out_of_bounds?
|
83
|
-
current_page > page_count
|
84
|
-
end
|
85
|
-
|
86
|
-
# Current offset of the paginated collection. If we're on the first page,
|
87
|
-
# it is always 0. If we're on the 2nd page and there are 30 entries per page,
|
88
|
-
# the offset is 30. This property is useful if you want to render ordinals
|
89
|
-
# besides your records: simply start with offset + 1.
|
90
|
-
#
|
91
|
-
def offset
|
92
|
-
(current_page - 1) * per_page
|
93
|
-
end
|
94
|
-
|
95
|
-
# current_page - 1 or nil if there is no previous page
|
96
|
-
def previous_page
|
97
|
-
current_page > 1 ? (current_page - 1) : nil
|
98
|
-
end
|
99
|
-
|
100
|
-
# current_page + 1 or nil if there is no next page
|
101
|
-
def next_page
|
102
|
-
current_page < page_count ? (current_page + 1) : nil
|
103
|
-
end
|
104
|
-
|
105
|
-
def total_entries=(number)
|
106
|
-
@total_entries = number.to_i
|
107
|
-
@total_pages = (@total_entries / per_page.to_f).ceil
|
108
|
-
end
|
109
|
-
|
110
|
-
# This is a magic wrapper for the original Array#replace method. It serves
|
111
|
-
# for populating the paginated collection after initialization.
|
112
|
-
#
|
113
|
-
# Why magic? Because it tries to guess the total number of entries judging
|
114
|
-
# by the size of given array. If it is shorter than +per_page+ limit, then we
|
115
|
-
# know we're on the last page. This trick is very useful for avoiding
|
116
|
-
# unnecessary hits to the database to do the counting after we fetched the
|
117
|
-
# data for the current page.
|
118
|
-
#
|
119
|
-
# However, after using +replace+ you should always test the value of
|
120
|
-
# +total_entries+ and set it to a proper value if it's +nil+. See the example
|
121
|
-
# in +create+.
|
122
|
-
def replace(array)
|
123
|
-
super.tap do
|
124
|
-
# The collection is shorter then page limit? Rejoice, because
|
125
|
-
# then we know that we are on the last page!
|
126
|
-
if total_entries.nil? and length > 0 and length < per_page
|
127
|
-
self.total_entries = offset + length
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
@@ -1,80 +0,0 @@
|
|
1
|
-
require 'will_paginate'
|
2
|
-
require 'set'
|
3
|
-
|
4
|
-
unless Hash.instance_methods.include? 'except'
|
5
|
-
Hash.class_eval do
|
6
|
-
# Returns a new hash without the given keys.
|
7
|
-
def except(*keys)
|
8
|
-
rejected = Set.new(respond_to?(:convert_key) ? keys.map { |key| convert_key(key) } : keys)
|
9
|
-
reject { |key,| rejected.include?(key) }
|
10
|
-
end
|
11
|
-
|
12
|
-
# Replaces the hash without only the given keys.
|
13
|
-
def except!(*keys)
|
14
|
-
replace(except(*keys))
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
unless Hash.instance_methods.include? 'slice'
|
20
|
-
Hash.class_eval do
|
21
|
-
# Returns a new hash with only the given keys.
|
22
|
-
def slice(*keys)
|
23
|
-
allowed = Set.new(respond_to?(:convert_key) ? keys.map { |key| convert_key(key) } : keys)
|
24
|
-
reject { |key,| !allowed.include?(key) }
|
25
|
-
end
|
26
|
-
|
27
|
-
# Replaces the hash with only the given keys.
|
28
|
-
def slice!(*keys)
|
29
|
-
replace(slice(*keys))
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
unless Hash.instance_methods.include? 'rec_merge!'
|
35
|
-
Hash.class_eval do
|
36
|
-
# Same as Hash#merge!, but recursively merges sub-hashes
|
37
|
-
# (stolen from Haml)
|
38
|
-
def rec_merge!(other)
|
39
|
-
other.each do |key, other_value|
|
40
|
-
value = self[key]
|
41
|
-
if value.is_a?(Hash) and other_value.is_a?(Hash)
|
42
|
-
value.rec_merge! other_value
|
43
|
-
else
|
44
|
-
self[key] = other_value
|
45
|
-
end
|
46
|
-
end
|
47
|
-
self
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
require 'will_paginate/collection'
|
53
|
-
|
54
|
-
unless Array.instance_methods.include? 'paginate'
|
55
|
-
# http://www.desimcadam.com/archives/8
|
56
|
-
Array.class_eval do
|
57
|
-
def paginate(options_or_page = {}, per_page = nil)
|
58
|
-
if options_or_page.nil? or Fixnum === options_or_page
|
59
|
-
if defined? WillPaginate::Deprecation
|
60
|
-
WillPaginate::Deprecation.warn <<-DEPR
|
61
|
-
Array#paginate now conforms to the main, ActiveRecord::Base#paginate API. You should \
|
62
|
-
call it with a parameters hash (:page, :per_page). The old API (numbers as arguments) \
|
63
|
-
has been deprecated and is going to be unsupported in future versions of will_paginate.
|
64
|
-
DEPR
|
65
|
-
end
|
66
|
-
page = options_or_page
|
67
|
-
options = {}
|
68
|
-
else
|
69
|
-
options = options_or_page
|
70
|
-
page = options[:page]
|
71
|
-
raise ArgumentError, "wrong number of arguments (1 hash or 2 Fixnums expected)" if per_page
|
72
|
-
per_page = options[:per_page]
|
73
|
-
end
|
74
|
-
|
75
|
-
WillPaginate::Collection.create(page || 1, per_page || 30, options[:total_entries] || size) do |pager|
|
76
|
-
pager.replace self[pager.offset, pager.per_page].to_a
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|