admin_assistant 2.0.1 → 2.1.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/Rakefile +5 -14
- data/VERSION +1 -1
- data/admin_assistant.gemspec +174 -388
- data/lib/admin_assistant/column.rb +2 -2
- data/lib/admin_assistant/has_many_column.rb +6 -1
- data/lib/admin_assistant/polymorphic_belongs_to_column.rb +5 -1
- data/lib/admin_assistant.rb +4 -5
- data/{rails_3_test → rails_3_0}/.gitignore +0 -0
- data/{rails_3_test → rails_3_0}/Gemfile +0 -0
- data/{rails_3_test → rails_3_0}/Gemfile.lock +1 -1
- data/{rails_3_test → rails_3_0}/README +0 -0
- data/{rails_3_test → rails_3_0}/Rakefile +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/appointments2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/appointments_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts3_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts4_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts5_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts6_controller.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/controllers/admin/blog_posts_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts_custom_new_and_edit_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts_read_only_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/bookmarks_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/comments2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/comments_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/images2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/images_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/misconfigured1_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/not_migrated_yets_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/product_categories2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/product_categories_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/television_airings_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/television_time_slots_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/users2_controller.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/controllers/admin/users_controller.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/controllers/application_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/blog_posts_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/appointments_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts2_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts3_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts4_helper.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/helpers/admin/blog_posts6_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts_custom_new_and_edit_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts_read_only_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/bookmarks_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/comments2_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/comments_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/images2_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/images_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/misconfigured1_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/not_migrated_yets_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/product_categories2_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/product_categories_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/television_airings_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/television_time_slots_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/users2_helper.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/helpers/admin/users_helper.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/helpers/application_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/appointment.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/blog_post.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/blog_post_tag.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/bookmark.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/comment.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/image.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/not_migrated_yet.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/models/product.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/product_category.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/tag.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/television_airing.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/television_time_slot.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/models/user.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/appointments/_subject_input.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/appointments2/_time_input.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts2/_after_form.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts2/_after_index.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts2/_after_tags_input.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts2/_before_index.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts5/_after_index_header.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts_read_only/_body_for_show.html.erb +0 -0
- data/{rails_3_test → rails_3_0}/app/views/layouts/admin.html.erb +0 -0
- data/{rails_3_test → rails_3_0}/app/views/layouts/application.html.erb +0 -0
- data/{rails_3_test → rails_3_0}/config/application.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/boot.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/database.yml +0 -0
- data/{rails_3_test → rails_3_0}/config/environment.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/environments/development.rb +0 -1
- data/{rails_3_test → rails_3_0}/config/environments/production.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/environments/test.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/initializers/backtrace_silencers.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/initializers/inflections.rb +0 -0
- data/{rails_2_test → rails_3_0}/config/initializers/mime_types.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/initializers/secret_token.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/initializers/session_store.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/locales/en.yml +0 -0
- data/rails_3_0/config/routes.rb +8 -0
- data/{rails_3_test → rails_3_0}/config.ru +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090213215514_create_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090217225542_add_body_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090221220917_create_tags.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090221220947_create_blog_post_tags.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090222162204_add_textile_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090222163231_add_published_at_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090301191722_create_images.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090305165345_create_accounts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090307225027_rename_accounts_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090307225750_add_user_id_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090309185114_change_blog_posts_textile.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090309193635_create_products.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090309203056_create_comments.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090323005947_create_file_column_images.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090326160049_add_birthday_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090326223606_add_state_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090503134004_add_file_column_image_to_products.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090617173651_create_bookmarks.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090624165355_add_tags_string_to_blog_post.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090625144313_add_avatar_fields_to_user.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090629202956_add_merged_into_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090701171857_add_force_textile_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090704163647_add_deleted_at_to_products.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090704173800_add_sale_fields_to_products.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090714024501_create_product_categories.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090819162835_add_admin_level_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20091115134559_add_first_and_last_names_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20091221011256_add_position_to_product_categories.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20091222160814_create_appointments.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20091227224547_add_user_id_to_appointments.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20100214213359_create_television_time_slots.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20100214213451_create_television_airings.rb +0 -0
- data/{rails_3_test → rails_3_0}/db/migrate/20110426215702_remove_avatar_fields_from_users.rb +0 -0
- data/{rails_3_test → rails_3_0}/db/seeds.rb +0 -0
- data/{rails_3_test → rails_3_0}/doc/README_FOR_APP +0 -0
- data/{rails_3_test → rails_3_0}/lib/tasks/.gitkeep +0 -0
- data/{rails_3_test → rails_3_0}/public/404.html +0 -0
- data/{rails_3_test → rails_3_0}/public/422.html +0 -0
- data/{rails_3_test → rails_3_0}/public/500.html +0 -0
- data/{rails_2_test → rails_3_0}/public/favicon.ico +0 -0
- data/{rails_2_test → rails_3_0}/public/images/rails.png +0 -0
- data/{rails_3_test → rails_3_0}/public/index.html +0 -0
- data/{rails_2_test → rails_3_0}/public/javascripts/application.js +0 -0
- data/{rails_2_test → rails_3_0}/public/javascripts/jquery-1.4.4.min.js +0 -0
- data/{rails_3_test → rails_3_0}/public/javascripts/rails.js +0 -0
- data/{rails_2_test → rails_3_0}/public/robots.txt +0 -0
- data/{rails_3_test → rails_3_0}/public/stylesheets/.gitkeep +0 -0
- data/{rails_2_test → rails_3_0}/public/stylesheets/admin.css +0 -0
- data/{rails_2_test → rails_3_0}/public/stylesheets/scaffold.css +0 -0
- data/{rails_3_test → rails_3_0}/script/rails +0 -0
- data/{rails_2_test → rails_3_0}/test/data/ruby_throated.jpg +0 -0
- data/{rails_2_test → rails_3_0}/test/data/tweenbot.jpg +0 -0
- data/{rails_3_test → rails_3_0}/test/fixtures/placeholder.txt +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/appointments2_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/appointments_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts2_integration_test.rb +2 -2
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts3_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts4_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts5_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts6_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts_custom_new_and_edit_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts_integration_test.rb +8 -16
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts_read_only_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/bookmarks_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/comments2_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/comments_integration_test.rb +0 -0
- data/{rails_2_test → rails_3_0}/test/integration/admin/images2_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/images_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/misconfigured1_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/product_categories2_integration_test.rb +0 -0
- data/{rails_2_test → rails_3_0}/test/integration/admin/product_categories_integration_test.rb +0 -0
- data/{rails_2_test → rails_3_0}/test/integration/admin/television_airings_integration_test.rb +0 -0
- data/{rails_2_test → rails_3_0}/test/integration/admin/users2_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/users_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/blog_posts_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/performance/browsing_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/test_helper.rb +40 -0
- data/{rails_3_test → rails_3_0}/vendor/plugins/.gitkeep +0 -0
- data/rails_3_1/Gemfile +12 -0
- data/rails_3_1/Gemfile.lock +116 -0
- data/rails_3_1/README +256 -0
- data/{rails_2_test → rails_3_1}/Rakefile +2 -8
- data/rails_3_1/config.ru +4 -0
- metadata +176 -390
- data/lib/admin_assistant/date_time_range_end_point_selector.rb +0 -341
- data/rails_2_test/README +0 -256
- data/rails_2_test/app/controllers/admin/blog_posts_controller.rb +0 -8
- data/rails_2_test/app/controllers/admin/file_column_images2_controller.rb +0 -10
- data/rails_2_test/app/controllers/admin/file_column_images_controller.rb +0 -6
- data/rails_2_test/app/controllers/admin/products2_controller.rb +0 -15
- data/rails_2_test/app/controllers/admin/products_controller.rb +0 -31
- data/rails_2_test/app/controllers/admin/users_controller.rb +0 -63
- data/rails_2_test/app/controllers/application.rb +0 -16
- data/rails_2_test/app/controllers/application_controller.rb +0 -16
- data/rails_2_test/app/helpers/admin/appointments2_helper.rb +0 -2
- data/rails_2_test/app/helpers/admin/blog_posts6_helper.rb +0 -16
- data/rails_2_test/app/helpers/admin/file_column_images2_helper.rb +0 -2
- data/rails_2_test/app/helpers/admin/file_column_images_helper.rb +0 -2
- data/rails_2_test/app/helpers/admin/products2_helper.rb +0 -3
- data/rails_2_test/app/helpers/admin/products_helper.rb +0 -6
- data/rails_2_test/app/helpers/admin/users_helper.rb +0 -25
- data/rails_2_test/app/helpers/application_helper.rb +0 -3
- data/rails_2_test/app/helpers/blog_posts_helper.rb +0 -2
- data/rails_2_test/app/models/file_column_image.rb +0 -3
- data/rails_2_test/app/models/product.rb +0 -7
- data/rails_2_test/app/models/user.rb +0 -14
- data/rails_2_test/app/views/admin/products/_name_input.html.erb +0 -2
- data/rails_2_test/app/views/admin/products/_percent_off_input.html.erb +0 -2
- data/rails_2_test/app/views/admin/products/_price_input.html.erb +0 -10
- data/rails_2_test/app/views/blog_posts/show.html.erb +0 -13
- data/rails_2_test/app/views/layouts/admin.html.erb +0 -31
- data/rails_2_test/config/boot.rb +0 -109
- data/rails_2_test/config/database.yml +0 -28
- data/rails_2_test/config/environment.rb +0 -78
- data/rails_2_test/config/environments/development.rb +0 -17
- data/rails_2_test/config/environments/production.rb +0 -24
- data/rails_2_test/config/environments/test.rb +0 -24
- data/rails_2_test/config/initializers/inflections.rb +0 -10
- data/rails_2_test/config/initializers/new_rails_defaults.rb +0 -17
- data/rails_2_test/config/locales/en.yml +0 -5
- data/rails_2_test/config/routes.rb +0 -43
- data/rails_2_test/doc/README_FOR_APP +0 -5
- data/rails_2_test/lib/tasks/rspec.rake +0 -163
- data/rails_2_test/public/404.html +0 -30
- data/rails_2_test/public/422.html +0 -30
- data/rails_2_test/public/500.html +0 -33
- data/rails_2_test/public/dispatch.cgi +0 -10
- data/rails_2_test/public/dispatch.fcgi +0 -24
- data/rails_2_test/public/dispatch.rb +0 -10
- data/rails_2_test/public/index.html +0 -274
- data/rails_2_test/script/about +0 -4
- data/rails_2_test/script/autospec +0 -5
- data/rails_2_test/script/console +0 -3
- data/rails_2_test/script/dbconsole +0 -3
- data/rails_2_test/script/destroy +0 -3
- data/rails_2_test/script/generate +0 -3
- data/rails_2_test/script/performance/benchmarker +0 -3
- data/rails_2_test/script/performance/profiler +0 -3
- data/rails_2_test/script/performance/request +0 -3
- data/rails_2_test/script/plugin +0 -3
- data/rails_2_test/script/populate_tables.rb +0 -49
- data/rails_2_test/script/process/inspector +0 -3
- data/rails_2_test/script/process/reaper +0 -3
- data/rails_2_test/script/process/spawner +0 -3
- data/rails_2_test/script/runner +0 -3
- data/rails_2_test/script/server +0 -3
- data/rails_2_test/script/spec +0 -5
- data/rails_2_test/script/spec_server +0 -125
- data/rails_2_test/test/fixtures/file_column_images.yml +0 -7
- data/rails_2_test/test/integration/admin/appointments2_integration_test.rb +0 -79
- data/rails_2_test/test/integration/admin/appointments_integration_test.rb +0 -367
- data/rails_2_test/test/integration/admin/blog_posts2_integration_test.rb +0 -806
- data/rails_2_test/test/integration/admin/blog_posts3_integration_test.rb +0 -418
- data/rails_2_test/test/integration/admin/blog_posts4_integration_test.rb +0 -189
- data/rails_2_test/test/integration/admin/blog_posts5_integration_test.rb +0 -75
- data/rails_2_test/test/integration/admin/blog_posts6_integration_test.rb +0 -39
- data/rails_2_test/test/integration/admin/blog_posts_custom_new_and_edit_integration_test.rb +0 -89
- data/rails_2_test/test/integration/admin/blog_posts_integration_test.rb +0 -788
- data/rails_2_test/test/integration/admin/blog_posts_read_only_integration_test.rb +0 -69
- data/rails_2_test/test/integration/admin/bookmarks_integration_test.rb +0 -445
- data/rails_2_test/test/integration/admin/comments2_integration_test.rb +0 -52
- data/rails_2_test/test/integration/admin/comments_integration_test.rb +0 -50
- data/rails_2_test/test/integration/admin/file_column_images2_integration_test.rb +0 -19
- data/rails_2_test/test/integration/admin/file_column_images_integration_test.rb +0 -69
- data/rails_2_test/test/integration/admin/images_integration_test.rb +0 -79
- data/rails_2_test/test/integration/admin/misconfigured1_integration_test.rb +0 -17
- data/rails_2_test/test/integration/admin/product_categories2_integration_test.rb +0 -179
- data/rails_2_test/test/integration/admin/products2_integration_test.rb +0 -155
- data/rails_2_test/test/integration/admin/products_integration_test.rb +0 -210
- data/rails_2_test/test/integration/admin/users_integration_test.rb +0 -266
- data/rails_2_test/test/integration/blog_posts_integration_test.rb +0 -9
- data/rails_2_test/test/test_helper.rb +0 -114
- data/rails_2_test/vendor/plugins/file_column/CHANGELOG +0 -69
- data/rails_2_test/vendor/plugins/file_column/README +0 -54
- data/rails_2_test/vendor/plugins/file_column/Rakefile +0 -36
- data/rails_2_test/vendor/plugins/file_column/TODO +0 -6
- data/rails_2_test/vendor/plugins/file_column/init.rb +0 -13
- data/rails_2_test/vendor/plugins/file_column/lib/file_column.rb +0 -723
- data/rails_2_test/vendor/plugins/file_column/lib/file_column_helper.rb +0 -150
- data/rails_2_test/vendor/plugins/file_column/lib/file_compat.rb +0 -28
- data/rails_2_test/vendor/plugins/file_column/lib/magick_file_column.rb +0 -260
- data/rails_2_test/vendor/plugins/file_column/lib/rails_file_column.rb +0 -19
- data/rails_2_test/vendor/plugins/file_column/lib/test_case.rb +0 -124
- data/rails_2_test/vendor/plugins/file_column/lib/validations.rb +0 -112
- data/rails_2_test/vendor/plugins/file_column/test/abstract_unit.rb +0 -63
- data/rails_2_test/vendor/plugins/file_column/test/connection.rb +0 -17
- data/rails_2_test/vendor/plugins/file_column/test/file_column_helper_test.rb +0 -97
- data/rails_2_test/vendor/plugins/file_column/test/file_column_test.rb +0 -650
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/entry.rb +0 -32
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/invalid-image.jpg +0 -1
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/kerb.jpg +0 -0
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/mysql.sql +0 -25
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/schema.rb +0 -10
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/skanthak.png +0 -0
- data/rails_2_test/vendor/plugins/file_column/test/magick_test.rb +0 -380
- data/rails_2_test/vendor/plugins/file_column/test/magick_view_only_test.rb +0 -21
- data/rails_3_test/app/controllers/admin/appointments2_controller.rb +0 -15
- data/rails_3_test/app/controllers/admin/appointments_controller.rb +0 -11
- data/rails_3_test/app/controllers/admin/blog_posts2_controller.rb +0 -138
- data/rails_3_test/app/controllers/admin/blog_posts3_controller.rb +0 -76
- data/rails_3_test/app/controllers/admin/blog_posts4_controller.rb +0 -21
- data/rails_3_test/app/controllers/admin/blog_posts5_controller.rb +0 -27
- data/rails_3_test/app/controllers/admin/blog_posts6_controller.rb +0 -10
- data/rails_3_test/app/controllers/admin/blog_posts_custom_new_and_edit_controller.rb +0 -15
- data/rails_3_test/app/controllers/admin/blog_posts_read_only_controller.rb +0 -19
- data/rails_3_test/app/controllers/admin/bookmarks_controller.rb +0 -11
- data/rails_3_test/app/controllers/admin/comments2_controller.rb +0 -14
- data/rails_3_test/app/controllers/admin/comments_controller.rb +0 -12
- data/rails_3_test/app/controllers/admin/images2_controller.rb +0 -11
- data/rails_3_test/app/controllers/admin/images_controller.rb +0 -6
- data/rails_3_test/app/controllers/admin/misconfigured1_controller.rb +0 -7
- data/rails_3_test/app/controllers/admin/not_migrated_yets_controller.rb +0 -9
- data/rails_3_test/app/controllers/admin/product_categories2_controller.rb +0 -7
- data/rails_3_test/app/controllers/admin/product_categories_controller.rb +0 -5
- data/rails_3_test/app/controllers/admin/television_airings_controller.rb +0 -5
- data/rails_3_test/app/controllers/admin/television_time_slots_controller.rb +0 -5
- data/rails_3_test/app/controllers/admin/users2_controller.rb +0 -10
- data/rails_3_test/app/controllers/blog_posts_controller.rb +0 -5
- data/rails_3_test/app/helpers/admin/appointments_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/blog_posts2_helper.rb +0 -27
- data/rails_3_test/app/helpers/admin/blog_posts3_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/blog_posts4_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/blog_posts_custom_new_and_edit_helper.rb +0 -29
- data/rails_3_test/app/helpers/admin/blog_posts_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/blog_posts_read_only_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/bookmarks_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/comments2_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/comments_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/images2_helper.rb +0 -8
- data/rails_3_test/app/helpers/admin/images_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/misconfigured1_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/not_migrated_yets_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/product_categories2_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/product_categories_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/television_airings_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/television_time_slots_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/users2_helper.rb +0 -2
- data/rails_3_test/app/models/appointment.rb +0 -5
- data/rails_3_test/app/models/blog_post.rb +0 -14
- data/rails_3_test/app/models/blog_post_tag.rb +0 -6
- data/rails_3_test/app/models/bookmark.rb +0 -6
- data/rails_3_test/app/models/comment.rb +0 -4
- data/rails_3_test/app/models/image.rb +0 -3
- data/rails_3_test/app/models/not_migrated_yet.rb +0 -2
- data/rails_3_test/app/models/product_category.rb +0 -9
- data/rails_3_test/app/models/tag.rb +0 -4
- data/rails_3_test/app/models/television_airing.rb +0 -3
- data/rails_3_test/app/models/television_time_slot.rb +0 -11
- data/rails_3_test/app/views/admin/appointments/_subject_input.html.erb +0 -2
- data/rails_3_test/app/views/admin/appointments2/_time_input.html.erb +0 -31
- data/rails_3_test/app/views/admin/blog_posts2/_after_form.html.erb +0 -5
- data/rails_3_test/app/views/admin/blog_posts2/_after_index.html.erb +0 -1
- data/rails_3_test/app/views/admin/blog_posts2/_after_tags_input.html.erb +0 -16
- data/rails_3_test/app/views/admin/blog_posts2/_before_index.html.erb +0 -2
- data/rails_3_test/app/views/admin/blog_posts5/_after_index_header.html.erb +0 -8
- data/rails_3_test/app/views/admin/blog_posts_read_only/_body_for_show.html.erb +0 -1
- data/rails_3_test/config/initializers/mime_types.rb +0 -5
- data/rails_3_test/config/routes.rb +0 -63
- data/rails_3_test/db/migrate/20090213215514_create_blog_posts.rb +0 -12
- data/rails_3_test/db/migrate/20090217225542_add_body_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090221220917_create_tags.rb +0 -13
- data/rails_3_test/db/migrate/20090221220947_create_blog_post_tags.rb +0 -14
- data/rails_3_test/db/migrate/20090222162204_add_textile_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090222163231_add_published_at_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090301191722_create_images.rb +0 -16
- data/rails_3_test/db/migrate/20090305165345_create_accounts.rb +0 -14
- data/rails_3_test/db/migrate/20090307225027_rename_accounts_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20090307225750_add_user_id_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090309185114_change_blog_posts_textile.rb +0 -9
- data/rails_3_test/db/migrate/20090309193635_create_products.rb +0 -14
- data/rails_3_test/db/migrate/20090309203056_create_comments.rb +0 -15
- data/rails_3_test/db/migrate/20090323005947_create_file_column_images.rb +0 -12
- data/rails_3_test/db/migrate/20090326160049_add_birthday_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20090326223606_add_state_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20090503134004_add_file_column_image_to_products.rb +0 -9
- data/rails_3_test/db/migrate/20090617173651_create_bookmarks.rb +0 -15
- data/rails_3_test/db/migrate/20090624165355_add_tags_string_to_blog_post.rb +0 -9
- data/rails_3_test/db/migrate/20090625144313_add_avatar_fields_to_user.rb +0 -11
- data/rails_3_test/db/migrate/20090629202956_add_merged_into_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090701171857_add_force_textile_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20090704163647_add_deleted_at_to_products.rb +0 -9
- data/rails_3_test/db/migrate/20090704173800_add_sale_fields_to_products.rb +0 -13
- data/rails_3_test/db/migrate/20090714024501_create_product_categories.rb +0 -15
- data/rails_3_test/db/migrate/20090819162835_add_admin_level_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20091115134559_add_first_and_last_names_to_users.rb +0 -11
- data/rails_3_test/db/migrate/20091221011256_add_position_to_product_categories.rb +0 -9
- data/rails_3_test/db/migrate/20091222160814_create_appointments.rb +0 -14
- data/rails_3_test/db/migrate/20091227224547_add_user_id_to_appointments.rb +0 -9
- data/rails_3_test/db/migrate/20100214213359_create_television_time_slots.rb +0 -13
- data/rails_3_test/db/migrate/20100214213451_create_television_airings.rb +0 -15
- data/rails_3_test/public/favicon.ico +0 -0
- data/rails_3_test/public/images/rails.png +0 -0
- data/rails_3_test/public/javascripts/application.js +0 -2
- data/rails_3_test/public/javascripts/jquery-1.4.4.min.js +0 -167
- data/rails_3_test/public/robots.txt +0 -5
- data/rails_3_test/public/stylesheets/admin.css +0 -3
- data/rails_3_test/public/stylesheets/scaffold.css +0 -54
- data/rails_3_test/test/data/ruby_throated.jpg +0 -0
- data/rails_3_test/test/data/tweenbot.jpg +0 -0
- data/rails_3_test/test/integration/admin/images2_integration_test.rb +0 -33
- data/rails_3_test/test/integration/admin/product_categories_integration_test.rb +0 -12
- data/rails_3_test/test/integration/admin/television_airings_integration_test.rb +0 -25
- data/rails_3_test/test/integration/admin/users2_integration_test.rb +0 -48
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
-- MySQL dump 9.11
|
|
2
|
-
--
|
|
3
|
-
-- Host: localhost Database: file_column_test
|
|
4
|
-
-- ------------------------------------------------------
|
|
5
|
-
-- Server version 4.0.24
|
|
6
|
-
|
|
7
|
-
--
|
|
8
|
-
-- Table structure for table `entries`
|
|
9
|
-
--
|
|
10
|
-
|
|
11
|
-
DROP TABLE IF EXISTS entries;
|
|
12
|
-
CREATE TABLE entries (
|
|
13
|
-
id int(11) NOT NULL auto_increment,
|
|
14
|
-
image varchar(200) default NULL,
|
|
15
|
-
file varchar(200) NOT NULL,
|
|
16
|
-
PRIMARY KEY (id)
|
|
17
|
-
) TYPE=MyISAM;
|
|
18
|
-
|
|
19
|
-
DROP TABLE IF EXISTS movies;
|
|
20
|
-
CREATE TABLE movies (
|
|
21
|
-
id int(11) NOT NULL auto_increment,
|
|
22
|
-
movie varchar(200) default NULL,
|
|
23
|
-
PRIMARY KEY (id)
|
|
24
|
-
) TYPE=MyISAM;
|
|
25
|
-
|
|
Binary file
|
|
@@ -1,380 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/abstract_unit'
|
|
2
|
-
require 'RMagick'
|
|
3
|
-
require File.dirname(__FILE__) + '/fixtures/entry'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class AbstractRMagickTest < Test::Unit::TestCase
|
|
7
|
-
def teardown
|
|
8
|
-
FileUtils.rm_rf File.dirname(__FILE__)+"/public/entry/"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def test_truth
|
|
12
|
-
assert true
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
def read_image(path)
|
|
18
|
-
Magick::Image::read(path).first
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def assert_max_image_size(img, s)
|
|
22
|
-
assert img.columns <= s, "img has #{img.columns} columns, expected: #{s}"
|
|
23
|
-
assert img.rows <= s, "img has #{img.rows} rows, expected: #{s}"
|
|
24
|
-
assert_equal s, [img.columns, img.rows].max
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
class RMagickSimpleTest < AbstractRMagickTest
|
|
29
|
-
def setup
|
|
30
|
-
Entry.file_column :image, :magick => { :geometry => "100x100" }
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_simple_resize_without_save
|
|
34
|
-
e = Entry.new
|
|
35
|
-
e.image = upload(f("kerb.jpg"))
|
|
36
|
-
|
|
37
|
-
img = read_image(e.image)
|
|
38
|
-
assert_max_image_size img, 100
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def test_simple_resize_with_save
|
|
42
|
-
e = Entry.new
|
|
43
|
-
e.image = upload(f("kerb.jpg"))
|
|
44
|
-
assert e.save
|
|
45
|
-
e.reload
|
|
46
|
-
|
|
47
|
-
img = read_image(e.image)
|
|
48
|
-
assert_max_image_size img, 100
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def test_resize_on_saved_image
|
|
52
|
-
Entry.file_column :image, :magick => { :geometry => "100x100" }
|
|
53
|
-
|
|
54
|
-
e = Entry.new
|
|
55
|
-
e.image = upload(f("skanthak.png"))
|
|
56
|
-
assert e.save
|
|
57
|
-
e.reload
|
|
58
|
-
old_path = e.image
|
|
59
|
-
|
|
60
|
-
e.image = upload(f("kerb.jpg"))
|
|
61
|
-
assert e.save
|
|
62
|
-
assert "kerb.jpg", File.basename(e.image)
|
|
63
|
-
assert !File.exists?(old_path), "old image '#{old_path}' still exists"
|
|
64
|
-
|
|
65
|
-
img = read_image(e.image)
|
|
66
|
-
assert_max_image_size img, 100
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def test_invalid_image
|
|
70
|
-
e = Entry.new
|
|
71
|
-
assert_nothing_raised { e.image = upload(f("invalid-image.jpg")) }
|
|
72
|
-
assert !e.valid?
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def test_serializable
|
|
76
|
-
e = Entry.new
|
|
77
|
-
e.image = upload(f("skanthak.png"))
|
|
78
|
-
assert_nothing_raised {
|
|
79
|
-
flash = Marshal.dump(e)
|
|
80
|
-
e = Marshal.load(flash)
|
|
81
|
-
}
|
|
82
|
-
assert File.exists?(e.image)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def test_imagemagick_still_usable
|
|
86
|
-
e = Entry.new
|
|
87
|
-
assert_nothing_raised {
|
|
88
|
-
img = e.load_image_with_rmagick(file_path("skanthak.png"))
|
|
89
|
-
assert img.kind_of?(Magick::Image)
|
|
90
|
-
}
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
class RMagickRequiresImageTest < AbstractRMagickTest
|
|
95
|
-
def setup
|
|
96
|
-
Entry.file_column :image, :magick => {
|
|
97
|
-
:size => "100x100>",
|
|
98
|
-
:image_required => false,
|
|
99
|
-
:versions => {
|
|
100
|
-
:thumb => "80x80>",
|
|
101
|
-
:large => {:size => "200x200>", :lazy => true}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def test_image_required_with_image
|
|
107
|
-
e = Entry.new(:image => upload(f("skanthak.png")))
|
|
108
|
-
assert_max_image_size read_image(e.image), 100
|
|
109
|
-
assert e.valid?
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def test_image_required_with_invalid_image
|
|
113
|
-
e = Entry.new(:image => upload(f("invalid-image.jpg")))
|
|
114
|
-
assert e.valid?, "did not ignore invalid image"
|
|
115
|
-
assert FileUtils.identical?(e.image, f("invalid-image.jpg")), "uploaded file has not been left alone"
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def test_versions_with_invalid_image
|
|
119
|
-
e = Entry.new(:image => upload(f("invalid-image.jpg")))
|
|
120
|
-
assert e.valid?
|
|
121
|
-
|
|
122
|
-
image_state = e.send(:image_state)
|
|
123
|
-
assert_nil image_state.create_magick_version_if_needed(:thumb)
|
|
124
|
-
assert_nil image_state.create_magick_version_if_needed(:large)
|
|
125
|
-
assert_nil image_state.create_magick_version_if_needed("300x300>")
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
class RMagickCustomAttributesTest < AbstractRMagickTest
|
|
130
|
-
def assert_image_property(img, property, value, text = nil)
|
|
131
|
-
assert File.exists?(img), "the image does not exist"
|
|
132
|
-
assert_equal value, read_image(img).send(property), text
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
def test_simple_attributes
|
|
136
|
-
Entry.file_column :image, :magick => { :attributes => { :quality => 20 } }
|
|
137
|
-
e = Entry.new("image" => upload(f("kerb.jpg")))
|
|
138
|
-
assert_image_property e.image, :quality, 20, "the quality was not set"
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
def test_version_attributes
|
|
142
|
-
Entry.file_column :image, :magick => {
|
|
143
|
-
:versions => {
|
|
144
|
-
:thumb => { :attributes => { :quality => 20 } }
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
e = Entry.new("image" => upload(f("kerb.jpg")))
|
|
148
|
-
assert_image_property e.image("thumb"), :quality, 20, "the quality was not set"
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def test_lazy_attributes
|
|
152
|
-
Entry.file_column :image, :magick => {
|
|
153
|
-
:versions => {
|
|
154
|
-
:thumb => { :attributes => { :quality => 20 }, :lazy => true }
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
e = Entry.new("image" => upload(f("kerb.jpg")))
|
|
158
|
-
e.send(:image_state).create_magick_version_if_needed(:thumb)
|
|
159
|
-
assert_image_property e.image("thumb"), :quality, 20, "the quality was not set"
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
class RMagickVersionsTest < AbstractRMagickTest
|
|
164
|
-
def setup
|
|
165
|
-
Entry.file_column :image, :magick => {:geometry => "200x200",
|
|
166
|
-
:versions => {
|
|
167
|
-
:thumb => "50x50",
|
|
168
|
-
:medium => {:geometry => "100x100", :name => "100_100"},
|
|
169
|
-
:large => {:geometry => "150x150", :lazy => true}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
def test_should_create_thumb
|
|
176
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
177
|
-
|
|
178
|
-
assert File.exists?(e.image("thumb")), "thumb-nail not created"
|
|
179
|
-
|
|
180
|
-
assert_max_image_size read_image(e.image("thumb")), 50
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
def test_version_name_can_be_different_from_key
|
|
184
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
185
|
-
|
|
186
|
-
assert File.exists?(e.image("100_100"))
|
|
187
|
-
assert !File.exists?(e.image("medium"))
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
def test_should_not_create_lazy_versions
|
|
191
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
192
|
-
assert !File.exists?(e.image("large")), "lazy versions should not be created unless needed"
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
def test_should_create_lazy_version_on_demand
|
|
196
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
197
|
-
|
|
198
|
-
e.send(:image_state).create_magick_version_if_needed(:large)
|
|
199
|
-
|
|
200
|
-
assert File.exists?(e.image("large")), "lazy version should be created on demand"
|
|
201
|
-
|
|
202
|
-
assert_max_image_size read_image(e.image("large")), 150
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
def test_generated_name_should_not_change
|
|
206
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
207
|
-
|
|
208
|
-
name1 = e.send(:image_state).create_magick_version_if_needed("50x50")
|
|
209
|
-
name2 = e.send(:image_state).create_magick_version_if_needed("50x50")
|
|
210
|
-
name3 = e.send(:image_state).create_magick_version_if_needed(:geometry => "50x50")
|
|
211
|
-
assert_equal name1, name2, "hash value has changed"
|
|
212
|
-
assert_equal name1, name3, "hash value has changed"
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
def test_should_create_version_with_string
|
|
216
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
217
|
-
|
|
218
|
-
name = e.send(:image_state).create_magick_version_if_needed("32x32")
|
|
219
|
-
|
|
220
|
-
assert File.exists?(e.image(name))
|
|
221
|
-
|
|
222
|
-
assert_max_image_size read_image(e.image(name)), 32
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
def test_should_create_safe_auto_id
|
|
226
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
227
|
-
|
|
228
|
-
name = e.send(:image_state).create_magick_version_if_needed("32x32")
|
|
229
|
-
|
|
230
|
-
assert_match /^[a-zA-Z0-9]+$/, name
|
|
231
|
-
end
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
class RMagickCroppingTest < AbstractRMagickTest
|
|
235
|
-
def setup
|
|
236
|
-
Entry.file_column :image, :magick => {:geometry => "200x200",
|
|
237
|
-
:versions => {
|
|
238
|
-
:thumb => {:crop => "1:1", :geometry => "50x50"}
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
def test_should_crop_image_on_upload
|
|
244
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
245
|
-
|
|
246
|
-
img = read_image(e.image("thumb"))
|
|
247
|
-
|
|
248
|
-
assert_equal 50, img.rows
|
|
249
|
-
assert_equal 50, img.columns
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
class UrlForImageColumnTest < AbstractRMagickTest
|
|
255
|
-
include FileColumnHelper
|
|
256
|
-
|
|
257
|
-
def setup
|
|
258
|
-
Entry.file_column :image, :magick => {
|
|
259
|
-
:versions => {:thumb => "50x50"}
|
|
260
|
-
}
|
|
261
|
-
@request = RequestMock.new
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
def test_should_use_version_on_symbol_option
|
|
265
|
-
e = Entry.new(:image => upload(f("skanthak.png")))
|
|
266
|
-
|
|
267
|
-
url = url_for_image_column(e, "image", :thumb)
|
|
268
|
-
assert_match %r{^/entry/image/tmp/.+/thumb/skanthak.png$}, url
|
|
269
|
-
end
|
|
270
|
-
|
|
271
|
-
def test_should_use_string_as_size
|
|
272
|
-
e = Entry.new(:image => upload(f("skanthak.png")))
|
|
273
|
-
|
|
274
|
-
url = url_for_image_column(e, "image", "50x50")
|
|
275
|
-
|
|
276
|
-
assert_match %r{^/entry/image/tmp/.+/.+/skanthak.png$}, url
|
|
277
|
-
|
|
278
|
-
url =~ /\/([^\/]+)\/skanthak.png$/
|
|
279
|
-
dirname = $1
|
|
280
|
-
|
|
281
|
-
assert_max_image_size read_image(e.image(dirname)), 50
|
|
282
|
-
end
|
|
283
|
-
|
|
284
|
-
def test_should_accept_version_hash
|
|
285
|
-
e = Entry.new(:image => upload(f("skanthak.png")))
|
|
286
|
-
|
|
287
|
-
url = url_for_image_column(e, "image", :size => "50x50", :crop => "1:1", :name => "small")
|
|
288
|
-
|
|
289
|
-
assert_match %r{^/entry/image/tmp/.+/small/skanthak.png$}, url
|
|
290
|
-
|
|
291
|
-
img = read_image(e.image("small"))
|
|
292
|
-
assert_equal 50, img.rows
|
|
293
|
-
assert_equal 50, img.columns
|
|
294
|
-
end
|
|
295
|
-
end
|
|
296
|
-
|
|
297
|
-
class RMagickPermissionsTest < AbstractRMagickTest
|
|
298
|
-
def setup
|
|
299
|
-
Entry.file_column :image, :magick => {:geometry => "200x200",
|
|
300
|
-
:versions => {
|
|
301
|
-
:thumb => {:crop => "1:1", :geometry => "50x50"}
|
|
302
|
-
}
|
|
303
|
-
}, :permissions => 0616
|
|
304
|
-
end
|
|
305
|
-
|
|
306
|
-
def check_permissions(e)
|
|
307
|
-
assert_equal 0616, (File.stat(e.image).mode & 0777)
|
|
308
|
-
assert_equal 0616, (File.stat(e.image("thumb")).mode & 0777)
|
|
309
|
-
end
|
|
310
|
-
|
|
311
|
-
def test_permissions_with_rmagick
|
|
312
|
-
e = Entry.new(:image => upload(f("skanthak.png")))
|
|
313
|
-
|
|
314
|
-
check_permissions e
|
|
315
|
-
|
|
316
|
-
assert e.save
|
|
317
|
-
|
|
318
|
-
check_permissions e
|
|
319
|
-
end
|
|
320
|
-
end
|
|
321
|
-
|
|
322
|
-
class Entry
|
|
323
|
-
def transform_grey(img)
|
|
324
|
-
img.quantize(256, Magick::GRAYColorspace)
|
|
325
|
-
end
|
|
326
|
-
end
|
|
327
|
-
|
|
328
|
-
class RMagickTransformationTest < AbstractRMagickTest
|
|
329
|
-
def assert_transformed(image)
|
|
330
|
-
assert File.exists?(image), "the image does not exist"
|
|
331
|
-
assert 256 > read_image(image).number_colors, "the number of colors was not changed"
|
|
332
|
-
end
|
|
333
|
-
|
|
334
|
-
def test_simple_transformation
|
|
335
|
-
Entry.file_column :image, :magick => { :transformation => Proc.new { |image| image.quantize(256, Magick::GRAYColorspace) } }
|
|
336
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
337
|
-
assert_transformed(e.image)
|
|
338
|
-
end
|
|
339
|
-
|
|
340
|
-
def test_simple_version_transformation
|
|
341
|
-
Entry.file_column :image, :magick => {
|
|
342
|
-
:versions => { :thumb => Proc.new { |image| image.quantize(256, Magick::GRAYColorspace) } }
|
|
343
|
-
}
|
|
344
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
345
|
-
assert_transformed(e.image("thumb"))
|
|
346
|
-
end
|
|
347
|
-
|
|
348
|
-
def test_complex_version_transformation
|
|
349
|
-
Entry.file_column :image, :magick => {
|
|
350
|
-
:versions => {
|
|
351
|
-
:thumb => { :transformation => Proc.new { |image| image.quantize(256, Magick::GRAYColorspace) } }
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
355
|
-
assert_transformed(e.image("thumb"))
|
|
356
|
-
end
|
|
357
|
-
|
|
358
|
-
def test_lazy_transformation
|
|
359
|
-
Entry.file_column :image, :magick => {
|
|
360
|
-
:versions => {
|
|
361
|
-
:thumb => { :transformation => Proc.new { |image| image.quantize(256, Magick::GRAYColorspace) }, :lazy => true }
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
e = Entry.new("image" => upload(f("skanthak.png")))
|
|
365
|
-
e.send(:image_state).create_magick_version_if_needed(:thumb)
|
|
366
|
-
assert_transformed(e.image("thumb"))
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
def test_simple_callback_transformation
|
|
370
|
-
Entry.file_column :image, :magick => :transform_grey
|
|
371
|
-
e = Entry.new(:image => upload(f("skanthak.png")))
|
|
372
|
-
assert_transformed(e.image)
|
|
373
|
-
end
|
|
374
|
-
|
|
375
|
-
def test_complex_callback_transformation
|
|
376
|
-
Entry.file_column :image, :magick => { :transformation => :transform_grey }
|
|
377
|
-
e = Entry.new(:image => upload(f("skanthak.png")))
|
|
378
|
-
assert_transformed(e.image)
|
|
379
|
-
end
|
|
380
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/abstract_unit'
|
|
2
|
-
require File.dirname(__FILE__) + '/fixtures/entry'
|
|
3
|
-
|
|
4
|
-
class RMagickViewOnlyTest < Test::Unit::TestCase
|
|
5
|
-
include FileColumnHelper
|
|
6
|
-
|
|
7
|
-
def setup
|
|
8
|
-
Entry.file_column :image
|
|
9
|
-
@request = RequestMock.new
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def teardown
|
|
13
|
-
FileUtils.rm_rf File.dirname(__FILE__)+"/public/entry/"
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def test_url_for_image_column_without_model_versions
|
|
17
|
-
e = Entry.new(:image => upload(f("skanthak.png")))
|
|
18
|
-
|
|
19
|
-
assert_nothing_raised { url_for_image_column e, "image", "50x50" }
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
class Admin::Appointments2Controller < ApplicationController
|
|
2
|
-
layout 'admin'
|
|
3
|
-
|
|
4
|
-
admin_assistant_for Appointment do |a|
|
|
5
|
-
a.form.multi = true
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
protected
|
|
9
|
-
|
|
10
|
-
def time_from_form(time)
|
|
11
|
-
time['1-3i'] =~ /(\d{4})-(\d{2})-(\d{2})/
|
|
12
|
-
utc_args = [$1, $2, $3, time['4i'], time['5i']]
|
|
13
|
-
Time.utc(*(utc_args.map(&:to_i))) unless utc_args.any?(&:blank?)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
class Admin::AppointmentsController < ApplicationController
|
|
2
|
-
layout 'admin'
|
|
3
|
-
|
|
4
|
-
admin_assistant_for Appointment do |a|
|
|
5
|
-
a.form.multi = true
|
|
6
|
-
a.index.search do |search|
|
|
7
|
-
search.columns :subject, :time, :user
|
|
8
|
-
search[:time].compare_to_range = true
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
class Admin::BlogPosts2Controller < ApplicationController
|
|
2
|
-
layout 'admin'
|
|
3
|
-
|
|
4
|
-
admin_assistant_for BlogPost do |a|
|
|
5
|
-
a[:user].label = 'Author'
|
|
6
|
-
|
|
7
|
-
# When showing the textile field, say 'Yes' and 'No' instead of 'true'
|
|
8
|
-
# and 'false'
|
|
9
|
-
a[:textile].boolean_labels = %w(Yes No)
|
|
10
|
-
|
|
11
|
-
# For the index view:
|
|
12
|
-
a.index do |index|
|
|
13
|
-
# Only show these columns
|
|
14
|
-
index.columns :user, :title, :tags, :published_at, :textile
|
|
15
|
-
|
|
16
|
-
# Add the link 'All' to the top-right corner
|
|
17
|
-
index.actions['All'] = {:all => '1'}
|
|
18
|
-
|
|
19
|
-
# Sort by published_at descending, then updated_at descending
|
|
20
|
-
index.sort_by "published_at desc, updated_at desc"
|
|
21
|
-
|
|
22
|
-
# Show only 10 blog posts per page
|
|
23
|
-
index.per_page 10
|
|
24
|
-
|
|
25
|
-
# Let's have specific fields for searching
|
|
26
|
-
index.search :id, :title, :body, :textile, :user
|
|
27
|
-
|
|
28
|
-
# Make the author field a link
|
|
29
|
-
index[:user].link_to_args do |blog_post|
|
|
30
|
-
{ :controller => 'admin/users', :action => 'edit',
|
|
31
|
-
:id => blog_post.user_id }
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
index.header do |params|
|
|
35
|
-
if params[:all]
|
|
36
|
-
"Blog posts (all)"
|
|
37
|
-
else
|
|
38
|
-
"Blog posts (unpublished)"
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# For any form page:
|
|
44
|
-
a.form do |form|
|
|
45
|
-
# Only show inputs for these fields
|
|
46
|
-
form.columns :user, :title, :body, :tags, :textile, :publish
|
|
47
|
-
|
|
48
|
-
# 'publish' isn't defined on BlogPost, we have to specify that it's a
|
|
49
|
-
# check box
|
|
50
|
-
form[:publish].input = :check_box
|
|
51
|
-
|
|
52
|
-
# In addition to the 'Create'/'Update' button at the bottom, we also have
|
|
53
|
-
# a 'Preview' button
|
|
54
|
-
form.submit_buttons << 'Preview'
|
|
55
|
-
|
|
56
|
-
form[:publish].description =
|
|
57
|
-
"Click this and published_at will be set automatically"
|
|
58
|
-
|
|
59
|
-
form[:user].select_options = {:include_blank => false}
|
|
60
|
-
|
|
61
|
-
form[:body].text_area_options = {:cols => 20, :rows => 40}
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Only show some columns on the show page
|
|
65
|
-
a.show.columns :user, :title, :body, :tags, :textile, :published_at
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
protected
|
|
69
|
-
|
|
70
|
-
# This is run after all saves, whether they're creates or updates
|
|
71
|
-
def after_save(blog_post)
|
|
72
|
-
unless blog_post.tags.empty?
|
|
73
|
-
blog_post.update_attribute(:tags_string, blog_post.tags.map(&:tag).join(','))
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# This is run before all saves, whether they're creates or updates
|
|
78
|
-
def before_save(blog_post)
|
|
79
|
-
if params[:blog_post][:publish] == '1' && blog_post.published_at.nil?
|
|
80
|
-
blog_post.published_at = Time.now.utc
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
# This is run in the controller context, just before render is called
|
|
85
|
-
def before_render_for_index
|
|
86
|
-
if @index.records.any?
|
|
87
|
-
@var_set_by_before_render_for_index_hook = 'Confirmed that we have some records'
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# By default, only show unpublished blog posts unless params[:all] is
|
|
92
|
-
# passed in
|
|
93
|
-
def conditions_for_index
|
|
94
|
-
"published_at is null" unless params[:all]
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# After a successful save, redirect to the edit page with preview=1 to show
|
|
98
|
-
# the preview pane. The HTML for the preview pane is generated in
|
|
99
|
-
# app/views/admin/blog_posts2/_after_form.html.erb
|
|
100
|
-
def destination_after_save(blog_post, params)
|
|
101
|
-
if params[:commit] == 'Preview'
|
|
102
|
-
{:action => 'edit', :id => blog_post.id, :preview => '1',
|
|
103
|
-
:origin => params[:origin]}
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
# Preprocesses the 'tags' string from the form to an array of Tag objects.
|
|
108
|
-
# That way admin_assistant can say
|
|
109
|
-
#
|
|
110
|
-
# blog_post.tags = params[:tags]
|
|
111
|
-
#
|
|
112
|
-
# and this will work fine with the BlogPost#tags association
|
|
113
|
-
def tags_from_form(tags_string, record_params, errors)
|
|
114
|
-
tags = tags_string.split(/\s+/).map { |tag_str|
|
|
115
|
-
Tag.find_by_tag(tag_str) || Tag.create(:tag => tag_str)
|
|
116
|
-
}
|
|
117
|
-
bad_tags = tags.select { |t| !t.valid? }
|
|
118
|
-
unless bad_tags.empty?
|
|
119
|
-
error_str = if bad_tags.size == 1
|
|
120
|
-
"contain invalid string '#{bad_tags.first.tag}'"
|
|
121
|
-
else
|
|
122
|
-
"contain invalid strings " +
|
|
123
|
-
bad_tags.map { |t| "'#{t.tag}'" }.join(',')
|
|
124
|
-
end
|
|
125
|
-
errors.add(:tags, error_str)
|
|
126
|
-
end
|
|
127
|
-
tags
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
def validate(blog_post)
|
|
131
|
-
pub_str = params[:blog_post][:publish]
|
|
132
|
-
unless pub_str.nil? or [true, false, '0', '1'].include?(pub_str)
|
|
133
|
-
blog_post.errors.add(
|
|
134
|
-
:publish, "can't be \"#{params[:blog_post][:publish]}\""
|
|
135
|
-
)
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
end
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
class Admin::BlogPosts3Controller < ApplicationController
|
|
2
|
-
layout 'admin'
|
|
3
|
-
|
|
4
|
-
admin_assistant_for BlogPost do |a|
|
|
5
|
-
a.model_class_name = 'post'
|
|
6
|
-
|
|
7
|
-
a[:has_short_title].boolean_labels = %w(Yes No)
|
|
8
|
-
a[:published?].boolean_labels = %w(Yes No)
|
|
9
|
-
|
|
10
|
-
a.index do |index|
|
|
11
|
-
index.columns :id, :title, :created_at, :updated_at, :body, :textile,
|
|
12
|
-
:published?, :user
|
|
13
|
-
|
|
14
|
-
index[:textile].ajax_toggle = false
|
|
15
|
-
|
|
16
|
-
index.actions['All'] = {:all => '1'}
|
|
17
|
-
index.actions['Short title'] = {:short_title => '1'}
|
|
18
|
-
index.actions['Blank body'] = {:blank_body => '1'}
|
|
19
|
-
|
|
20
|
-
# By default, only show unpublished blog posts unless params[:all] is
|
|
21
|
-
# passed in. This needs to work with or without use of the field search
|
|
22
|
-
# feature
|
|
23
|
-
index.conditions do |params|
|
|
24
|
-
if params[:all]
|
|
25
|
-
elsif params[:blank_body]
|
|
26
|
-
"(body is null or body = '')"
|
|
27
|
-
elsif params[:short_title]
|
|
28
|
-
"length(title) < 10"
|
|
29
|
-
else
|
|
30
|
-
'published_at is null'
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
index.cache_total_entries 12.hours
|
|
35
|
-
|
|
36
|
-
# Extended search configuration
|
|
37
|
-
index.search do |search|
|
|
38
|
-
search.columns :id, :title, :body, :textile, :user, :has_short_title
|
|
39
|
-
search[:body].blank_checkbox = true
|
|
40
|
-
search[:has_short_title].field_type = :boolean
|
|
41
|
-
search[:has_short_title].conditions do |has_short_title|
|
|
42
|
-
if has_short_title
|
|
43
|
-
"length(title) < 10"
|
|
44
|
-
elsif has_short_title == false
|
|
45
|
-
"length(title) >= 10"
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
search[:id].comparators = false
|
|
49
|
-
search[:user].match_text_fields_for_association
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# sort by user by default
|
|
53
|
-
index.sort_by :user
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
a.form do |form|
|
|
57
|
-
form.columns_for_new :title, :user, :published_at
|
|
58
|
-
form.columns_for_edit :title, :user, :published_at, :body, :merged_into
|
|
59
|
-
form[:published_at].datetime_select_options =
|
|
60
|
-
{:include_blank => false, :start_year => 2009}
|
|
61
|
-
form[:published_at].default do |controller|
|
|
62
|
-
controller.time_now_utc
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def time_now_utc
|
|
68
|
-
Time.now.utc
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
protected
|
|
72
|
-
|
|
73
|
-
def before_validation(blog_post)
|
|
74
|
-
blog_post.title = '(draft)' if blog_post.title.blank?
|
|
75
|
-
end
|
|
76
|
-
end
|