card 1.17.4 → 1.18.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -5,15 +5,16 @@ format :html do
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def table_of_contents content
|
8
|
-
return if @mode
|
8
|
+
return if @mode == :closed || !content.present?
|
9
9
|
min = card.rule(:table_of_contents).to_i
|
10
|
-
#warn "table_of #{name}, #{min}"
|
11
|
-
return unless min
|
10
|
+
# warn "table_of #{name}, #{min}"
|
11
|
+
return unless min && min > 0
|
12
12
|
|
13
|
-
toc
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
toc = []
|
14
|
+
dep = 1
|
15
|
+
content.gsub!(/<(h\d)>(.*?)<\/h\d>/i) do |match|
|
16
|
+
if $LAST_MATCH_INFO
|
17
|
+
tag, value = $LAST_MATCH_INFO[1, 2]
|
17
18
|
value = ActionView::Base.new.strip_tags(value).strip
|
18
19
|
next if value.empty?
|
19
20
|
item = { value: value, uri: URI.escape(value) }
|
@@ -24,23 +25,20 @@ format :html do
|
|
24
25
|
toc << [] if dep == 1
|
25
26
|
item[:depth] = dep = 2; toc.last << item
|
26
27
|
end
|
27
|
-
%
|
28
|
+
%(<a name="#{item[:uri]}"></a>#{match})
|
28
29
|
end
|
29
30
|
end
|
30
31
|
|
31
32
|
if toc.flatten.length >= min
|
32
|
-
content.replace %
|
33
|
-
|
33
|
+
content.replace %( <div class="table-of-contents"> <h5>Table of Contents</h5> ) +
|
34
|
+
make_table_of_contents_list(toc) + '</div>' + content
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
Array === i ? make_table_of_contents_list(i) : %{<li><a href="##{i[:uri]}"> #{i[:value]}</a></li>}
|
38
|
+
def make_table_of_contents_list items
|
39
|
+
list = items.map do |i|
|
40
|
+
Array === i ? make_table_of_contents_list(i) : %(<li><a href="##{i[:uri]}"> #{i[:value]}</a></li>)
|
41
41
|
end.join("\n")
|
42
|
-
|
42
|
+
'<ol>' + list + '</ol>'
|
43
43
|
end
|
44
|
-
|
45
44
|
end
|
46
|
-
|
@@ -1,18 +1,18 @@
|
|
1
1
|
|
2
2
|
format :html do
|
3
3
|
view :type do |args|
|
4
|
-
args
|
4
|
+
args[:type_class] = 'no-edit' if card.cards_of_type_exist?
|
5
5
|
super args
|
6
6
|
end
|
7
7
|
|
8
8
|
view :type_formgroup do |args|
|
9
9
|
if card.cards_of_type_exist?
|
10
|
-
%
|
10
|
+
%(
|
11
11
|
<div>
|
12
12
|
Sorry, this card must remain a Cardtype so long as there are
|
13
13
|
<strong>#{card.name}</strong> cards.
|
14
14
|
</div>
|
15
|
-
|
15
|
+
)
|
16
16
|
else
|
17
17
|
super args
|
18
18
|
end
|
@@ -11,12 +11,11 @@ module SelectedAction
|
|
11
11
|
# find action id from content (saves lookups)
|
12
12
|
db_content.to_s.split(/[\/\.]/)[1]
|
13
13
|
end
|
14
|
-
|
15
14
|
end
|
16
15
|
include SelectedAction
|
17
16
|
|
18
17
|
format do
|
19
|
-
view :source do |
|
18
|
+
view :source do |_args|
|
20
19
|
card.attachment.url
|
21
20
|
end
|
22
21
|
|
@@ -28,34 +27,31 @@ format do
|
|
28
27
|
|
29
28
|
def handle_source args
|
30
29
|
source = _render_source args
|
31
|
-
source ? yield(
|
30
|
+
source ? yield(source) : ''
|
32
31
|
rescue
|
33
32
|
'File Error'
|
34
33
|
end
|
35
34
|
end
|
36
35
|
|
37
|
-
|
38
|
-
|
39
36
|
format :file do
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
r.headers["
|
45
|
-
#r.headers["Cache-Control"] = "public" # currently using default "private", because proxy servers could block needed permission checks
|
37
|
+
view :core do |_args| # returns send_file args. not in love with this...
|
38
|
+
if format = card.attachment_format(params[:format]) # this means we only support known formats. dislike.
|
39
|
+
if params[:explicit_file] && (r = controller.response)
|
40
|
+
r.headers['Expires'] = 1.year.from_now.httpdate
|
41
|
+
# r.headers["Cache-Control"] = "public" # currently using default "private", because proxy servers could block needed permission checks
|
46
42
|
end
|
47
43
|
|
48
|
-
|
49
|
-
|
44
|
+
# elsif ![format, 'file'].member? params[:format] # formerly supported redirecting to correct file format
|
45
|
+
# return redirect_to( request.fullpath.sub( /\.#{params[:format]}\b/, '.' + format ) ) #card.attachment.url(style) )
|
50
46
|
|
51
47
|
file = selected_file_version
|
52
|
-
[
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
48
|
+
[file.path,
|
49
|
+
{
|
50
|
+
type: file.content_type,
|
51
|
+
filename: "#{card.cardname.safe_key}#{file.extension}",
|
52
|
+
x_sendfile: true,
|
53
|
+
disposition: (params[:format] == 'file' ? 'attachment' : 'inline')
|
54
|
+
}
|
59
55
|
]
|
60
56
|
else
|
61
57
|
_render_not_found
|
@@ -65,15 +61,12 @@ format :file do
|
|
65
61
|
def selected_file_version
|
66
62
|
card.attachment
|
67
63
|
end
|
68
|
-
|
69
64
|
end
|
70
65
|
|
71
|
-
|
72
66
|
format :html do
|
73
|
-
|
74
67
|
view :core do |args|
|
75
68
|
handle_source args do |source|
|
76
|
-
"<a href=\"#{source}\">Download #{
|
69
|
+
"<a href=\"#{source}\">Download #{showname args[:title]}</a>"
|
77
70
|
end
|
78
71
|
end
|
79
72
|
|
@@ -81,14 +74,13 @@ format :html do
|
|
81
74
|
file_chooser args
|
82
75
|
end
|
83
76
|
|
84
|
-
|
85
|
-
def preview args
|
77
|
+
def preview _args
|
86
78
|
''
|
87
79
|
end
|
88
80
|
|
89
81
|
view :preview_editor, tags: :unknown_ok do |args|
|
90
82
|
cached_upload_card_name = Card::Env.params[:attachment_upload]
|
91
|
-
cached_upload_card_name.gsub!(/\[\w+\]$/,
|
83
|
+
cached_upload_card_name.gsub!(/\[\w+\]$/, '[action_id_of_cached_upload]')
|
92
84
|
<<-HTML
|
93
85
|
<div class="chosen-file">
|
94
86
|
<input type="hidden" name="#{cached_upload_card_name}" value="#{card.selected_action_id}">
|
@@ -128,11 +120,11 @@ format :html do
|
|
128
120
|
<span>
|
129
121
|
#{card.new_card? ? 'Add' : 'Replace'} #{card.attachment_name}...
|
130
122
|
</span>
|
131
|
-
<input class="file-upload slotter form-control" type="file"
|
123
|
+
<input class="file-upload slotter form-control" type="file"
|
132
124
|
name="card[#{card.type_code}]" id="card_#{card.type_code}">
|
133
125
|
#{hidden_field_tag 'attachment_type_id', card.type_id}
|
134
|
-
#{hidden_field card.attachment_name, class:
|
135
|
-
|
126
|
+
#{hidden_field card.attachment_name, class: 'attachment_card_name',
|
127
|
+
value: ''}
|
136
128
|
#{hidden_field_tag 'file_card_name', card.cardname.url_key}
|
137
129
|
</span>
|
138
130
|
</div>
|
@@ -142,7 +134,4 @@ format :html do
|
|
142
134
|
<div class="chosen-file"></div>
|
143
135
|
HTML
|
144
136
|
end
|
145
|
-
|
146
137
|
end
|
147
|
-
|
148
|
-
|
@@ -3,19 +3,19 @@ attachment :image, uploader: ImageUploader
|
|
3
3
|
include File::SelectedAction
|
4
4
|
|
5
5
|
format do
|
6
|
-
|
7
6
|
include File::Format
|
8
7
|
|
9
|
-
view :closed_content do |
|
8
|
+
view :closed_content do |_args|
|
10
9
|
_render_core size: :icon
|
11
10
|
end
|
12
11
|
|
13
12
|
view :source do |args|
|
14
|
-
style =
|
15
|
-
|
16
|
-
when
|
17
|
-
when
|
18
|
-
|
13
|
+
style =
|
14
|
+
case
|
15
|
+
when @mode == :closed then :icon
|
16
|
+
when args[:size] then args[:size].to_sym
|
17
|
+
when main? then :large
|
18
|
+
else :medium
|
19
19
|
end
|
20
20
|
style = :original if style.to_sym == :full
|
21
21
|
if style == :original
|
@@ -24,7 +24,6 @@ format do
|
|
24
24
|
card.image.versions[style].url
|
25
25
|
end
|
26
26
|
end
|
27
|
-
|
28
27
|
end
|
29
28
|
|
30
29
|
format :html do
|
@@ -32,37 +31,42 @@ format :html do
|
|
32
31
|
|
33
32
|
view :core do |args|
|
34
33
|
handle_source args do |source|
|
35
|
-
source == 'missing'
|
34
|
+
if source == 'missing'
|
35
|
+
"<!-- image missing #{@card.name} -->"
|
36
|
+
else
|
37
|
+
image_tag(source)
|
38
|
+
end
|
36
39
|
end
|
37
40
|
end
|
38
41
|
|
39
42
|
def preview args
|
40
43
|
if !card.new_card? || card.preliminary_upload?
|
41
|
-
content_tag
|
42
|
-
|
44
|
+
content_tag :div, _render_core(args.merge(size: :medium)).html_safe,
|
45
|
+
class: 'attachment-preview',
|
46
|
+
id: "#{card.attachment.filename}-preview"
|
43
47
|
end
|
44
48
|
end
|
45
49
|
|
46
50
|
view :content_changes do |args|
|
47
51
|
out = ''
|
48
|
-
size = args[:diff_type]
|
49
|
-
if !args[:hide_diff]
|
50
|
-
|
52
|
+
size = args[:diff_type] == :summary ? :icon : :medium
|
53
|
+
if !args[:hide_diff] && args[:action] &&
|
54
|
+
(last_change = card.last_change_on(:db_content, before: args[:action]))
|
55
|
+
card.selected_action_id = last_change.card_action_id
|
51
56
|
out << Card::Diff.render_deleted_chunk(_render_core(size: size))
|
52
57
|
end
|
53
|
-
card.selected_action_id=args[:action].id
|
54
|
-
out <<
|
58
|
+
card.selected_action_id = args[:action].id
|
59
|
+
out << Card::Diff.render_added_chunk(_render_core(size: size))
|
55
60
|
out
|
56
61
|
end
|
57
|
-
|
58
62
|
end
|
59
63
|
|
60
64
|
format :css do
|
61
|
-
view :core do |
|
65
|
+
view :core do |_args|
|
62
66
|
render_source
|
63
67
|
end
|
64
68
|
|
65
|
-
view :content do |
|
69
|
+
view :content do |_args| # why is this necessary?
|
66
70
|
render_core
|
67
71
|
end
|
68
72
|
end
|
@@ -70,13 +74,16 @@ end
|
|
70
74
|
format :file do
|
71
75
|
include File::FileFormat
|
72
76
|
|
73
|
-
view :style do |args| #should this be in model?
|
74
|
-
['', 'full'].member?(
|
77
|
+
view :style do |args| # should this be in model?
|
78
|
+
['', 'full'].member?(args[:style].to_s) ? :original : args[:style]
|
75
79
|
end
|
76
80
|
|
77
81
|
def selected_file_version
|
78
82
|
style = _render_style(style: params[:size]).to_sym
|
79
|
-
|
83
|
+
if style && style != :original
|
84
|
+
card.attachment.versions[style]
|
85
|
+
else
|
86
|
+
card.attachment
|
87
|
+
end
|
80
88
|
end
|
81
89
|
end
|
82
|
-
|
@@ -8,9 +8,9 @@ end
|
|
8
8
|
format :html do
|
9
9
|
include Html::HtmlFormat
|
10
10
|
|
11
|
-
view :core do |
|
12
|
-
|
13
|
-
process_content ::CodeRay.scan(
|
11
|
+
view :core do |_args|
|
12
|
+
with_nest_mode :template do
|
13
|
+
process_content ::CodeRay.scan(_render_raw, :html).div
|
14
14
|
end
|
15
15
|
end
|
16
|
-
end
|
16
|
+
end
|
@@ -1,34 +1,34 @@
|
|
1
|
-
event :validate_list_name,
|
1
|
+
event :validate_list_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_list_item_type_change,
|
8
|
-
|
7
|
+
event :validate_list_item_type_change, :validate,
|
8
|
+
on: :save, changed: :name do
|
9
9
|
item_cards.each do |item_card|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
10
|
+
next unless item_card.type_cardname.key != item_type_name.key
|
11
|
+
errors.add :name,
|
12
|
+
"name conflicts with list items' type; " \
|
13
|
+
'delete content first'
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
18
|
-
event :validate_list_content,
|
17
|
+
event :validate_list_content, :validate,
|
18
|
+
on: :save, changed: :content do
|
19
19
|
item_cards.each do |item_card|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
20
|
+
next unless item_card.type_cardname.key != item_type_name.key
|
21
|
+
errors.add :content,
|
22
|
+
"#{item_card.name} has wrong cardtype; " \
|
23
|
+
"only cards of type #{cardname.right} are allowed"
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
28
|
-
event :create_listed_by_cards,
|
29
|
-
|
27
|
+
event :create_listed_by_cards, :prepare_to_validate,
|
28
|
+
on: :save, changed: :content do
|
30
29
|
item_names.each do |item_name|
|
31
30
|
listed_by_name = "#{item_name}+#{left.type_name}"
|
31
|
+
next if director.main_director.card.key == listed_by_name.to_name.key
|
32
32
|
if !Card[listed_by_name]
|
33
33
|
add_subcard listed_by_name, type_id: ListedByID
|
34
34
|
else
|
@@ -37,13 +37,13 @@ event :create_listed_by_cards,
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
event :update_related_listed_by_card_on_create,
|
41
|
-
|
40
|
+
event :update_related_listed_by_card_on_create, :finalize,
|
41
|
+
on: :create do
|
42
42
|
update_listed_by_cache_for item_keys
|
43
43
|
end
|
44
44
|
|
45
|
-
event :update_related_listed_by_card_on_content_update,
|
46
|
-
|
45
|
+
event :update_related_listed_by_card_on_content_update, :finalize,
|
46
|
+
on: :update, changed: :content do
|
47
47
|
new_items = item_keys
|
48
48
|
changed_items =
|
49
49
|
if db_content_was
|
@@ -55,23 +55,18 @@ event :update_related_listed_by_card_on_content_update,
|
|
55
55
|
update_listed_by_cache_for changed_items
|
56
56
|
end
|
57
57
|
|
58
|
-
event :
|
59
|
-
|
60
|
-
update_all_items
|
61
|
-
end
|
62
|
-
|
63
|
-
event :update_related_listed_by_card_on_type_update,
|
64
|
-
after: :store, on: :update, changed: :type_id do
|
58
|
+
event :update_related_listed_by_card_on_name_and_type_changes, :finalize,
|
59
|
+
on: :update, changed: [:name, :type_id] do
|
65
60
|
update_all_items
|
66
61
|
end
|
67
62
|
|
68
|
-
event :update_related_listed_by_card_on_delete,
|
69
|
-
|
63
|
+
event :update_related_listed_by_card_on_delete, :finalize,
|
64
|
+
on: :delete, when: proc { |c| c.junction? } do
|
70
65
|
update_listed_by_cache_for item_keys, type_key: @left_type_key
|
71
66
|
end
|
72
67
|
|
73
|
-
event :cache_type_key,
|
74
|
-
|
68
|
+
event :cache_type_key, :store,
|
69
|
+
on: :delete, when: proc { |c| c.junction? } do
|
75
70
|
@left_type_key = left.type_card.key
|
76
71
|
end
|
77
72
|
|
@@ -89,13 +84,12 @@ def update_listed_by_cache_for item_keys, args={}
|
|
89
84
|
|
90
85
|
item_keys.each do |item_key|
|
91
86
|
key = "#{item_key}+#{type_key}"
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
end
|
87
|
+
next unless Card::Cache[Card::Set::Type::ListedBy].exist? key
|
88
|
+
if (card = Card.fetch(key))
|
89
|
+
card.update_cached_list
|
90
|
+
card.update_references_out
|
91
|
+
else
|
92
|
+
Card::Cache[Card::Set::Type::ListedBy].delete key
|
99
93
|
end
|
100
94
|
end
|
101
95
|
end
|