card 1.17.4 → 1.18.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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/card.gemspec +24 -25
- data/config/initializers/01_init_ruby_extensions.rb +0 -4
- data/config/initializers/inflections.rb +1 -1
- data/config/initializers/notification.rb +2 -2
- data/db/migrate/20110511221913_require_earlier_migrations.rb +3 -3
- data/db/migrate/20120105203350_require_1_8_migrations.rb +3 -3
- data/db/migrate/20121111025347_require_1_10_migrations.rb +3 -3
- data/db/migrate/20130106052640_table_cleanup.rb +4 -4
- data/db/migrate/20130411210957_update_codenames.rb +2 -2
- data/db/migrate/20141001105348_move_revisions_to_actions.rb +4 -4
- data/db/migrate/20141121172918_rename_card_migration_table.rb +2 -2
- data/db/migrate/20141208132159_remove_present_from_reference_table.rb +2 -2
- data/db/migrate/20141216053032_better_index_names.rb +9 -9
- data/db/migrate_core_cards/20120611203506_rails_inflection_updates.rb +29 -32
- data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +3 -4
- data/db/migrate_core_cards/20130411211600_delete_old_related_tab_cards.rb +1 -1
- data/db/migrate_core_cards/20130419215612_import_help_text.rb +1 -2
- data/db/migrate_core_cards/20130823192433_add_style_cards.rb +3 -3
- data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +2 -3
- data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +2 -2
- data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +1 -2
- data/db/migrate_core_cards/20130927191728_account_events.rb +5 -6
- data/db/migrate_core_cards/20131016172445_common_css_patch.rb +2 -3
- data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +0 -1
- data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +23 -32
- data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +1 -7
- data/db/migrate_core_cards/20140512155840_add_script_cards.rb +21 -24
- data/db/migrate_core_cards/20140629222005_add_email_cards.rb +17 -22
- data/db/migrate_core_cards/20140725180118_config_card_updates.rb +2 -2
- data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +1 -3
- data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +2 -2
- data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +3 -3
- data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +1 -1
- data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +8 -12
- data/db/migrate_core_cards/20141208162106_add_ace_script.rb +2 -3
- data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +10 -10
- data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +10 -12
- data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +4 -4
- data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +3 -3
- data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +7 -7
- data/db/migrate_core_cards/20150429090551_search_card_context.rb +18 -20
- data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +3 -7
- data/db/migrate_core_cards/20150510031118_fix_skin_images.rb +2 -3
- data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +3 -3
- data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +4 -4
- data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +4 -4
- data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +5 -11
- data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +29 -35
- data/db/migrate_core_cards/20150824135418_update_file_history.rb +10 -14
- data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +1 -1
- data/db/schema.rb +92 -94
- data/db/seed/new/card_actions.yml +461 -469
- data/db/seed/new/card_acts.yml +154 -172
- data/db/seed/new/card_changes.yml +4076 -4031
- data/db/seed/new/card_references.yml +1584 -1927
- data/db/seed/new/cards.yml +2095 -2112
- data/db/seed/test/fixtures/card_actions.yml +1497 -1505
- data/db/seed/test/fixtures/card_acts.yml +454 -472
- data/db/seed/test/fixtures/card_changes.yml +7309 -7263
- data/db/seed/test/fixtures/card_references.yml +2263 -2613
- data/db/seed/test/fixtures/cards.yml +3298 -3316
- data/db/seed/test/seed.rb +3 -0
- data/lib/card.rb +17 -9
- data/lib/card/active_record_ext.rb +6 -8
- data/lib/card/active_record_helper.rb +42 -32
- data/lib/card/auth.rb +3 -3
- data/lib/card/cache.rb +4 -4
- data/lib/card/cache/persistent.rb +9 -5
- data/lib/card/cache/temporary.rb +5 -5
- data/lib/card/chunk.rb +1 -1
- data/lib/card/codename.rb +3 -2
- data/lib/card/content.rb +62 -57
- data/lib/card/core_ext.rb +20 -30
- data/lib/card/diff.rb +88 -76
- data/lib/card/director_register.rb +66 -0
- data/lib/card/env.rb +14 -17
- data/lib/card/exceptions.rb +7 -9
- data/lib/card/format.rb +18 -367
- data/lib/card/format/nest.rb +183 -0
- data/lib/card/format/permission.rb +63 -0
- data/lib/card/format/render.rb +140 -0
- data/lib/card/loader.rb +17 -26
- data/lib/card/location.rb +6 -6
- data/lib/card/mailer.rb +4 -7
- data/lib/card/migration.rb +1 -1
- data/lib/card/name.rb +3 -6
- data/lib/card/query.rb +8 -8
- data/lib/card/query/attributes.rb +6 -6
- data/lib/card/query/clause.rb +10 -10
- data/lib/card/query/join.rb +7 -9
- data/lib/card/query/reference.rb +17 -19
- data/lib/card/query/sql_statement.rb +2 -2
- data/lib/card/query/value.rb +15 -16
- data/lib/card/set.rb +106 -209
- data/lib/card/set/event.rb +126 -0
- data/lib/card/set_pattern.rb +42 -29
- data/lib/card/simplecov_helper.rb +19 -19
- data/lib/card/spec_helper.rb +40 -16
- data/lib/card/stage.rb +72 -0
- data/lib/card/stage_director.rb +231 -0
- data/lib/card/subcards.rb +56 -24
- data/lib/card/subdirector_array.rb +31 -0
- data/lib/card/success.rb +15 -18
- data/lib/card/version.rb +1 -2
- data/lib/card/view_cache.rb +4 -4
- data/lib/card/view_name.rb +10 -8
- data/lib/cardio.rb +1 -1
- data/lib/generators/card.rb +2 -4
- data/lib/generators/card/format/format_generator.rb +4 -4
- data/lib/generators/card/migration/migration_generator.rb +6 -6
- data/lib/generators/card/set/set_generator.rb +5 -6
- data/mod/01_core/chunk/include.rb +2 -1
- data/mod/01_core/chunk/link.rb +2 -2
- data/mod/01_core/chunk/literal.rb +6 -9
- data/mod/01_core/chunk/query_reference.rb +1 -1
- data/mod/01_core/chunk/reference.rb +2 -2
- data/mod/01_core/chunk/uri.rb +52 -63
- data/mod/01_core/format/html_format.rb +8 -12
- data/mod/01_core/format/text_format.rb +1 -1
- data/mod/01_core/set/all/actify.rb +96 -0
- data/mod/01_core/set/all/active_card.rb +7 -7
- data/mod/01_core/set/all/collection.rb +19 -20
- data/mod/01_core/set/all/content.rb +9 -7
- data/mod/01_core/set/all/erb.rb +5 -5
- data/mod/01_core/set/all/event.rb +60 -0
- data/mod/01_core/set/all/fetch.rb +13 -19
- data/mod/01_core/set/all/haml.rb +1 -1
- data/mod/01_core/set/all/initialize.rb +35 -41
- data/mod/01_core/set/all/location_history.rb +3 -5
- data/mod/01_core/set/all/name.rb +19 -68
- data/mod/01_core/set/all/name_validations.rb +56 -0
- data/mod/01_core/set/all/pattern.rb +2 -2
- data/mod/01_core/set/all/permissions.rb +14 -20
- data/mod/01_core/set/all/phases.rb +9 -200
- data/mod/01_core/set/all/references.rb +10 -10
- data/mod/01_core/set/all/rules.rb +3 -4
- data/mod/01_core/set/all/stages.rb +24 -0
- data/mod/01_core/set/all/states.rb +4 -4
- data/mod/01_core/set/all/subcards.rb +16 -26
- data/mod/01_core/set/all/templating.rb +1 -3
- data/mod/01_core/set/all/tracked_attributes.rb +47 -48
- data/mod/01_core/set/all/trash.rb +10 -10
- data/mod/01_core/set/all/type.rb +9 -8
- data/mod/01_core/set/all/utils.rb +10 -14
- data/mod/01_core/set/all/view_cache.rb +2 -2
- data/mod/01_core/set_pattern/01_all.rb +3 -3
- data/mod/01_core/set_pattern/02_all_plus.rb +3 -3
- data/mod/01_core/set_pattern/03_type.rb +2 -2
- data/mod/01_core/set_pattern/04_star.rb +3 -3
- data/mod/01_core/set_pattern/05_rstar.rb +3 -3
- data/mod/01_core/set_pattern/06_right.rb +2 -2
- data/mod/01_core/set_pattern/07_type_plus_right.rb +2 -2
- data/mod/01_core/set_pattern/08_self.rb +1 -1
- data/mod/01_core/spec/chunk/literal_spec.rb +7 -8
- data/mod/01_core/spec/chunk/uri_spec.rb +140 -142
- data/mod/01_core/spec/format/html_format_spec.rb +72 -57
- data/mod/01_core/spec/set/all/collection_spec.rb +63 -43
- data/mod/01_core/spec/set/all/content_spec.rb +4 -4
- data/mod/01_core/spec/set/all/fetch_spec.rb +12 -3
- data/mod/01_core/spec/set/all/name_spec.rb +3 -4
- data/mod/01_core/spec/set/all/pattern_spec.rb +32 -35
- data/mod/01_core/spec/set/all/permissions_spec.rb +17 -5
- data/mod/01_core/spec/set/all/phases_spec.rb +0 -1
- data/mod/01_core/spec/set/all/references_spec.rb +1 -1
- data/mod/01_core/spec/set/all/rules2_spec.rb +79 -91
- data/mod/01_core/spec/set/all/rules_spec.rb +63 -56
- data/mod/01_core/spec/set/all/templating_spec.rb +0 -1
- data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +4 -5
- data/mod/01_core/spec/set/all/trash_spec.rb +23 -1
- data/mod/01_core/spec/set/all/type_spec.rb +2 -5
- data/mod/01_history/lib/card/action.rb +8 -10
- data/mod/01_history/set/all/actions.rb +2 -4
- data/mod/01_history/set/all/content_history.rb +38 -32
- data/mod/01_history/set/all/history.rb +20 -17
- data/mod/02_basic_types/format/rss_format.rb +0 -1
- data/mod/02_basic_types/set/all/all_css.rb +9 -13
- data/mod/02_basic_types/set/all/all_csv.rb +14 -17
- data/mod/02_basic_types/set/all/all_js.rb +3 -4
- data/mod/02_basic_types/set/all/base.rb +2 -2
- data/mod/02_basic_types/set/all/file.rb +2 -5
- data/mod/02_basic_types/set/all/json.rb +19 -18
- data/mod/02_basic_types/set/all/rss.rb +3 -3
- data/mod/02_basic_types/set/all/text.rb +1 -3
- data/mod/02_basic_types/set/type/html.rb +4 -8
- data/mod/02_basic_types/set/type/plain_text.rb +2 -3
- data/mod/02_basic_types/set/type/pointer.rb +82 -92
- data/mod/02_basic_types/spec/set/all/all_css_spec.rb +2 -2
- data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +6 -4
- data/mod/02_basic_types/spec/set/all/base_spec.rb +6 -6
- data/mod/02_basic_types/spec/set/all/json_spec.rb +8 -8
- data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +3 -3
- data/mod/02_basic_types/spec/set/type/pointer_spec.rb +29 -32
- data/mod/03_machines/lib/card/machine.rb +95 -81
- data/mod/03_machines/lib/card/machine_input.rb +35 -34
- data/mod/03_machines/set/right/machine_input.rb +1 -1
- data/mod/03_machines/set/self/script_ace.rb +2 -3
- data/mod/03_machines/set/self/script_card_menu.rb +2 -3
- data/mod/03_machines/set/self/script_jquery_helper.rb +2 -2
- data/mod/03_machines/set/self/script_slot.rb +2 -2
- data/mod/03_machines/set/self/style_bootstrap_compatible.rb +1 -1
- data/mod/03_machines/set/self/style_cards.rb +1 -1
- data/mod/03_machines/set/self/style_jquery_ui_smoothness.rb +0 -1
- data/mod/03_machines/set/type/coffee_script.rb +9 -13
- data/mod/03_machines/set/type/css.rb +12 -13
- data/mod/03_machines/set/type/java_script.rb +6 -8
- data/mod/03_machines/set/type/scss.rb +4 -5
- data/mod/03_machines/set/type/skin.rb +3 -6
- data/mod/03_machines/spec/lib/shared_machine_examples.rb +31 -38
- data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +7 -8
- data/mod/03_machines/spec/set/type/coffeescript_spec.rb +19 -13
- data/mod/03_machines/spec/set/type/css_spec.rb +22 -16
- data/mod/03_machines/spec/set/type/scss_spec.rb +28 -21
- data/mod/03_machines/spec/set/type/skin_spec.rb +28 -30
- data/mod/04_settings/lib/card/setting.rb +4 -4
- data/mod/04_settings/set/abstract/permission.rb +30 -37
- data/mod/04_settings/set/right/add_help.rb +3 -3
- data/mod/04_settings/set/right/script.rb +4 -5
- data/mod/04_settings/set/right/structure.rb +3 -4
- data/mod/04_settings/set/right/style.rb +3 -3
- data/mod/04_settings/set/self/add_help.rb +1 -1
- data/mod/04_settings/set/self/input.rb +1 -1
- data/mod/04_settings/set/self/on_create.rb +1 -1
- data/mod/04_settings/set/self/options.rb +1 -1
- data/mod/04_settings/set/self/options_label.rb +1 -1
- data/mod/04_settings/set/type/setting.rb +29 -44
- data/mod/04_settings/spec/set/right/comment_spec.rb +9 -12
- data/mod/04_settings/spec/set/right/script_spec.rb +7 -7
- data/mod/04_settings/spec/set/right/structure_spec.rb +13 -12
- data/mod/04_settings/spec/set/right/style_spec.rb +13 -13
- data/mod/04_settings/spec/set/type/setting_spec.rb +1 -1
- data/mod/05_email/format/email_html_format.rb +1 -1
- data/mod/05_email/format/email_text_format.rb +2 -2
- data/mod/05_email/lib/card/follow_option.rb +12 -15
- data/mod/05_email/set/all/email_html.rb +2 -3
- data/mod/05_email/set/all/email_text.rb +3 -3
- data/mod/05_email/set/all/follow.rb +14 -22
- data/mod/05_email/set/all/notify.rb +11 -11
- data/mod/05_email/set/all/observer.rb +7 -8
- data/mod/05_email/set/right/bcc.rb +4 -9
- data/mod/05_email/set/right/follow.rb +26 -39
- data/mod/05_email/set/right/follow_fields.rb +2 -2
- data/mod/05_email/set/right/followers.rb +3 -1
- data/mod/05_email/set/right/following.rb +13 -16
- data/mod/05_email/set/self/always.rb +1 -2
- data/mod/05_email/set/self/created.rb +4 -6
- data/mod/05_email/set/self/edited.rb +3 -7
- data/mod/05_email/set/self/follow_defaults.rb +11 -12
- data/mod/05_email/set/self/never.rb +2 -4
- data/mod/05_email/set/type/email_template.rb +40 -27
- data/mod/05_email/set/type_plus_right/user/follow.rb +159 -157
- data/mod/05_email/spec/set/all/follow_spec.rb +28 -37
- data/mod/05_email/spec/set/all/notify_spec.rb +21 -26
- data/mod/05_email/spec/set/all/observer_spec.rb +58 -37
- data/mod/05_email/spec/set/right/followers_spec.rb +9 -14
- data/mod/05_email/spec/set/right/following_spec.rb +1 -1
- data/mod/05_email/spec/set/self/follow_defaults_spec.rb +1 -1
- data/mod/05_standard/lib/carrier_wave/cardmount.rb +9 -9
- data/mod/05_standard/lib/file_uploader.rb +8 -13
- data/mod/05_standard/lib/image_uploader.rb +8 -9
- data/mod/05_standard/set/abstract/attachment.rb +26 -43
- data/mod/05_standard/set/all/account.rb +2 -2
- data/mod/05_standard/set/all/comment.rb +11 -13
- data/mod/05_standard/set/all/error.rb +18 -18
- data/mod/05_standard/set/all/event_viz.rb +16 -29
- data/mod/05_standard/set/all/links.rb +35 -34
- data/mod/05_standard/set/all/list_changes.rb +10 -12
- data/mod/05_standard/set/all/rich_html/content.rb +13 -13
- data/mod/05_standard/set/all/rich_html/editing.rb +5 -5
- data/mod/05_standard/set/all/rich_html/form.rb +22 -26
- data/mod/05_standard/set/all/rich_html/header.rb +18 -25
- data/mod/05_standard/set/all/rich_html/menu.rb +20 -22
- data/mod/05_standard/set/all/rich_html/modal.rb +3 -3
- data/mod/05_standard/set/all/rich_html/toolbar.rb +49 -58
- data/mod/05_standard/set/all/rich_html/wrapper.rb +40 -41
- data/mod/05_standard/set/right/account.rb +26 -14
- data/mod/05_standard/set/right/email.rb +2 -2
- data/mod/05_standard/set/right/password.rb +6 -5
- data/mod/05_standard/set/right/salt.rb +2 -2
- data/mod/05_standard/set/right/stats.rb +17 -20
- data/mod/05_standard/set/right/token.rb +1 -1
- data/mod/05_standard/set/right/when_created.rb +1 -1
- data/mod/05_standard/set/right/when_last_edited.rb +1 -1
- data/mod/05_standard/set/rstar/rules.rb +3 -3
- data/mod/05_standard/set/rstar/rules_editor.rb +39 -39
- data/mod/05_standard/set/self/account_links.rb +21 -22
- data/mod/05_standard/set/self/admin_info.rb +5 -5
- data/mod/05_standard/set/self/alerts.rb +1 -1
- data/mod/05_standard/set/self/all.rb +1 -1
- data/mod/05_standard/set/self/foot.rb +1 -1
- data/mod/05_standard/set/self/head.rb +19 -22
- data/mod/05_standard/set/self/navbox.rb +3 -7
- data/mod/05_standard/set/self/now.rb +1 -1
- data/mod/05_standard/set/self/recent.rb +19 -25
- data/mod/05_standard/set/self/search.rb +2 -4
- data/mod/05_standard/set/self/signin.rb +6 -6
- data/mod/05_standard/set/self/stats.rb +31 -38
- data/mod/05_standard/set/self/version.rb +1 -2
- data/mod/05_standard/set/type/basic.rb +15 -17
- data/mod/05_standard/set/type/cardtype.rb +3 -3
- data/mod/05_standard/set/type/date.rb +1 -2
- data/mod/05_standard/set/type/file.rb +22 -33
- data/mod/05_standard/set/type/image.rb +30 -23
- data/mod/05_standard/set/type/layout_type.rb +4 -4
- data/mod/05_standard/set/type/list.rb +32 -38
- data/mod/05_standard/set/type/listed_by.rb +11 -13
- data/mod/05_standard/set/type/number.rb +5 -6
- data/mod/05_standard/set/type/phrase.rb +1 -1
- data/mod/05_standard/set/type/search_type.rb +25 -23
- data/mod/05_standard/set/type/session.rb +2 -3
- data/mod/05_standard/set/type/set.rb +46 -51
- data/mod/05_standard/set/type/signup.rb +18 -19
- data/mod/05_standard/set/type/toggle.rb +5 -5
- data/mod/05_standard/set/type/user.rb +6 -6
- data/mod/05_standard/spec/chunk/include_spec.rb +115 -98
- data/mod/05_standard/spec/chunk/link_spec.rb +58 -31
- data/mod/05_standard/spec/chunk/query_reference_spec.rb +12 -14
- data/mod/05_standard/spec/set/all/email_html_spec.rb +3 -3
- data/mod/05_standard/spec/set/all/error_spec.rb +3 -3
- data/mod/05_standard/spec/set/all/history_spec.rb +52 -38
- data/mod/05_standard/spec/set/all/links_spec.rb +2 -2
- data/mod/05_standard/spec/set/all/rich_html/editing_spec.rb +0 -1
- data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +11 -11
- data/mod/05_standard/spec/set/all/rich_html/wrapper_spec.rb +4 -4
- data/mod/05_standard/spec/set/right/email_spec.rb +1 -4
- data/mod/05_standard/spec/set/right/password_spec.rb +4 -7
- data/mod/05_standard/spec/set/right/stats_spec.rb +2 -3
- data/mod/05_standard/spec/set/right/when_created_spec.rb +1 -1
- data/mod/05_standard/spec/set/right/when_last_edited_spec.rb +1 -1
- data/mod/05_standard/spec/set/rstar/rules_spec.rb +6 -6
- data/mod/05_standard/spec/set/self/all_spec.rb +11 -13
- data/mod/05_standard/spec/set/self/head_spec.rb +1 -3
- data/mod/05_standard/spec/set/self/navbox_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/now_spec.rb +2 -2
- data/mod/05_standard/spec/set/self/signin_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/stats_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/version_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/cardtype_spec.rb +3 -4
- data/mod/05_standard/spec/set/type/date_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/email_template_spec.rb +5 -5
- data/mod/05_standard/spec/set/type/file_spec.rb +50 -28
- data/mod/05_standard/spec/set/type/html_spec.rb +12 -7
- data/mod/05_standard/spec/set/type/image_spec.rb +55 -45
- data/mod/05_standard/spec/set/type/layout_type_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/listed_by_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/number_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/phrase_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/search_type_spec.rb +15 -16
- data/mod/05_standard/spec/set/type/set_spec.rb +16 -17
- data/mod/05_standard/spec/set/type/signup_spec.rb +7 -5
- data/mod/05_standard/spec/set/type/toggle_spec.rb +4 -4
- data/mod/05_standard/spec/set/type/uri_spec.rb +11 -11
- data/mod/05_standard/spec/set/type/user_spec.rb +0 -1
- data/mod/06_bootstrap/set/all/bootstrap/form.rb +9 -10
- data/mod/06_bootstrap/set/all/bootstrap/helper.rb +22 -27
- data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +1 -2
- data/mod/06_bootstrap/set/all/rich_bootstrap.rb +1 -3
- data/mod/06_bootstrap/set/self/bootstrap_cards.rb +2 -2
- data/mod/06_bootstrap/set/self/bootstrap_js.rb +2 -2
- data/mod/06_bootstrap/set/self/bootswatch_shared.rb +19 -19
- data/mod/06_bootstrap/set/self/smartmenu_css.rb +2 -2
- data/mod/06_bootstrap/set/self/smartmenu_js.rb +3 -3
- data/mod/06_bootstrap/spec/set/all/bootstrap/form_spec.rb +5 -5
- data/spec/lib/card/action_spec.rb +4 -4
- data/spec/lib/card/cache_spec.rb +3 -5
- data/spec/lib/card/chunk_spec.rb +6 -8
- data/spec/lib/card/codename_spec.rb +4 -6
- data/spec/lib/card/content_spec.rb +12 -17
- data/spec/lib/card/diff_spec.rb +59 -61
- data/spec/lib/card/format_spec.rb +55 -34
- data/spec/lib/card/loader_spec.rb +35 -37
- data/spec/lib/card/name_spec.rb +159 -145
- data/spec/lib/card/query_spec.rb +4 -4
- data/spec/lib/card/reference_spec.rb +24 -24
- data/spec/lib/card/set_pattern_spec.rb +3 -3
- data/spec/lib/card/stage_director_spec.rb +218 -0
- data/spec/lib/card/subcards_spec.rb +12 -16
- data/spec/lib/card/success_spec.rb +16 -18
- data/spec/lib/card/view_cache_spec.rb +1 -1
- data/spec/mailers/mailer_spec.rb +3 -5
- data/spec/models/card/cardtype_spec.rb +40 -51
- data/spec/models/card/create_spec.rb +58 -39
- data/spec/models/card/trash_spec.rb +23 -32
- data/spec/models/card/type_transition_spec.rb +41 -32
- data/spec/models/card/validation_spec.rb +13 -15
- data/spec/models/card_spec.rb +48 -59
- data/spec/spec_helper.rb +26 -31
- metadata +16 -2
@@ -1,4 +1,5 @@
|
|
1
|
-
# the events method is a developer's tool for visualizing the event order
|
1
|
+
# the events method is a developer's tool for visualizing the event order
|
2
|
+
# for a given card.
|
2
3
|
# For example, from a console you might run
|
3
4
|
#
|
4
5
|
# puts mycard.events :update
|
@@ -7,17 +8,17 @@
|
|
7
8
|
# The indention and arrows (^v) indicate event dependencies.
|
8
9
|
#
|
9
10
|
# Note: as of yet, the functionality is a bit rough. It does not display events
|
10
|
-
# that are called directly from within other events
|
11
|
-
# requirements (like the presence of a
|
12
|
-
# up in the tree.
|
11
|
+
# that are called directly from within other events,
|
12
|
+
# and certain event requirements (like the presence of a 'current_act') may
|
13
|
+
# prevent events from showing up in the tree.
|
13
14
|
def events action
|
14
15
|
@action = action
|
15
|
-
events = [
|
16
|
+
events = [events_tree(:validation), events_tree(:save)]
|
16
17
|
@action = nil
|
17
18
|
puts_events events
|
18
19
|
end
|
19
20
|
|
20
|
-
#private
|
21
|
+
# private
|
21
22
|
|
22
23
|
def puts_events events, prefix='', depth=0
|
23
24
|
r = ''
|
@@ -25,45 +26,31 @@ def puts_events events, prefix='', depth=0
|
|
25
26
|
events.each do |e|
|
26
27
|
space = ' ' * (depth * 2)
|
27
28
|
|
28
|
-
#FIXME
|
29
|
-
# not all befores then all arounds
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
if e[:around]
|
35
|
-
r += puts_events( e[:around], space+'vv ', depth )
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
output = "#{prefix}#{e[:name]}"
|
40
|
-
#warn output
|
41
|
-
r+= "#{output}\n"
|
42
|
-
|
43
|
-
if e[:after]
|
44
|
-
r += puts_events( e[:after ].reverse, space+'^ ', depth )
|
45
|
-
end
|
29
|
+
# FIXME: this is not right. before and around callbacks are processed in
|
30
|
+
# declaration order regardless of kind. not all befores then all arounds
|
31
|
+
e[:before] && r += puts_events(e[:before], space + 'v ', depth)
|
32
|
+
e[:around] && r += puts_events(e[:around], space + 'vv ', depth)
|
33
|
+
r += "#{prefix}#{e[:name]}\n"
|
34
|
+
e[:after] && r += puts_events(e[:after].reverse, space + '^ ', depth)
|
46
35
|
end
|
47
36
|
r
|
48
37
|
end
|
49
38
|
|
50
39
|
def events_tree filt
|
51
|
-
hash = {name: filt }
|
40
|
+
hash = { name: filt }
|
52
41
|
if respond_to? "_#{filt}_callbacks"
|
53
|
-
send(
|
42
|
+
send("_#{filt}_callbacks").each do |callback|
|
54
43
|
next unless callback.applies? self
|
55
44
|
hash[callback.kind] ||= []
|
56
|
-
hash[callback.kind] << events_tree(
|
45
|
+
hash[callback.kind] << events_tree(callback.filter)
|
57
46
|
end
|
58
47
|
end
|
59
48
|
|
60
49
|
hash
|
61
50
|
end
|
62
51
|
|
63
|
-
|
64
52
|
class ::ActiveSupport::Callbacks::Callback
|
65
53
|
def applies? object
|
66
54
|
conditions_lambdas.all? { |c| c.call(object, nil) }
|
67
55
|
end
|
68
56
|
end
|
69
|
-
|
@@ -1,5 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
1
|
format do
|
4
2
|
# link is called by web_link, card_link, and view_link
|
5
3
|
# (and is overridden in other formats)
|
@@ -35,15 +33,19 @@ format do
|
|
35
33
|
text = opts.delete(:text) || href
|
36
34
|
new_class =
|
37
35
|
case href
|
38
|
-
when /^https?\:/
|
39
|
-
|
40
|
-
|
36
|
+
when /^https?\:/
|
37
|
+
opts[:target] = '_blank'
|
38
|
+
'external-link'
|
39
|
+
when /^mailto\:/
|
40
|
+
'email-link'
|
41
|
+
when /^([a-zA-Z][\-+\.a-zA-Z\d]*):/
|
42
|
+
Regexp.last_match(1) + '-link'
|
41
43
|
when /^\//
|
42
|
-
|
44
|
+
href = internal_url href[1..-1]
|
45
|
+
'internal-link'
|
43
46
|
else
|
44
47
|
return card_link href, opts
|
45
48
|
end
|
46
|
-
opts[:target] = "_blank" if new_class == 'external-link'
|
47
49
|
add_class opts, new_class
|
48
50
|
link_to text, href, opts
|
49
51
|
end
|
@@ -69,7 +71,7 @@ format do
|
|
69
71
|
# link to a specific view (defaults to current card)
|
70
72
|
# this is generally used for ajax calls
|
71
73
|
def view_link text, view, opts={}
|
72
|
-
path_opts = opts.delete(
|
74
|
+
path_opts = opts.delete(:path_opts) || {}
|
73
75
|
path_opts[:view] = view unless view == :home
|
74
76
|
opts[:remote] = true
|
75
77
|
opts[:rel] = 'nofollow'
|
@@ -84,41 +86,34 @@ format do
|
|
84
86
|
when Card then name_or_card.cardname
|
85
87
|
else name_or_card
|
86
88
|
end
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
89
|
+
opts[:path_opts] ||= { view: :related }
|
90
|
+
opts[:path_opts][:related] = { name: "+#{name}" }
|
91
|
+
opts[:path_opts][:related].merge! opts[:related_opts] if opts[:related_opts]
|
92
|
+
view_link(opts[:text] || name, :related, opts)
|
91
93
|
end
|
92
94
|
|
93
|
-
|
94
|
-
|
95
95
|
def path opts={}
|
96
|
-
if opts[:action] == :new && opts[:type] &&
|
96
|
+
if opts[:action] == :new && opts[:type] &&
|
97
|
+
!(opts[:name] || opts[:card] || opts[:id])
|
97
98
|
opts.delete(:action)
|
98
99
|
base = "new/#{opts.delete(:type)}"
|
99
100
|
else
|
100
101
|
name = opts.delete(:name) || card.name
|
101
|
-
base = opts[:action] ? "card/#{
|
102
|
+
base = opts[:action] ? "card/#{opts.delete :action}/" : ''
|
102
103
|
|
103
104
|
opts[:no_id] = true if [:new, :create].member? opts[:action]
|
104
|
-
#generalize. dislike hardcoding views/actions here
|
105
|
+
# generalize. dislike hardcoding views/actions here
|
105
106
|
|
106
107
|
linkname = name.to_name.url_key
|
107
108
|
unless name.empty? || opts.delete(:no_id)
|
108
|
-
base += (
|
109
|
+
base += (opts[:id] ? "~#{opts.delete :id}" : linkname)
|
109
110
|
end
|
110
111
|
|
111
|
-
opts
|
112
|
-
opts[:card][:name] = name if opts.delete(:known)==false && name.present? && name.to_s != linkname
|
113
|
-
|
114
|
-
if type = opts.delete(:type) and Card.known?( type )
|
115
|
-
opts[:card][:type] = type
|
116
|
-
end
|
117
|
-
opts.delete(:card) if opts[:card].empty?
|
112
|
+
process_path_card_opts opts, name, linkname
|
118
113
|
end
|
119
114
|
|
120
115
|
query = opts.empty? ? '' : "?#{opts.to_param}"
|
121
|
-
internal_url(
|
116
|
+
internal_url(base + query)
|
122
117
|
end
|
123
118
|
|
124
119
|
def internal_url relative_path
|
@@ -126,32 +121,38 @@ format do
|
|
126
121
|
end
|
127
122
|
|
128
123
|
def interpret_href href
|
129
|
-
Hash
|
124
|
+
href.is_a?(Hash) ? path(href) : href
|
130
125
|
end
|
131
126
|
|
127
|
+
def process_path_card_opts opts, name, linkname
|
128
|
+
opts[:card] ||= {}
|
129
|
+
if opts.delete(:known) == false && name.present? && name.to_s != linkname
|
130
|
+
opts[:card][:name] = name
|
131
|
+
end
|
132
|
+
|
133
|
+
if (type = opts.delete(:type)) && Card.known?(type)
|
134
|
+
opts[:card][:type] = type
|
135
|
+
end
|
136
|
+
opts.delete(:card) if opts[:card].empty?
|
137
|
+
end
|
132
138
|
end
|
133
139
|
|
134
140
|
format :html do
|
135
|
-
|
136
|
-
|
137
141
|
def link_to text, href, opts={}
|
138
142
|
href = interpret_href href
|
139
143
|
|
140
144
|
[:remote, :method].each do |key|
|
141
|
-
if val = opts.delete(key)
|
145
|
+
if (val = opts.delete(key))
|
142
146
|
opts["data-#{key}"] = val
|
143
147
|
end
|
144
148
|
end
|
145
149
|
|
146
150
|
content_tag :a, raw(text), opts.merge(href: href)
|
147
151
|
end
|
148
|
-
|
149
152
|
end
|
150
153
|
|
151
|
-
|
152
154
|
format :css do
|
153
|
-
def link_to
|
155
|
+
def link_to _text, href, _opts={}
|
154
156
|
interpret_href href
|
155
157
|
end
|
156
|
-
|
157
158
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
|
-
|
4
3
|
def list_fields
|
5
4
|
Card.search({ left: name, type_id: Card::ListID }, 'list fields')
|
6
5
|
end
|
@@ -14,8 +13,8 @@ def linker_lists
|
|
14
13
|
"lists that link to #{name}")
|
15
14
|
end
|
16
15
|
|
17
|
-
event :trunk_cardtype_of_a_list_relation_changed,
|
18
|
-
changed: :type,
|
16
|
+
event :trunk_cardtype_of_a_list_relation_changed, :finalize,
|
17
|
+
changed: :type, on: :update,
|
19
18
|
when: proc { Codename[:list] } do
|
20
19
|
type_key_was = (tk = Card.quick_fetch(type_id_was)) && tk.key
|
21
20
|
|
@@ -26,8 +25,8 @@ event :trunk_cardtype_of_a_list_relation_changed,
|
|
26
25
|
listed_by_fields.each &:update_cached_list
|
27
26
|
end
|
28
27
|
|
29
|
-
event :trunk_name_of_a_list_relation_changed,
|
30
|
-
changed: :name,
|
28
|
+
event :trunk_name_of_a_list_relation_changed, :finalize,
|
29
|
+
changed: :name, on: :update,
|
31
30
|
when: proc { Codename[:list] } do
|
32
31
|
list_fields.each do |card|
|
33
32
|
card.update_listed_by_cache_for card.item_keys
|
@@ -35,14 +34,13 @@ event :trunk_name_of_a_list_relation_changed,
|
|
35
34
|
listed_by_fields.each &:update_cached_list
|
36
35
|
end
|
37
36
|
|
38
|
-
event :cardtype_of_list_item_changed,
|
39
|
-
changed: :type,
|
37
|
+
event :cardtype_of_list_item_changed, :validate,
|
38
|
+
changed: :type, on: :save,
|
40
39
|
when: proc { Codename[:list] } do
|
41
40
|
linker_lists.each do |card|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
41
|
+
next unless card.item_type_id != type_id
|
42
|
+
errors.add(:type,
|
43
|
+
"can't be changed because #{name} " \
|
44
|
+
"is referenced by list card #{card.name}")
|
47
45
|
end
|
48
46
|
end
|
@@ -5,12 +5,12 @@ end
|
|
5
5
|
format :html do
|
6
6
|
def show view, args
|
7
7
|
if show_layout?
|
8
|
-
args
|
8
|
+
args[:view] = view if view
|
9
9
|
@main_opts = args
|
10
10
|
render :layout
|
11
11
|
else
|
12
12
|
view ||= args[:home_view] || :open
|
13
|
-
@
|
13
|
+
@nest_opts = (args[:items] || {}).clone
|
14
14
|
render view, args
|
15
15
|
end
|
16
16
|
end
|
@@ -42,7 +42,7 @@ format :html do
|
|
42
42
|
[
|
43
43
|
_optional_render(:menu, args, :hide),
|
44
44
|
_render_core(args)
|
45
|
-
]
|
45
|
+
].join("\n")
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -86,9 +86,9 @@ format :html do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
view :type_info do
|
89
|
-
link_args = { text:
|
89
|
+
link_args = { text: card.type_name.to_s, class: 'navbar-link' }
|
90
90
|
link = card_link card.type_name, link_args
|
91
|
-
%
|
91
|
+
%(<span class="type-info pull-right">#{link}</span>).html_safe
|
92
92
|
end
|
93
93
|
|
94
94
|
view :title_editable do |args|
|
@@ -179,7 +179,7 @@ format :html do
|
|
179
179
|
Card.fetch rcardname, new: {}
|
180
180
|
end
|
181
181
|
|
182
|
-
subheader =
|
182
|
+
subheader = with_name_context(card.name) do
|
183
183
|
subformat(rcard)._render_title(args)
|
184
184
|
end
|
185
185
|
add_name_context card.name
|
@@ -206,17 +206,17 @@ format :html do
|
|
206
206
|
setting = card.new_card? ? [:add_help, { fallback: :help }] : :help
|
207
207
|
help_card = card.rule_card(*setting)
|
208
208
|
if help_card && help_card.ok?(:read)
|
209
|
-
|
209
|
+
with_nest_mode :normal do
|
210
210
|
raw_help_content = _render_raw args.merge(structure: help_card.name)
|
211
211
|
process_content raw_help_content, content_opts:
|
212
212
|
{ chunk_list: :references }
|
213
213
|
# render help card with current card's format
|
214
|
-
# so current card's context is used in help card
|
214
|
+
# so current card's context is used in help card nests
|
215
215
|
end
|
216
216
|
end
|
217
217
|
end
|
218
218
|
klass = [args[:help_class], 'help-text'].compact * ' '
|
219
|
-
%
|
219
|
+
%(<div class="#{klass}">#{raw text}</div>) if text
|
220
220
|
end
|
221
221
|
|
222
222
|
view :last_action do
|
@@ -236,19 +236,19 @@ format :html do
|
|
236
236
|
)
|
237
237
|
end
|
238
238
|
|
239
|
-
%
|
239
|
+
%(
|
240
240
|
<span class="last-update">
|
241
241
|
#{action_verb} #{_render_acted_at} ago by
|
242
242
|
#{subformat(card.last_actor)._render_link}
|
243
243
|
</span>
|
244
|
-
|
244
|
+
)
|
245
245
|
end
|
246
246
|
|
247
247
|
private
|
248
248
|
|
249
249
|
def fancy_title title=nil, title_class=nil
|
250
250
|
klasses = ['card-title', title_class].compact * ' '
|
251
|
-
title = showname(title).to_name.parts.join %
|
252
|
-
raw %
|
251
|
+
title = showname(title).to_name.parts.join %(<span class="joint">+</span>)
|
252
|
+
raw %(<span class="#{klasses}">#{title}</span>)
|
253
253
|
end
|
254
254
|
end
|
@@ -85,12 +85,12 @@ format :html do
|
|
85
85
|
args[:optional_help] ||= :show
|
86
86
|
args[:optional_toolbar] ||= :show
|
87
87
|
|
88
|
-
args[:buttons] ||= %
|
88
|
+
args[:buttons] ||= %(
|
89
89
|
#{submit_button class: 'submit-button'}
|
90
90
|
#{cancel_button href: (args[:cancel_path] || path),
|
91
91
|
class: 'cancel-button',
|
92
92
|
'data-slot-selector' => args[:cancel_slot_selector]}
|
93
|
-
|
93
|
+
)
|
94
94
|
end
|
95
95
|
|
96
96
|
view :edit_name, perms: :update do |args|
|
@@ -127,7 +127,7 @@ format :html do
|
|
127
127
|
effects << "affect at least #{count} #{refs} to \"#{card.name}\""
|
128
128
|
options = 'You may choose to <em>update or ignore</em> the referers.'
|
129
129
|
end
|
130
|
-
effects = effects.map { |effect| "<li>#{effect}</li>" }
|
130
|
+
effects = effects.map { |effect| "<li>#{effect}</li>" }.join('')
|
131
131
|
"<h6>This change will...</h6><ul>#{effects}</ul><p>#{options}</p>"
|
132
132
|
end
|
133
133
|
|
@@ -213,7 +213,7 @@ format :html do
|
|
213
213
|
|
214
214
|
view :edit_nests do |args|
|
215
215
|
frame args do
|
216
|
-
|
216
|
+
with_nest_mode :edit do
|
217
217
|
process_relative_tags optional_toolbar: :hide
|
218
218
|
end
|
219
219
|
end
|
@@ -225,7 +225,7 @@ format :html do
|
|
225
225
|
view :edit_nest_rules do |args|
|
226
226
|
view = args[:rule_view] || :field_related_rules
|
227
227
|
frame args do
|
228
|
-
#
|
228
|
+
# with_nest_mode :edit do
|
229
229
|
nested_fields(args).map do |chunk|
|
230
230
|
nest Card.fetch("#{chunk.referee_name}+*self"),
|
231
231
|
view: :titled, title: chunk.referee_name, rule_view: view,
|
@@ -46,10 +46,10 @@ format :html do
|
|
46
46
|
hidden_args = opts.delete :hidden
|
47
47
|
form_for card, card_form_opts(action, opts) do |form|
|
48
48
|
@form = form
|
49
|
-
%
|
49
|
+
%(
|
50
50
|
#{hidden_tags hidden_args if hidden_args}
|
51
51
|
#{yield form}
|
52
|
-
|
52
|
+
)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -98,13 +98,13 @@ format :html do
|
|
98
98
|
|
99
99
|
def formgroup title, content, opts={}
|
100
100
|
wrap_with :div, formgroup_div_args(opts[:class]) do
|
101
|
-
%
|
101
|
+
%(
|
102
102
|
<label>#{title}</label>
|
103
103
|
<div>
|
104
104
|
#{editor_wrap(opts[:editor]) { content }}
|
105
105
|
#{formgroup_help_text opts[:help]}
|
106
106
|
</div>
|
107
|
-
|
107
|
+
)
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
@@ -128,16 +128,15 @@ format :html do
|
|
128
128
|
hash ||= {}
|
129
129
|
hash.each do |key, val|
|
130
130
|
result += if Hash === val
|
131
|
-
|
132
|
-
|
133
|
-
|
131
|
+
hidden_tags val, key
|
132
|
+
else
|
133
|
+
name = base ? "#{base}[#{key}]" : key
|
134
134
|
hidden_field_tag name, val
|
135
135
|
end
|
136
136
|
end
|
137
137
|
result
|
138
138
|
end
|
139
139
|
|
140
|
-
|
141
140
|
# FIELDSET VIEWS
|
142
141
|
|
143
142
|
view :name_formgroup do |args|
|
@@ -145,25 +144,24 @@ format :html do
|
|
145
144
|
end
|
146
145
|
|
147
146
|
view :type_formgroup do |args|
|
148
|
-
field = if args[:variety] == :edit #FIXME dislike this api -ef
|
149
|
-
|
150
|
-
|
151
|
-
|
147
|
+
field = if args[:variety] == :edit # FIXME: dislike this api -ef
|
148
|
+
type_field class: 'type-field edit-type-field'
|
149
|
+
else
|
150
|
+
type_field class: 'type-field live-type-field', href: path(view: :new), 'data-remote' => true
|
152
151
|
end
|
153
152
|
formgroup 'type', field, editor: 'type', class: 'type-formgroup'
|
154
153
|
end
|
155
154
|
|
156
|
-
|
157
155
|
view :button_formgroup do |args|
|
158
|
-
%
|
156
|
+
%(<div class="form-group"><div>#{args[:buttons]}</div></div>)
|
159
157
|
end
|
160
158
|
|
161
159
|
view :content_formgroup do |args|
|
162
|
-
raw %
|
160
|
+
raw %(
|
163
161
|
<fieldset class="card-editor editor">
|
164
|
-
#{
|
162
|
+
#{edit_slot args}
|
165
163
|
</fieldset>
|
166
|
-
|
164
|
+
)
|
167
165
|
end
|
168
166
|
|
169
167
|
def name_field form=nil, options={}
|
@@ -202,10 +200,10 @@ format :html do
|
|
202
200
|
# hidden_field_tag 'card[last_action_id_before_edit]',
|
203
201
|
# card.last_action_id, class: 'current_revision_id'
|
204
202
|
end
|
205
|
-
%
|
203
|
+
%(
|
206
204
|
#{revision_tracking}
|
207
205
|
#{_render_editor options}
|
208
|
-
|
206
|
+
)
|
209
207
|
end
|
210
208
|
|
211
209
|
# FIELD VIEWS
|
@@ -218,12 +216,10 @@ format :html do
|
|
218
216
|
view :edit_in_form, perms: :update, tags: :unknown_ok do |args|
|
219
217
|
eform = form_for_multi
|
220
218
|
content = content_field eform, args.merge(nested: true)
|
221
|
-
if card.new_card?
|
222
|
-
content += raw("\n #{ eform.hidden_field :type_id }")
|
223
|
-
end
|
219
|
+
content += raw("\n #{eform.hidden_field :type_id}") if card.new_card?
|
224
220
|
opts = { editor: 'content', help: true, class: 'card-editor' }
|
225
221
|
if card.cardname.junction?
|
226
|
-
opts[:class] += " RIGHT-#{
|
222
|
+
opts[:class] += " RIGHT-#{card.cardname.tag_name.safe_key}"
|
227
223
|
end
|
228
224
|
formgroup fancy_title(args[:title]), content, opts
|
229
225
|
end
|
@@ -238,12 +234,12 @@ format :html do
|
|
238
234
|
# form helpers
|
239
235
|
|
240
236
|
FIELD_HELPERS =
|
241
|
-
%w
|
237
|
+
%w(
|
242
238
|
hidden_field color_field date_field datetime_field datetime_local_field
|
243
239
|
email_field month_field number_field password_field phone_field
|
244
240
|
range_field search_field telephone_field text_area text_field time_field
|
245
241
|
url_field week_field file_field
|
246
|
-
|
242
|
+
).freeze
|
247
243
|
|
248
244
|
FIELD_HELPERS.each do |method_name|
|
249
245
|
define_method(method_name) do |name, options={}|
|
@@ -251,7 +247,7 @@ format :html do
|
|
251
247
|
end
|
252
248
|
end
|
253
249
|
|
254
|
-
def check_box method, options={}, checked_value
|
250
|
+
def check_box method, options={}, checked_value='1', unchecked_value='0'
|
255
251
|
form.check_box method, options, checked_value, unchecked_value
|
256
252
|
end
|
257
253
|
|