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
@@ -6,16 +6,20 @@ end
|
|
6
6
|
|
7
7
|
# must be called on all actions and before :set_name, :process_subcards and
|
8
8
|
# :validate_delete_children
|
9
|
-
event :assign_act,
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
# event :assign_act,
|
10
|
+
# after: :identify_action,
|
11
|
+
# when: proc { |c| c.history? || c.respond_to?(:attachment) } do
|
12
|
+
# @current_act = (@supercard && @supercard.current_act) ||
|
13
|
+
# Card::Act.create(ip_address: Env.ip)
|
14
|
+
# assign_action
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
event :assign_action, :initialize,
|
18
|
+
when: proc { |c| c.history? || c.respond_to?(:attachment) } do
|
19
|
+
@current_act = director.need_act
|
17
20
|
@current_action = Card::Action.create(
|
18
|
-
card_act_id: @current_act.id,
|
21
|
+
card_act_id: @current_act.id,
|
22
|
+
action_type: @action,
|
19
23
|
draft: (Env.params['draft'] == 'true')
|
20
24
|
)
|
21
25
|
if @supercard && @supercard != self
|
@@ -29,7 +33,8 @@ end
|
|
29
33
|
|
30
34
|
# stores changes in the changes table and assigns them to the current action
|
31
35
|
# removes the action if there are no changes
|
32
|
-
event :finalize_action,
|
36
|
+
event :finalize_action, :finalize,
|
37
|
+
when: proc { |c| c.finalize_action? } do
|
33
38
|
@changed_fields = Card::TRACKED_FIELDS.select do |f|
|
34
39
|
changed_attributes.member? f
|
35
40
|
end
|
@@ -57,8 +62,8 @@ event :finalize_act,
|
|
57
62
|
end
|
58
63
|
end
|
59
64
|
|
60
|
-
event :rollback_actions,
|
61
|
-
|
65
|
+
event :rollback_actions, :prepare_to_validate,
|
66
|
+
on: :update,
|
62
67
|
when: proc { |c| c.rollback_request? } do
|
63
68
|
revision = { subcards: {} }
|
64
69
|
rollback_actions = Env.params['action_ids'].map do |a_id|
|
@@ -136,9 +141,7 @@ end
|
|
136
141
|
def descendant_card_ids parent_ids=[id]
|
137
142
|
more_ids = Card.where('left_id IN (?)', parent_ids).pluck('id')
|
138
143
|
|
139
|
-
|
140
|
-
more_ids += descendant_card_ids more_ids
|
141
|
-
end
|
144
|
+
more_ids += descendant_card_ids more_ids unless more_ids.empty?
|
142
145
|
more_ids
|
143
146
|
end
|
144
147
|
|
@@ -302,11 +305,11 @@ HAML
|
|
302
305
|
|
303
306
|
def wrap_diff field, content
|
304
307
|
return '' unless content.present?
|
305
|
-
%
|
308
|
+
%(
|
306
309
|
<span class="#{field}-diff">
|
307
310
|
#{content}
|
308
311
|
</span>
|
309
|
-
|
312
|
+
)
|
310
313
|
end
|
311
314
|
|
312
315
|
def name_changes action, hide_diff=false
|
@@ -1,7 +1,6 @@
|
|
1
1
|
|
2
2
|
format :css do
|
3
|
-
|
4
|
-
def get_inclusion_defaults nested_card
|
3
|
+
def get_nest_defaults _nested_card
|
5
4
|
{ view: :raw }
|
6
5
|
end
|
7
6
|
|
@@ -11,32 +10,29 @@ format :css do
|
|
11
10
|
end
|
12
11
|
|
13
12
|
view :titled do |args|
|
14
|
-
major_comment(
|
15
|
-
_render_core( args )
|
13
|
+
major_comment(%( Style Card: "#{card.name}" )) + _render_core(args)
|
16
14
|
end
|
17
15
|
|
18
16
|
view :content do |args|
|
19
|
-
|
17
|
+
_render_core args
|
20
18
|
end
|
21
19
|
|
22
|
-
view :missing do |
|
20
|
+
view :missing do |_args|
|
23
21
|
major_comment "MISSING Style Card: #{card.name}"
|
24
22
|
end
|
25
23
|
|
26
|
-
view :import do |
|
27
|
-
%{\n@import url("#{
|
24
|
+
view :import do |_args|
|
25
|
+
%{\n@import url("#{_render_url item: :import}");\n}
|
28
26
|
end
|
29
27
|
|
30
28
|
view :url, perms: :none do |args|
|
31
29
|
page_path card.cardname, format: :css, item: args[:item]
|
32
|
-
#
|
30
|
+
# card_url _render_linkname
|
33
31
|
end
|
34
32
|
|
35
33
|
def major_comment comment, char='-'
|
36
|
-
edge = %
|
37
|
-
main = %
|
34
|
+
edge = %(/* #{char * (comment.length + 4)} */)
|
35
|
+
main = %(/* #{char} #{comment} #{char} */)
|
38
36
|
"#{edge}\n#{main}\n#{edge}\n\n"
|
39
37
|
end
|
40
|
-
|
41
|
-
|
42
38
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'csv'
|
2
2
|
|
3
3
|
format :csv do
|
4
|
-
def
|
4
|
+
def get_nest_defaults _nested_card
|
5
5
|
{ view: :core }
|
6
6
|
end
|
7
7
|
|
@@ -9,44 +9,41 @@ format :csv do
|
|
9
9
|
@depth == 0 ? :csv_row : :name
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
process_content( inc ).strip
|
12
|
+
view :csv_row do |_args|
|
13
|
+
array = _render_raw.scan(/\{\{[^\}]*\}\}/).map do |inc|
|
14
|
+
process_content(inc).strip
|
16
15
|
end
|
17
16
|
|
18
17
|
CSV.generate_line(array).strip
|
19
|
-
#strip is because search already joins with newlines
|
18
|
+
# strip is because search already joins with newlines
|
20
19
|
end
|
21
20
|
|
22
|
-
view :missing do |
|
21
|
+
view :missing do |_args|
|
23
22
|
''
|
24
23
|
end
|
25
24
|
|
26
|
-
view :csv_title_row do |
|
27
|
-
#NOTE: assumes all cards have the same structure!
|
25
|
+
view :csv_title_row do |_args|
|
26
|
+
# NOTE: assumes all cards have the same structure!
|
28
27
|
begin
|
29
28
|
card1 = search_results.first
|
30
29
|
|
31
30
|
parsed_content = Card::Content.new card1.raw_content, self
|
32
|
-
|
31
|
+
if parsed_content.__getobj__.is_a? String
|
32
|
+
''
|
33
|
+
else
|
33
34
|
titles = parsed_content.map do |chunk|
|
34
35
|
next if chunk.class != Card::Chunk::Include
|
35
36
|
opts = chunk.options
|
36
|
-
if
|
37
|
+
if %w(name link).member? opts[:view]
|
37
38
|
opts[:view]
|
38
39
|
else
|
39
40
|
opts[:inc_name].to_name.tag
|
40
41
|
end
|
41
|
-
end.compact
|
42
|
-
CSV.generate_line titles
|
43
|
-
|
44
|
-
else
|
45
|
-
''
|
42
|
+
end.compact
|
43
|
+
CSV.generate_line titles.map { |title| title.to_s.upcase }
|
46
44
|
end
|
47
45
|
rescue
|
48
46
|
''
|
49
47
|
end
|
50
48
|
end
|
51
|
-
|
52
49
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
|
2
2
|
format :json do
|
3
|
-
|
4
|
-
def get_inclusion_defaults nested_card
|
3
|
+
def get_nest_defaults _nested_card
|
5
4
|
{ view: :atom }
|
6
5
|
end
|
7
6
|
|
@@ -17,25 +16,28 @@ format :json do
|
|
17
16
|
view ||= :content
|
18
17
|
raw = render view, args
|
19
18
|
case
|
20
|
-
when String
|
21
|
-
when params[:compress]
|
22
|
-
else
|
19
|
+
when raw.is_a?(String) then raw
|
20
|
+
when params[:compress] then JSON(raw)
|
21
|
+
else JSON.pretty_generate raw
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
26
|
-
view :name_complete do |
|
27
|
-
card.item_cards complete: params['term'], limit: 8, sort: 'name',
|
25
|
+
view :name_complete do |_args|
|
26
|
+
card.item_cards complete: params['term'], limit: 8, sort: 'name',
|
27
|
+
return: 'name', context: ''
|
28
28
|
end
|
29
29
|
|
30
|
-
view :status, tags: :unknown_ok, perms: :none do |
|
31
|
-
status =
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
30
|
+
view :status, tags: :unknown_ok, perms: :none do |_args|
|
31
|
+
status =
|
32
|
+
case
|
33
|
+
when !card.known? then :unknown
|
34
|
+
# do we want the following to prevent fishing? of course, they can always
|
35
|
+
# post...
|
36
|
+
when !card.ok?(:read) then :unknown
|
37
|
+
when card.real? then :real
|
38
|
+
when card.virtual? then :virtual
|
39
|
+
else :wtf
|
40
|
+
end
|
39
41
|
|
40
42
|
hash = { key: card.key, url_key: card.cardname.url_key, status: status }
|
41
43
|
hash[:id] = card.id if status == :real
|
@@ -43,7 +45,7 @@ format :json do
|
|
43
45
|
hash
|
44
46
|
end
|
45
47
|
|
46
|
-
view :content do |
|
48
|
+
view :content do |_args|
|
47
49
|
req = controller.request
|
48
50
|
{
|
49
51
|
url: (req && req.original_url),
|
@@ -62,5 +64,4 @@ format :json do
|
|
62
64
|
h[:value] = _render_core args if @depth < max_depth
|
63
65
|
h
|
64
66
|
end
|
65
|
-
|
66
67
|
end
|
@@ -23,12 +23,12 @@ format :rss do
|
|
23
23
|
render_feed_body
|
24
24
|
end
|
25
25
|
end
|
26
|
-
rescue =>e
|
26
|
+
rescue => e
|
27
27
|
@xml.error "\n\nERROR rendering RSS: #{e.inspect}\n\n #{e.backtrace}"
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def raw_feed_items
|
31
|
+
def raw_feed_items _args
|
32
32
|
[card]
|
33
33
|
end
|
34
34
|
|
@@ -46,7 +46,7 @@ format :rss do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
view :feed_title do
|
49
|
-
Card.global_setting(:title) + ' : ' + card.name.gsub(/^\*/,'')
|
49
|
+
Card.global_setting(:title) + ' : ' + card.name.gsub(/^\*/, '')
|
50
50
|
end
|
51
51
|
|
52
52
|
view :feed_item do |args|
|
@@ -1,8 +1,6 @@
|
|
1
1
|
|
2
2
|
format :text do
|
3
|
-
|
4
3
|
view :core do |args|
|
5
|
-
HTMLEntities.new.decode
|
4
|
+
HTMLEntities.new.decode strip_tags(super args).to_s # need this string method to get out of html_safe mode
|
6
5
|
end
|
7
|
-
|
8
6
|
end
|
@@ -3,11 +3,11 @@ def clean_html?
|
|
3
3
|
end
|
4
4
|
|
5
5
|
def diff_args
|
6
|
-
|
6
|
+
{ format: :raw }
|
7
7
|
end
|
8
8
|
|
9
9
|
format do
|
10
|
-
view :closed_content do |
|
10
|
+
view :closed_content do |_args|
|
11
11
|
''
|
12
12
|
end
|
13
13
|
|
@@ -16,12 +16,8 @@ format do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
19
|
format :html do
|
21
|
-
view :editor do |
|
22
|
-
text_area :content, rows: 5, class: 'card-content ace-editor-textarea',
|
20
|
+
view :editor do |_args|
|
21
|
+
text_area :content, rows: 5, class: 'card-content ace-editor-textarea', 'data-card-type-code' => card.type_code
|
23
22
|
end
|
24
23
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
@@ -1,13 +1,12 @@
|
|
1
1
|
format :html do
|
2
|
-
|
3
|
-
view :editor do |args|
|
2
|
+
view :editor do |_args|
|
4
3
|
text_area :content,
|
5
4
|
rows: 5,
|
6
5
|
class: 'card-content',
|
7
6
|
'data-card-type-code' => card.type_code
|
8
7
|
end
|
9
8
|
|
10
|
-
view :core do |
|
9
|
+
view :core do |_args|
|
11
10
|
process_content_object(CGI.escapeHTML _render_raw)
|
12
11
|
end
|
13
12
|
end
|
@@ -1,27 +1,28 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
event :add_and_drop_items,
|
3
|
+
event :add_and_drop_items, :prepare_to_validate, on: :save do
|
4
4
|
adds = Env.params['add_item']
|
5
5
|
drops = Env.params['drop_item']
|
6
6
|
Array.wrap(adds).each { |i| add_item i } if adds
|
7
7
|
Array.wrap(drops).each { |i| drop_item i } if drops
|
8
8
|
end
|
9
9
|
|
10
|
-
event :insert_item_event,
|
10
|
+
event :insert_item_event, :prepare_to_validate,
|
11
|
+
on: :save, when: proc { Env.params['insert_item'] } do
|
11
12
|
index = Env.params['item_index'] || 0
|
12
|
-
|
13
|
+
insert_item index.to_i, Env.params['insert_item']
|
13
14
|
end
|
14
15
|
|
15
|
-
|
16
|
+
stage_method :changed_item_names do
|
16
17
|
dropped_item_names + added_item_names
|
17
18
|
end
|
18
19
|
|
19
|
-
|
20
|
+
stage_method :dropped_item_names do
|
20
21
|
old_items = item_names content: db_content_was
|
21
22
|
old_items - item_names
|
22
23
|
end
|
23
24
|
|
24
|
-
|
25
|
+
stage_method :added_item_names do
|
25
26
|
old_items = item_names content: db_content_was
|
26
27
|
item_names - old_items
|
27
28
|
end
|
@@ -33,8 +34,8 @@ format do
|
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
36
|
-
def wrap_item item,
|
37
|
-
item #no wrap in base
|
37
|
+
def wrap_item item, _args={}
|
38
|
+
item # no wrap in base
|
38
39
|
end
|
39
40
|
|
40
41
|
view :core do |args|
|
@@ -51,46 +52,49 @@ format do
|
|
51
52
|
end
|
52
53
|
|
53
54
|
format :html do
|
54
|
-
|
55
55
|
view :core do |args|
|
56
|
-
%
|
56
|
+
%(<div class="pointer-list">#{render_pointer_items args}</div>)
|
57
57
|
end
|
58
58
|
|
59
59
|
view :closed_content do |args|
|
60
|
-
args[:item] =
|
60
|
+
args[:item] =
|
61
|
+
if (args[:item] || nest_defaults(card)[:view]) == 'name'
|
62
|
+
'name'
|
63
|
+
else
|
64
|
+
'link'
|
65
|
+
end
|
61
66
|
args[:joint] ||= ', '
|
62
67
|
_render_core args
|
63
68
|
end
|
64
69
|
|
65
|
-
# view :edit do |args|
|
66
|
-
# super(args.merge(pointer_item_class: 'form-control'))
|
67
|
-
# end
|
70
|
+
# view :edit do |args|
|
71
|
+
# super(args.merge(pointer_item_class: 'form-control'))
|
72
|
+
# end
|
68
73
|
|
69
74
|
view :editor do |args|
|
70
|
-
part_view = (c = card.rule(:input)) ? c.gsub(/[\[\]]/,'') : :list
|
71
|
-
hidden_field(
|
72
|
-
|
75
|
+
part_view = (c = card.rule(:input)) ? c.gsub(/[\[\]]/, '') : :list
|
76
|
+
hidden_field(:content, class: 'card-content') +
|
77
|
+
raw(_render(part_view, args))
|
78
|
+
# .merge(pointer_item_class: 'form-control')))
|
79
|
+
end
|
73
80
|
|
74
|
-
|
81
|
+
def options_card_name
|
82
|
+
(oc = card.options_rule_card) ? oc.cardname.url_key : ':all'
|
75
83
|
end
|
76
84
|
|
77
85
|
view :list do |args|
|
78
86
|
args ||= {}
|
79
87
|
items = args[:item_list] || card.item_names(context: :raw)
|
80
88
|
items = [''] if items.empty?
|
81
|
-
options_card_name = (oc = card.options_rule_card) ? oc.cardname.url_key : ':all'
|
82
|
-
|
83
89
|
extra_css_class = args[:extra_css_class] || 'pointer-list-ul'
|
84
90
|
|
85
91
|
<<-HTML
|
86
92
|
<ul class="pointer-list-editor #{extra_css_class}" data-options-card="#{options_card_name}">
|
87
|
-
#{
|
88
|
-
|
89
|
-
|
90
|
-
end * "\n"
|
91
|
-
}
|
93
|
+
#{items.map do |item|
|
94
|
+
_render_list_item args.merge(pointer_item: item)
|
95
|
+
end.join "\n"}
|
92
96
|
</ul>
|
93
|
-
#{
|
97
|
+
#{add_item_button}
|
94
98
|
HTML
|
95
99
|
end
|
96
100
|
|
@@ -103,26 +107,26 @@ format :html do
|
|
103
107
|
end
|
104
108
|
|
105
109
|
view :list_item do |args|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
<
|
116
|
-
|
117
|
-
|
118
|
-
|
110
|
+
<<-HTML
|
111
|
+
<li class="pointer-li">
|
112
|
+
<span class="input-group">
|
113
|
+
<span class="input-group-addon handle">
|
114
|
+
#{glyphicon 'option-vertical left'}
|
115
|
+
#{glyphicon 'option-vertical right'}
|
116
|
+
</span>
|
117
|
+
#{text_field_tag 'pointer_item', args[:pointer_item],
|
118
|
+
class: 'pointer-item-text form-control'}
|
119
|
+
<span class="input-group-btn">
|
120
|
+
<button class="pointer-item-delete btn btn-default" type="button">
|
121
|
+
#{glyphicon 'remove'}
|
122
|
+
</button>
|
123
|
+
</span>
|
119
124
|
</span>
|
120
125
|
</li>
|
121
126
|
HTML
|
122
127
|
end
|
123
128
|
|
124
|
-
|
125
|
-
view :checkbox do |args|
|
129
|
+
view :checkbox do |_args|
|
126
130
|
options = card.option_names.map do |option_name|
|
127
131
|
checked = card.item_names.include?(option_name)
|
128
132
|
label = ((o_card = Card.fetch(option_name)) && o_card.label) || option_name
|
@@ -130,80 +134,74 @@ format :html do
|
|
130
134
|
description = pointer_option_description option_name
|
131
135
|
<<-HTML
|
132
136
|
<div class="pointer-checkbox">
|
133
|
-
#{
|
137
|
+
#{check_box_tag 'pointer_checkbox', option_name, checked, id: id, class: 'pointer-checkbox-button'}
|
134
138
|
<label for="#{id}">#{label}</label>
|
135
|
-
#{
|
139
|
+
#{%(<div class="checkbox-option-description">#{description}</div>) if description}
|
136
140
|
</div>
|
137
141
|
HTML
|
138
142
|
end.join "\n"
|
139
143
|
|
140
|
-
%
|
144
|
+
%(<div class="pointer-checkbox-list">#{options}</div>)
|
141
145
|
end
|
142
146
|
|
143
|
-
view :multiselect do |
|
144
|
-
select_tag(
|
147
|
+
view :multiselect do |_args|
|
148
|
+
select_tag(
|
149
|
+
'pointer_multiselect',
|
145
150
|
options_for_select(card.option_names, card.item_names),
|
146
151
|
multiple: true, class: 'pointer-multiselect form-control'
|
147
152
|
)
|
148
153
|
end
|
149
154
|
|
150
|
-
view :radio do |
|
155
|
+
view :radio do |_args|
|
151
156
|
input_name = "pointer_radio_button-#{card.key}"
|
152
157
|
options = card.option_names.map do |option_name|
|
153
|
-
checked = (option_name==card.item_names.first)
|
158
|
+
checked = (option_name == card.item_names.first)
|
154
159
|
id = "pointer-radio-#{option_name.to_name.key}"
|
155
160
|
label = ((o_card = Card.fetch(option_name)) && o_card.label) || option_name
|
156
161
|
description = pointer_option_description option_name
|
157
162
|
<<-HTML
|
158
163
|
<li class="pointer-radio radio">
|
159
|
-
#{
|
160
|
-
<label for="#{id}">#{
|
161
|
-
#{
|
164
|
+
#{radio_button_tag input_name, option_name, checked, id: id, class: 'pointer-radio-button'}
|
165
|
+
<label for="#{id}">#{label}</label>
|
166
|
+
#{%(<div class="radio-option-description">#{description}</div>) if description}
|
162
167
|
</li>
|
163
168
|
HTML
|
164
169
|
end.join("\n")
|
165
170
|
|
166
|
-
%
|
171
|
+
%(<ul class="pointer-radio-list">#{options}</ul>)
|
167
172
|
end
|
168
173
|
|
169
|
-
view :select do |
|
170
|
-
options = [[
|
171
|
-
select_tag(
|
172
|
-
|
173
|
-
|
174
|
-
|
174
|
+
view :select do |_args|
|
175
|
+
options = [['-- Select --', '']] + card.option_names.map { |x| [x, x] }
|
176
|
+
select_tag('pointer_select',
|
177
|
+
options_for_select(options, card.item_names.first),
|
178
|
+
class: 'pointer-select form-control'
|
179
|
+
)
|
175
180
|
end
|
176
181
|
|
177
|
-
|
178
182
|
def pointer_option_description option
|
179
183
|
pod_name = card.rule(:options_label) || 'description'
|
180
|
-
dcard = Card[
|
181
|
-
if dcard
|
182
|
-
|
184
|
+
dcard = Card["#{option}+#{pod_name}"]
|
185
|
+
if dcard && dcard.ok?(:read)
|
186
|
+
with_nest_mode :normal do
|
183
187
|
subformat(dcard).render_core
|
184
188
|
end
|
185
189
|
end
|
186
190
|
end
|
187
191
|
|
188
|
-
|
189
|
-
|
190
192
|
def wrap_item item, args
|
191
|
-
%
|
193
|
+
%(<div class="pointer-item item-#{args[:view]}">#{item}</div>)
|
192
194
|
end
|
193
|
-
|
194
|
-
|
195
195
|
end
|
196
196
|
|
197
|
-
|
198
197
|
format :css do
|
199
|
-
|
200
|
-
#generalize to all collections?
|
198
|
+
# generalize to all collections?
|
201
199
|
def default_item_view
|
202
200
|
params[:item] || :content
|
203
201
|
end
|
204
202
|
|
205
|
-
view :titled do |
|
206
|
-
%(#{major_comment "STYLE GROUP: \"#{card.name}\"", '='}#{
|
203
|
+
view :titled do |_args|
|
204
|
+
%(#{major_comment "STYLE GROUP: \"#{card.name}\"", '='}#{_render_core})
|
207
205
|
end
|
208
206
|
|
209
207
|
view :core do |args|
|
@@ -213,22 +211,18 @@ format :css do
|
|
213
211
|
end
|
214
212
|
|
215
213
|
view :content, :core
|
216
|
-
|
217
214
|
end
|
218
215
|
|
219
|
-
|
220
216
|
format :js do
|
221
|
-
|
222
217
|
view :core do |args|
|
223
218
|
card.item_cards.map do |item|
|
224
|
-
nest item, view: (
|
219
|
+
nest item, view: (args[:item] || :core)
|
225
220
|
end.join "\n\n"
|
226
221
|
end
|
227
222
|
end
|
228
223
|
|
229
|
-
|
230
224
|
format :data do
|
231
|
-
view :core do |
|
225
|
+
view :core do |_args|
|
232
226
|
card.item_cards.map do |c|
|
233
227
|
nest c
|
234
228
|
end
|
@@ -236,7 +230,7 @@ format :data do
|
|
236
230
|
end
|
237
231
|
|
238
232
|
format :rss do
|
239
|
-
def raw_feed_items
|
233
|
+
def raw_feed_items _args
|
240
234
|
@raw_feed_items ||= begin
|
241
235
|
card.item_cards
|
242
236
|
end
|
@@ -247,15 +241,13 @@ end
|
|
247
241
|
# the new module will override the old module's events and functions.
|
248
242
|
# this event is only on pointer card. Other type cards do not have this event,
|
249
243
|
# so it is not overridden and will be run while updating type and content in the same request.
|
250
|
-
event :standardize_items,
|
251
|
-
|
252
|
-
|
244
|
+
event :standardize_items, :prepare_to_validate, on: :save, changed: :content,
|
245
|
+
when: proc { |c| c.type_id == Card::PointerID } do
|
246
|
+
self.content = item_names(context: :raw).map { |name| "[[#{name}]]" }.join "\n"
|
253
247
|
end
|
254
248
|
|
255
|
-
|
256
|
-
|
257
249
|
def diff_args
|
258
|
-
{format: :pointer}
|
250
|
+
{ format: :pointer }
|
259
251
|
end
|
260
252
|
|
261
253
|
def item_cards args={}
|
@@ -265,7 +257,7 @@ def item_cards args={}
|
|
265
257
|
else
|
266
258
|
|
267
259
|
itype = args[:type] || item_type
|
268
|
-
#warn "item_card[#{inspect}], :complete"
|
260
|
+
# warn "item_card[#{inspect}], :complete"
|
269
261
|
item_names(args).map do |name|
|
270
262
|
new_args = itype ? { type: itype } : {}
|
271
263
|
Card.fetch name, new: new_args
|
@@ -273,12 +265,11 @@ def item_cards args={}
|
|
273
265
|
end
|
274
266
|
end
|
275
267
|
|
276
|
-
|
277
268
|
def item_names args={}
|
278
|
-
context = args[:context] ||
|
279
|
-
content = args[:content] ||
|
269
|
+
context = args[:context] || cardname
|
270
|
+
content = args[:content] || raw_content
|
280
271
|
content.to_s.split(/\n+/).map do |line|
|
281
|
-
item_name = line.gsub(
|
272
|
+
item_name = line.gsub(/\[\[|\]\]/, '').strip
|
282
273
|
if context == :raw
|
283
274
|
item_name
|
284
275
|
else
|
@@ -287,7 +278,6 @@ def item_names args={}
|
|
287
278
|
end
|
288
279
|
end
|
289
280
|
|
290
|
-
|
291
281
|
def item_ids args={}
|
292
282
|
item_names(args).map do |name|
|
293
283
|
Card.fetch_id name
|
@@ -296,7 +286,7 @@ end
|
|
296
286
|
|
297
287
|
def item_type
|
298
288
|
opt = options_rule_card
|
299
|
-
if !opt
|
289
|
+
if !opt || opt == self # fixme, need better recursion prevention
|
300
290
|
nil
|
301
291
|
else
|
302
292
|
opt.item_type
|