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,25 +1,23 @@
|
|
1
|
-
event :validate_listed_by_name,
|
1
|
+
event :validate_listed_by_name, :validate, on: :save, changed: :name do
|
2
2
|
if !junction? || !right || right.type_id != CardtypeID
|
3
3
|
errors.add :name, 'must have a cardtype name as right part'
|
4
4
|
end
|
5
5
|
end
|
6
6
|
|
7
|
-
event :validate_listed_by_content,
|
8
|
-
|
9
|
-
changed: :content do
|
7
|
+
event :validate_listed_by_content, :validate,
|
8
|
+
on: :save, changed: :content do
|
10
9
|
item_cards(content: content).each do |item_card|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
end
|
10
|
+
next unless item_card.type_id != right.id
|
11
|
+
errors.add(
|
12
|
+
:content,
|
13
|
+
"#{item_card.name} has wrong cardtype; " \
|
14
|
+
"only cards of type #{cardname.right} are allowed"
|
15
|
+
)
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
21
|
-
event :update_content_in_list_cards,
|
22
|
-
|
19
|
+
event :update_content_in_list_cards, :prepare_to_validate,
|
20
|
+
on: :save, changed: :content do
|
23
21
|
if content.present?
|
24
22
|
new_items = item_keys(content: content)
|
25
23
|
old_items = item_keys
|
@@ -1,19 +1,18 @@
|
|
1
1
|
|
2
|
-
view :editor do |
|
2
|
+
view :editor do |_args|
|
3
3
|
text_field :content, class: 'card-content'
|
4
4
|
end
|
5
5
|
|
6
|
-
event :validate_number,
|
7
|
-
errors.add :content, "'#{content}' is not numeric" unless valid_number?(
|
6
|
+
event :validate_number, :validate do
|
7
|
+
errors.add :content, "'#{content}' is not numeric" unless valid_number?(content)
|
8
8
|
end
|
9
9
|
|
10
|
-
def valid_number?
|
10
|
+
def valid_number? string
|
11
11
|
valid = true
|
12
12
|
begin
|
13
|
-
Kernel.Float(
|
13
|
+
Kernel.Float(string)
|
14
14
|
rescue ArgumentError, TypeError
|
15
15
|
valid = false
|
16
16
|
end
|
17
17
|
valid
|
18
18
|
end
|
19
|
-
|
@@ -67,7 +67,7 @@ format do
|
|
67
67
|
|
68
68
|
view :search_error do |_args|
|
69
69
|
sr_class = search_results.class.to_s
|
70
|
-
%
|
70
|
+
%(#{sr_class} :: #{search_results.message} :: #{card.raw_content})
|
71
71
|
end
|
72
72
|
|
73
73
|
view :card_list do |_args|
|
@@ -85,7 +85,7 @@ format do
|
|
85
85
|
begin
|
86
86
|
v = {}
|
87
87
|
v[:query] = card.query(search_params)
|
88
|
-
v[:item] =
|
88
|
+
v[:item] = set_nest_opts args.merge(query_view: v[:query][:view])
|
89
89
|
v
|
90
90
|
rescue JSON::ParserError => e
|
91
91
|
{ error: e }
|
@@ -124,17 +124,18 @@ format do
|
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
|
-
def
|
128
|
-
@
|
129
|
-
@
|
130
|
-
@
|
131
|
-
|
132
|
-
# explicit >
|
127
|
+
def set_nest_opts args
|
128
|
+
@nest_defaults = nil
|
129
|
+
@nest_opts ||= {}
|
130
|
+
@nest_opts[:view] = args[:item] || nest_opts[:view] ||
|
131
|
+
args[:query_view] || default_item_view
|
132
|
+
# explicit > nest syntax > WQL > nest defaults
|
133
133
|
end
|
134
134
|
|
135
135
|
def page_link text, page, _current=false, options={}
|
136
136
|
@paging_path_args[:offset] = page * @paging_limit
|
137
|
-
options
|
137
|
+
options[:class] = 'card-paging-link slotter'
|
138
|
+
options[:remote] = true
|
138
139
|
link_to raw(text), path(@paging_path_args), options
|
139
140
|
end
|
140
141
|
|
@@ -205,7 +206,7 @@ format :rss do
|
|
205
206
|
|
206
207
|
def raw_feed_items _args
|
207
208
|
@raw_feed_items ||= begin
|
208
|
-
search_params
|
209
|
+
search_params[:default_limit] = 25
|
209
210
|
search_results
|
210
211
|
end
|
211
212
|
end
|
@@ -220,21 +221,21 @@ format :html do
|
|
220
221
|
else
|
221
222
|
results =
|
222
223
|
search_results.map do |c|
|
223
|
-
item_view =
|
224
|
-
%
|
225
|
-
<div class="search-result-item item-#{
|
224
|
+
item_view = nest_defaults(c)[:view]
|
225
|
+
%(
|
226
|
+
<div class="search-result-item item-#{item_view}">
|
226
227
|
#{nest(c, size: args[:size], view: item_view)}
|
227
228
|
</div>
|
228
|
-
|
229
|
+
)
|
229
230
|
end.join "\n"
|
230
231
|
|
231
|
-
%
|
232
|
-
#{
|
232
|
+
%(
|
233
|
+
#{paging}
|
233
234
|
<div class="search-result-list">
|
234
|
-
#{
|
235
|
+
#{results}
|
235
236
|
</div>
|
236
|
-
#{
|
237
|
-
|
237
|
+
#{paging if search_results.length > 10}
|
238
|
+
)
|
238
239
|
end
|
239
240
|
end
|
240
241
|
|
@@ -254,12 +255,13 @@ format :html do
|
|
254
255
|
view :editor, mod: Html::HtmlFormat
|
255
256
|
|
256
257
|
view :no_search_results do |_args|
|
257
|
-
%
|
258
|
+
%(<div class="search-no-results"></div>)
|
258
259
|
end
|
259
260
|
|
260
261
|
view :paging do |_args|
|
261
262
|
s = card.query search_params
|
262
|
-
offset
|
263
|
+
offset = s[:offset].to_i
|
264
|
+
limit = s[:limit].to_i
|
263
265
|
return '' if limit < 1
|
264
266
|
# avoid query if we know there aren't enough results to warrant paging
|
265
267
|
return '' if offset == 0 && limit > offset + search_results.length
|
@@ -267,7 +269,7 @@ format :html do
|
|
267
269
|
# should only happen if limit exactly equals the total
|
268
270
|
return '' if limit >= total
|
269
271
|
|
270
|
-
@paging_path_args = { limit: limit, item:
|
272
|
+
@paging_path_args = { limit: limit, item: nest_defaults(card)[:view] }
|
271
273
|
@paging_limit = limit
|
272
274
|
|
273
275
|
s[:vars].each { |key, value| @paging_path_args["_#{key}"] = value }
|
@@ -301,7 +303,7 @@ format :html do
|
|
301
303
|
next_page = current_page < total_pages ? current_page + 1 : false
|
302
304
|
out << next_page_link(next_page)
|
303
305
|
|
304
|
-
out << %
|
306
|
+
out << %(</ul></nav>)
|
305
307
|
out.join
|
306
308
|
end
|
307
309
|
|
@@ -8,12 +8,12 @@ def followable?
|
|
8
8
|
false
|
9
9
|
end
|
10
10
|
|
11
|
-
event :store_in_session,
|
11
|
+
event :store_in_session, :prepare_to_validate, on: :save, changed: :content do
|
12
12
|
Env.session[key] = db_content
|
13
13
|
self.db_content = ''
|
14
14
|
end
|
15
15
|
|
16
|
-
event :delete_in_session,
|
16
|
+
event :delete_in_session, :validate, on: :delete do
|
17
17
|
Env.session[key] = nil
|
18
18
|
abort :success
|
19
19
|
end
|
@@ -33,4 +33,3 @@ format :html do
|
|
33
33
|
args[:item] = :name
|
34
34
|
end
|
35
35
|
end
|
36
|
-
|
@@ -58,12 +58,12 @@ format :html do
|
|
58
58
|
view :field_related_rules do |args|
|
59
59
|
with_label_and_navbars args.merge(selected_view: :field_related_rules) do
|
60
60
|
field_settings = [:default, :help, :structure]
|
61
|
-
field_settings +=
|
61
|
+
field_settings += [:input, :options, :options_label] if card.type_id == PointerID
|
62
62
|
rules_table (card.visible_setting_codenames & field_settings), args
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
view :set_label do |
|
66
|
+
view :set_label do |_args|
|
67
67
|
content_tag :h3, card.label, class: 'set-label'
|
68
68
|
end
|
69
69
|
|
@@ -71,18 +71,18 @@ format :html do
|
|
71
71
|
view group_key.to_sym do |args|
|
72
72
|
settings = card.visible_settings group_key
|
73
73
|
if settings.present?
|
74
|
-
group_name =
|
74
|
+
group_name = Card::Setting.group_names[group_key] || group.to_s
|
75
75
|
heading_id = "heading-#{group_key}"
|
76
76
|
collapse_id = "collapse-#{card.cardname.safe_key}-#{group_key}"
|
77
77
|
output [
|
78
78
|
(content_tag :div, class: 'panel panel-default' do
|
79
79
|
content_tag :div, class: 'panel-heading', role: 'tab', id: heading_id do
|
80
80
|
content_tag :h4, class: 'panel-title' do
|
81
|
-
content_tag :a, group_name, 'data-toggle'=>'collapse', 'data-parent'=>'#accordion', href: "##{collapse_id}", 'aria-expanded'=>'false', 'aria-controls'=>collapse_id
|
81
|
+
content_tag :a, group_name, 'data-toggle' => 'collapse', 'data-parent' => '#accordion', href: "##{collapse_id}", 'aria-expanded' => 'false', 'aria-controls' => collapse_id
|
82
82
|
end
|
83
83
|
end
|
84
84
|
end),
|
85
|
-
(content_tag :div, id: collapse_id, class: 'panel-collapse collapse', role: 'tabpanel', 'aria-labelledby'=>heading_id do
|
85
|
+
(content_tag :div, id: collapse_id, class: 'panel-collapse collapse', role: 'tabpanel', 'aria-labelledby' => heading_id do
|
86
86
|
rules_table settings.map(&:codename), args
|
87
87
|
end)
|
88
88
|
]
|
@@ -93,7 +93,7 @@ format :html do
|
|
93
93
|
def rules_table settings, args={}
|
94
94
|
wrap_with :table, class: 'set-rules table' do
|
95
95
|
[
|
96
|
-
(content_tag(:tr, class:
|
96
|
+
(content_tag(:tr, class: 'rule-group') do
|
97
97
|
wrap_each_with :th, %w(Trait Content Set), class: 'rule-heading'
|
98
98
|
end),
|
99
99
|
(settings.map do |setting|
|
@@ -106,31 +106,31 @@ format :html do
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
-
view :editor do |
|
110
|
-
'Cannot currently edit Sets' #ENGLISH
|
109
|
+
view :editor do |_args|
|
110
|
+
'Cannot currently edit Sets' # ENGLISH
|
111
111
|
end
|
112
112
|
|
113
113
|
view :template_link do |args|
|
114
114
|
args.delete :style
|
115
115
|
wrap args do
|
116
|
-
link = view_link args[:inc_syntax], :template_editor, class: 'slotter'
|
116
|
+
link = view_link args[:inc_syntax], :template_editor, class: 'slotter' # , 'slot-include'=>include_syntax
|
117
117
|
"{{#{link}}}"
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
-
view :template_closer do |
|
121
|
+
view :template_closer do |_args|
|
122
122
|
view_link '', :template_link, class: 'slotter glyphicon glyphicon-remove template-editor-close'
|
123
123
|
end
|
124
124
|
|
125
125
|
view :template_editor do |args|
|
126
126
|
wrap args do
|
127
|
-
%
|
127
|
+
%(
|
128
128
|
<div class="template-editor-left">{{</div>
|
129
129
|
<div class="template-editor-main">
|
130
|
-
#{
|
130
|
+
#{render_template_editor_frame args}
|
131
131
|
</div>
|
132
132
|
<div class="template-editor-right">}}</div>
|
133
|
-
|
133
|
+
)
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
@@ -140,29 +140,28 @@ format :html do
|
|
140
140
|
end
|
141
141
|
end
|
142
142
|
|
143
|
-
view :closed_content do |
|
143
|
+
view :closed_content do |_args|
|
144
144
|
''
|
145
145
|
end
|
146
146
|
|
147
|
-
|
148
147
|
view :set_navbar do |args|
|
149
148
|
id = "rule-navbar-#{card.cardname.safe_key}-#{args[:home_view]}"
|
150
|
-
related_sets =
|
149
|
+
related_sets = card.related_sets(true)
|
151
150
|
return '' if related_sets.size <= 1
|
152
151
|
navbar id, toggle: 'Rules<span class="caret"></span>', toggle_align: :left,
|
153
152
|
class: 'slotter toolbar', navbar_type: 'inverse', collapsed_content: close_link(class: 'pull-right visible-xs') do
|
154
153
|
[
|
155
|
-
content_tag(:span, 'Set:', class:
|
154
|
+
content_tag(:span, 'Set:', class: 'navbar-text hidden-xs'),
|
156
155
|
(wrap_with :ul, class: 'nav navbar-nav nav-pills' do
|
157
156
|
related_sets.map do |name, label|
|
158
157
|
link = card_link name, text: label, remote: true,
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
158
|
+
path_opts: {
|
159
|
+
view: @slot_view,
|
160
|
+
slot: { subheader: showname(name), subframe: true, hide: 'header set_label rule_navbar', show: 'subheader set_navbar' }
|
161
|
+
}
|
163
162
|
li_pill link, name == card.name
|
164
163
|
end
|
165
|
-
end)
|
164
|
+
end)
|
166
165
|
]
|
167
166
|
end
|
168
167
|
end
|
@@ -173,35 +172,34 @@ format :html do
|
|
173
172
|
|
174
173
|
view :rule_navbar do |args|
|
175
174
|
id = "rule-navbar-#{card.cardname.safe_key}-#{args[:home_view]}"
|
176
|
-
args
|
175
|
+
args[:path_opts] = { slot: { show: :rule_navbar } }
|
177
176
|
navbar id, toggle: 'Rules<span class="caret"></span>', toggle_align: :left,
|
178
177
|
class: 'slotter toolbar', navbar_type: 'inverse', collapsed_content: close_link(class: 'pull-right visible-xs') do
|
179
178
|
[
|
180
|
-
content_tag(:span, 'Rules:', class:
|
179
|
+
content_tag(:span, 'Rules:', class: 'navbar-text hidden-xs'),
|
181
180
|
(wrap_with :ul, class: 'nav navbar-nav nav-pills' do
|
182
181
|
[
|
183
|
-
(view_link_pill(
|
184
|
-
view_link_pill(
|
185
|
-
view_link_pill(
|
186
|
-
view_link_pill(
|
187
|
-
|
182
|
+
(view_link_pill('field', :field_related_rules, args) if card.junction?),
|
183
|
+
view_link_pill('common', :common_rules, args),
|
184
|
+
view_link_pill('by group', :grouped_rules, args),
|
185
|
+
view_link_pill('by name', :all_rules, args),
|
186
|
+
(view_link_pill('recent', :recent_rules, args) if recently_edited_settings?)
|
188
187
|
]
|
189
|
-
end)
|
188
|
+
end)
|
190
189
|
]
|
191
190
|
end
|
192
191
|
end
|
193
192
|
|
194
193
|
def view_link_pill name, view, args
|
195
194
|
selected_view = args[:selected_view] || @slot_view || args[:home_view]
|
196
|
-
opts = {class: 'slotter', role: 'pill', path_opts: args[:path_opts]}
|
195
|
+
opts = { class: 'slotter', role: 'pill', path_opts: args[:path_opts] }
|
197
196
|
li_pill view_link(name, view, opts), selected_view == view
|
198
197
|
end
|
199
198
|
end
|
200
199
|
|
201
|
-
|
202
200
|
include Card::Set::Type::SearchType
|
203
201
|
|
204
|
-
def followed_by? user_id
|
202
|
+
def followed_by? user_id=nil
|
205
203
|
all_members_followed_by? user_id
|
206
204
|
end
|
207
205
|
|
@@ -217,12 +215,12 @@ end
|
|
217
215
|
|
218
216
|
def subclass_for_set
|
219
217
|
current_set_pattern_code = tag.codename
|
220
|
-
Card.set_patterns.
|
218
|
+
Card.set_patterns.find do |set|
|
221
219
|
current_set_pattern_code == set.pattern_code
|
222
220
|
end
|
223
221
|
end
|
224
222
|
|
225
|
-
def junction_only?
|
223
|
+
def junction_only?
|
226
224
|
if @junction_only.nil?
|
227
225
|
@junction_only = subclass_for_set.junction_only
|
228
226
|
else
|
@@ -254,7 +252,7 @@ end
|
|
254
252
|
|
255
253
|
def follow_rule_name user=nil
|
256
254
|
if user
|
257
|
-
if user.
|
255
|
+
if user.is_a? String
|
258
256
|
"#{name}+#{user}+#{Card[:follow].name}"
|
259
257
|
else
|
260
258
|
"#{name}+#{user.name}+#{Card[:follow].name}"
|
@@ -279,13 +277,12 @@ def all_user_ids_with_rule_for setting_code
|
|
279
277
|
Card.all_user_ids_with_rule_for self, setting_code
|
280
278
|
end
|
281
279
|
|
282
|
-
|
283
280
|
def setting_codenames_by_group
|
284
281
|
result = {}
|
285
282
|
Card::Setting.groups.each do |group, settings|
|
286
|
-
visible_settings = settings.reject { |s| !s
|
283
|
+
visible_settings = settings.reject { |s| !s || !s.applies_to_cardtype(prototype.type_id) }
|
287
284
|
unless visible_settings.empty?
|
288
|
-
result[group] = visible_settings.map
|
285
|
+
result[group] = visible_settings.map(&:codename)
|
289
286
|
end
|
290
287
|
end
|
291
288
|
result
|
@@ -300,7 +297,7 @@ end
|
|
300
297
|
|
301
298
|
def visible_settings group
|
302
299
|
Card::Setting.groups[group].reject do |setting|
|
303
|
-
!setting
|
300
|
+
!setting || !setting.applies_to_cardtype(prototype.type_id)
|
304
301
|
end
|
305
302
|
end
|
306
303
|
|
@@ -308,45 +305,43 @@ def all_members_followed?
|
|
308
305
|
all_members_followed_by? Auth.current_id
|
309
306
|
end
|
310
307
|
|
311
|
-
def all_members_followed_by? user_id
|
308
|
+
def all_members_followed_by? user_id=nil
|
312
309
|
if !prototype.followed_by? user_id
|
313
310
|
return false
|
314
311
|
elsif set_followed_by? user_id
|
315
312
|
return true
|
316
313
|
else
|
317
314
|
broader_sets.each do |b_s|
|
318
|
-
if (set_card
|
319
|
-
|
315
|
+
if (set_card = Card.fetch(b_s)) && set_card.set_followed_by?(user_id)
|
316
|
+
return true
|
320
317
|
end
|
321
318
|
end
|
322
319
|
end
|
323
|
-
|
320
|
+
false
|
324
321
|
end
|
325
322
|
|
326
323
|
def set_followed?
|
327
324
|
set_followed_by? Auth.current_id
|
328
325
|
end
|
329
326
|
|
330
|
-
def set_followed_by? user_id
|
331
|
-
|
332
|
-
|
327
|
+
def set_followed_by? user_id=nil
|
328
|
+
(user_id && (user = Card.find(user_id)) && Card.fetch(follow_rule_name(user.name))) ||
|
329
|
+
Card.fetch(follow_rule_name)
|
333
330
|
end
|
334
331
|
|
335
332
|
def broader_sets
|
336
333
|
prototype.set_names[1..-1]
|
337
334
|
end
|
338
335
|
|
339
|
-
|
340
336
|
def prototype
|
341
|
-
opts = subclass_for_set.prototype_args
|
337
|
+
opts = subclass_for_set.prototype_args cardname.trunk_name
|
342
338
|
Card.fetch opts[:name], new: opts
|
343
339
|
end
|
344
340
|
|
345
|
-
def related_sets with_self
|
341
|
+
def related_sets with_self=false
|
346
342
|
if subclass_for_set.anchorless?
|
347
343
|
prototype.related_sets with_self
|
348
344
|
else
|
349
345
|
left(new: {}).related_sets with_self
|
350
346
|
end
|
351
347
|
end
|
352
|
-
|