card 0.0.1 → 1.15.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +4 -0
- data/GPL +331 -0
- data/LICENSE +16 -0
- data/VERSION +1 -0
- data/card.gemspec +48 -19
- data/config/initializers/01_init_ruby_extensions.rb +7 -0
- data/config/initializers/inflections.rb +13 -0
- data/config/initializers/mime_types.rb +13 -0
- data/config/initializers/notification.rb +4 -0
- data/config/initializers/recaptcha.rb +6 -0
- data/config/initializers/uuid_state_file.rb +3 -0
- data/db/bootstrap/card_actions.yml +3872 -0
- data/db/bootstrap/card_acts.yml +7 -0
- data/db/bootstrap/card_changes.yml +11909 -0
- data/db/bootstrap/card_references.yml +3970 -0
- data/db/bootstrap/cards.yml +10805 -0
- data/db/migrate/20110511221913_require_earlier_migrations.rb +19 -0
- data/db/migrate/20120105203350_require_1_8_migrations.rb +15 -0
- data/db/migrate/20121111025347_require_1_10_migrations.rb +15 -0
- data/db/migrate/20121118114000_split_link_type.rb +16 -0
- data/db/migrate/20121118115000_update_link_type.rb +19 -0
- data/db/migrate/20130106052640_table_cleanup.rb +25 -0
- data/db/migrate/20130109015336_trunk_left.rb +14 -0
- data/db/migrate/20130411210957_update_codenames.rb +14 -0
- data/db/migrate/20140822073704_create_new_revision_tables.rb +43 -0
- data/db/migrate/20141001105348_move_revisions_to_actions.rb +62 -0
- data/db/migrate/20141121172918_rename_card_migration_table.rb +15 -0
- data/db/migrate/20141208132159_remove_present_from_reference_table.rb +9 -0
- data/db/migrate/20141216053032_better_index_names.rb +24 -0
- data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +49 -0
- data/db/migrate_core_cards/20130411211600_delete_old_related_tab_cards.rb +18 -0
- data/db/migrate_core_cards/20130419215612_import_help_text.rb +13 -0
- data/db/migrate_core_cards/20130823192433_add_style_cards.rb +87 -0
- data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +11 -0
- data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +15 -0
- data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +18 -0
- data/db/migrate_core_cards/20130927191728_account_events.rb +21 -0
- data/db/migrate_core_cards/20131016172445_common_css_patch.rb +12 -0
- data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +11 -0
- data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +73 -0
- data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +51 -0
- data/db/migrate_core_cards/20140512155840_add_script_cards.rb +83 -0
- data/db/migrate_core_cards/20140629222005_add_email_cards.rb +134 -0
- data/db/migrate_core_cards/20140725180118_config_card_updates.rb +9 -0
- data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +9 -0
- data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +14 -0
- data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +15 -0
- data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +10 -0
- data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +38 -0
- data/db/migrate_core_cards/20141208132416_partial_reference_type.rb +7 -0
- data/db/migrate_core_cards/20141208162106_add_ace_script.rb +12 -0
- data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +24 -0
- data/db/migrate_core_cards/20141230204340_uri_codename.rb +13 -0
- data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +17 -0
- data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +18 -0
- data/db/migrate_core_cards/data/1.11_help_text.json +410 -0
- data/db/migrate_core_cards/data/1.12_stylesheets/classic_cards.scss +100 -0
- data/db/migrate_core_cards/data/1.12_stylesheets/common.scss +226 -0
- data/db/migrate_core_cards/data/1.12_stylesheets/right_sidebar.scss +27 -0
- data/db/migrate_core_cards/data/1.12_stylesheets/traditional.scss +152 -0
- data/db/migrate_core_cards/data/1.13_config_text.json +32 -0
- data/db/migrate_core_cards/data/1.14_config_descriptions_etc.json +77 -0
- data/db/migrate_core_cards/data/bootstrap_layout.json +81 -0
- data/db/migrate_core_cards/data/mailer/follower_notification_email.html +9 -0
- data/db/migrate_core_cards/data/mailer/follower_notification_email.txt +11 -0
- data/db/migrate_core_cards/data/mailer/mail_config.json +22 -0
- data/db/migrate_core_cards/data/mailer/password_reset_email.html +10 -0
- data/db/migrate_core_cards/data/mailer/password_reset_email.txt +11 -0
- data/db/migrate_core_cards/data/mailer/signup_alert_email.html +7 -0
- data/db/migrate_core_cards/data/mailer/signup_alert_email.txt +5 -0
- data/db/migrate_core_cards/data/mailer/verification_email.html +9 -0
- data/db/migrate_core_cards/data/mailer/verification_email.txt +8 -0
- data/db/schema.rb +128 -0
- data/db/seeds.rb +8 -0
- data/db/version.txt +1 -0
- data/db/version_core_cards.txt +1 -0
- data/lib/card.rb +46 -3
- data/lib/card/active_record_ext.rb +77 -0
- data/lib/card/auth.rb +181 -0
- data/lib/card/cache.rb +199 -0
- data/lib/card/chunk.rb +104 -0
- data/lib/card/codename.rb +72 -0
- data/lib/card/content.rb +211 -0
- data/lib/card/core_ext.rb +105 -0
- data/lib/card/core_migration.rb +6 -0
- data/lib/card/diff.rb +430 -0
- data/lib/card/env.rb +52 -0
- data/lib/card/exceptions.rb +44 -0
- data/lib/card/format.rb +563 -0
- data/lib/card/loader.rb +165 -0
- data/lib/card/log.rb +450 -0
- data/lib/card/mailer.rb +37 -0
- data/lib/card/migration.rb +145 -0
- data/lib/card/name.rb +45 -0
- data/lib/card/query.rb +81 -0
- data/lib/card/query/card_clause.rb +527 -0
- data/lib/card/query/clause.rb +21 -0
- data/lib/card/query/ref_clause.rb +47 -0
- data/lib/card/query/value_clause.rb +65 -0
- data/lib/card/reference.rb +63 -0
- data/lib/card/set.rb +369 -0
- data/lib/card/set_pattern.rb +168 -0
- data/lib/card/simplecov_helper.rb +61 -0
- data/lib/card/spec_helper.rb +68 -0
- data/lib/card/version.rb +9 -2
- data/lib/cardio.rb +145 -0
- data/lib/generators/card.rb +32 -0
- data/lib/generators/card/format/USAGE +9 -0
- data/lib/generators/card/format/format_generator.rb +27 -0
- data/lib/generators/card/format/templates/format_spec_template.erb +5 -0
- data/lib/generators/card/format/templates/format_template.erb +3 -0
- data/lib/generators/card/migration/USAGE +24 -0
- data/lib/generators/card/migration/migration_generator.rb +38 -0
- data/lib/generators/card/migration/templates/card_migration.erb +10 -0
- data/lib/generators/card/set/USAGE +15 -0
- data/lib/generators/card/set/set_generator.rb +29 -0
- data/lib/generators/card/set/templates/set_spec_template.erb +5 -0
- data/lib/generators/card/set/templates/set_template.erb +1 -0
- data/mod/01_core/chunk/include.rb +85 -0
- data/mod/01_core/chunk/link.rb +87 -0
- data/mod/01_core/chunk/literal.rb +24 -0
- data/mod/01_core/chunk/reference.rb +53 -0
- data/mod/01_core/chunk/uri.rb +135 -0
- data/mod/01_core/format/data_format.rb +2 -0
- data/mod/01_core/format/html_format.rb +129 -0
- data/mod/01_core/format/text_format.rb +10 -0
- data/mod/01_core/layout/blank.html +5 -0
- data/mod/01_core/layout/default.html +20 -0
- data/mod/01_core/layout/noside.html +16 -0
- data/mod/01_core/layout/pre.html +2 -0
- data/mod/01_core/layout/simple.html +5 -0
- data/mod/01_core/set/all/active_card.rb +35 -0
- data/mod/01_core/set/all/collection.rb +142 -0
- data/mod/01_core/set/all/content.rb +64 -0
- data/mod/01_core/set/all/erb.rb +11 -0
- data/mod/01_core/set/all/fetch.rb +228 -0
- data/mod/01_core/set/all/haml.rb +7 -0
- data/mod/01_core/set/all/initialize.rb +49 -0
- data/mod/01_core/set/all/name.rb +275 -0
- data/mod/01_core/set/all/pattern.rb +56 -0
- data/mod/01_core/set/all/permissions.rb +284 -0
- data/mod/01_core/set/all/phases.rb +185 -0
- data/mod/01_core/set/all/references.rb +118 -0
- data/mod/01_core/set/all/rules.rb +315 -0
- data/mod/01_core/set/all/states.rb +16 -0
- data/mod/01_core/set/all/templating.rb +120 -0
- data/mod/01_core/set/all/tracked_attributes.rb +114 -0
- data/mod/01_core/set/all/trash.rb +50 -0
- data/mod/01_core/set/all/type.rb +85 -0
- data/mod/01_core/set/all/utils.rb +85 -0
- data/mod/01_core/set_pattern/01_all.rb +11 -0
- data/mod/01_core/set_pattern/02_all_plus.rb +13 -0
- data/mod/01_core/set_pattern/03_type.rb +23 -0
- data/mod/01_core/set_pattern/04_star.rb +15 -0
- data/mod/01_core/set_pattern/05_rstar.rb +17 -0
- data/mod/01_core/set_pattern/06_right.rb +20 -0
- data/mod/01_core/set_pattern/07_type_plus_right.rb +23 -0
- data/mod/01_core/set_pattern/08_self.rb +19 -0
- data/mod/01_core/spec/chunk/literal_spec.rb +14 -0
- data/mod/01_core/spec/chunk/uri_spec.rb +292 -0
- data/mod/01_core/spec/format/data_format_spec.rb +5 -0
- data/mod/01_core/spec/format/html_format_spec.rb +140 -0
- data/mod/01_core/spec/format/text_format_spec.rb +5 -0
- data/mod/01_core/spec/set/all/active_card_spec.rb +5 -0
- data/mod/01_core/spec/set/all/attribute_tracking_spec.rb +21 -0
- data/mod/01_core/spec/set/all/collection_spec.rb +65 -0
- data/mod/01_core/spec/set/all/content_spec.rb +15 -0
- data/mod/01_core/spec/set/all/fetch_spec.rb +204 -0
- data/mod/01_core/spec/set/all/initialize_spec.rb +58 -0
- data/mod/01_core/spec/set/all/name_spec.rb +61 -0
- data/mod/01_core/spec/set/all/pattern_spec.rb +81 -0
- data/mod/01_core/spec/set/all/permissions_spec.rb +505 -0
- data/mod/01_core/spec/set/all/phases_spec.rb +6 -0
- data/mod/01_core/spec/set/all/references_spec.rb +8 -0
- data/mod/01_core/spec/set/all/rules2_spec.rb +250 -0
- data/mod/01_core/spec/set/all/rules_spec.rb +130 -0
- data/mod/01_core/spec/set/all/states_spec.rb +5 -0
- data/mod/01_core/spec/set/all/templating_spec.rb +111 -0
- data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +328 -0
- data/mod/01_core/spec/set/all/trash_spec.rb +34 -0
- data/mod/01_core/spec/set/all/type_spec.rb +71 -0
- data/mod/01_core/spec/set/all/utils_spec.rb +5 -0
- data/mod/01_history/lib/card/act.rb +60 -0
- data/mod/01_history/lib/card/action.rb +176 -0
- data/mod/01_history/lib/card/change.rb +29 -0
- data/mod/01_history/set/all/actions.rb +47 -0
- data/mod/01_history/set/all/content_history.rb +131 -0
- data/mod/01_history/set/all/history.rb +296 -0
- data/mod/02_basic_types/format/css_format.rb +6 -0
- data/mod/02_basic_types/format/csv_format.rb +6 -0
- data/mod/02_basic_types/format/file_format.rb +3 -0
- data/mod/02_basic_types/format/js_format.rb +6 -0
- data/mod/02_basic_types/format/json_format.rb +6 -0
- data/mod/02_basic_types/format/rss_format.rb +11 -0
- data/mod/02_basic_types/format/xml_format.rb +6 -0
- data/mod/02_basic_types/set/all/all_css.rb +42 -0
- data/mod/02_basic_types/set/all/all_csv.rb +52 -0
- data/mod/02_basic_types/set/all/all_js.rb +7 -0
- data/mod/02_basic_types/set/all/base.rb +122 -0
- data/mod/02_basic_types/set/all/file.rb +13 -0
- data/mod/02_basic_types/set/all/json.rb +66 -0
- data/mod/02_basic_types/set/all/rss.rb +72 -0
- data/mod/02_basic_types/set/all/text.rb +8 -0
- data/mod/02_basic_types/set/type/plain_text.rb +10 -0
- data/mod/02_basic_types/set/type/pointer.rb +323 -0
- data/mod/02_basic_types/spec/set/all/all_css_spec.rb +10 -0
- data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +9 -0
- data/mod/02_basic_types/spec/set/all/base_spec.rb +57 -0
- data/mod/02_basic_types/spec/set/all/file_spec.rb +5 -0
- data/mod/02_basic_types/spec/set/all/json_spec.rb +26 -0
- data/mod/02_basic_types/spec/set/all/rss_spec.rb +8 -0
- data/mod/02_basic_types/spec/set/all/text_spec.rb +5 -0
- data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +11 -0
- data/mod/02_basic_types/spec/set/type/pointer_spec.rb +103 -0
- data/mod/03_machines/lib/card/machine.rb +185 -0
- data/mod/03_machines/lib/card/machine_input.rb +40 -0
- data/mod/03_machines/lib/javascript/ace.js +18204 -0
- data/mod/03_machines/lib/javascript/html5shiv-printshiv.js +1 -0
- data/mod/03_machines/lib/javascript/jquery-ui.js +14913 -0
- data/mod/03_machines/lib/javascript/jquery.autosize.js +274 -0
- data/mod/03_machines/lib/javascript/jquery.fileupload.js +1114 -0
- data/mod/03_machines/lib/javascript/jquery.iframe-transport.js +185 -0
- data/mod/03_machines/lib/javascript/jquery.js +4 -0
- data/mod/03_machines/lib/javascript/jquery.ui.autocomplete.html.js +41 -0
- data/mod/03_machines/lib/javascript/jquery_ujs.js +469 -0
- data/mod/03_machines/lib/javascript/jquerymobile.js +15454 -0
- data/mod/03_machines/lib/javascript/theme-textmate.js +130 -0
- data/mod/03_machines/lib/javascript/tinymce.js +13 -0
- data/mod/03_machines/lib/javascript/wagn.js.coffee +336 -0
- data/mod/03_machines/lib/javascript/wagn_menu.js +72 -0
- data/mod/03_machines/lib/javascript/wagn_mod.js.coffee +446 -0
- data/mod/03_machines/lib/stylesheets/functional.scss +184 -0
- data/mod/03_machines/lib/stylesheets/jquery-ui-smoothness.css +1178 -0
- data/mod/03_machines/lib/stylesheets/standard.scss +760 -0
- data/mod/03_machines/set/right/machine_output.rb +20 -0
- data/mod/03_machines/set/self/script_ace.rb +8 -0
- data/mod/03_machines/set/self/script_card_menu.rb +8 -0
- data/mod/03_machines/set/self/script_html5shiv_printshiv.rb +7 -0
- data/mod/03_machines/set/self/script_jquery.rb +8 -0
- data/mod/03_machines/set/self/script_jquery_helper.rb +14 -0
- data/mod/03_machines/set/self/script_slot.rb +9 -0
- data/mod/03_machines/set/self/script_tinymce.rb +8 -0
- data/mod/03_machines/set/self/style_functional.rb +8 -0
- data/mod/03_machines/set/self/style_jquery_ui_smoothness.rb +8 -0
- data/mod/03_machines/set/self/style_standard.rb +8 -0
- data/mod/03_machines/set/type/coffee_script.rb +61 -0
- data/mod/03_machines/set/type/css.rb +45 -0
- data/mod/03_machines/set/type/java_script.rb +38 -0
- data/mod/03_machines/set/type/scss.rb +23 -0
- data/mod/03_machines/set/type/skin.rb +12 -0
- data/mod/03_machines/spec/lib/shared_machine_examples.rb +175 -0
- data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +65 -0
- data/mod/03_machines/spec/set/right/machine_output_spec.rb +5 -0
- data/mod/03_machines/spec/set/self/style_functional_spec.rb +5 -0
- data/mod/03_machines/spec/set/self/style_jquery_ui_smoothness_spec.rb +5 -0
- data/mod/03_machines/spec/set/self/style_standard_spec.rb +5 -0
- data/mod/03_machines/spec/set/type/coffeescript_spec.rb +29 -0
- data/mod/03_machines/spec/set/type/css_spec.rb +34 -0
- data/mod/03_machines/spec/set/type/javascript_spec.rb +28 -0
- data/mod/03_machines/spec/set/type/scss_spec.rb +56 -0
- data/mod/03_machines/spec/set/type/skin_spec.rb +70 -0
- data/mod/04_settings/lib/card/setting.rb +65 -0
- data/mod/04_settings/set/right/add_help.rb +11 -0
- data/mod/04_settings/set/right/comment.rb +91 -0
- data/mod/04_settings/set/right/create.rb +3 -0
- data/mod/04_settings/set/right/default.rb +3 -0
- data/mod/04_settings/set/right/delete.rb +4 -0
- data/mod/04_settings/set/right/help.rb +3 -0
- data/mod/04_settings/set/right/read.rb +2 -0
- data/mod/04_settings/set/right/script.rb +10 -0
- data/mod/04_settings/set/right/structure.rb +4 -0
- data/mod/04_settings/set/right/style.rb +10 -0
- data/mod/04_settings/set/right/update.rb +2 -0
- data/mod/04_settings/set/self/accountable.rb +3 -0
- data/mod/04_settings/set/self/add_help.rb +2 -0
- data/mod/04_settings/set/self/autoname.rb +2 -0
- data/mod/04_settings/set/self/captcha.rb +2 -0
- data/mod/04_settings/set/self/comment.rb +2 -0
- data/mod/04_settings/set/self/create.rb +2 -0
- data/mod/04_settings/set/self/default.rb +2 -0
- data/mod/04_settings/set/self/delete.rb +2 -0
- data/mod/04_settings/set/self/help.rb +2 -0
- data/mod/04_settings/set/self/input.rb +2 -0
- data/mod/04_settings/set/self/layout.rb +2 -0
- data/mod/04_settings/set/self/on_create.rb +2 -0
- data/mod/04_settings/set/self/on_delete.rb +2 -0
- data/mod/04_settings/set/self/on_update.rb +2 -0
- data/mod/04_settings/set/self/options.rb +2 -0
- data/mod/04_settings/set/self/options_label.rb +2 -0
- data/mod/04_settings/set/self/read.rb +2 -0
- data/mod/04_settings/set/self/script.rb +2 -0
- data/mod/04_settings/set/self/structure.rb +2 -0
- data/mod/04_settings/set/self/style.rb +2 -0
- data/mod/04_settings/set/self/table_of_contents.rb +2 -0
- data/mod/04_settings/set/self/thanks.rb +2 -0
- data/mod/04_settings/set/self/update.rb +2 -0
- data/mod/04_settings/set/type/setting.rb +82 -0
- data/mod/04_settings/spec/set/right/add_help_spec.rb +5 -0
- data/mod/04_settings/spec/set/right/comment_spec.rb +41 -0
- data/mod/04_settings/spec/set/right/create_spec.rb +10 -0
- data/mod/04_settings/spec/set/right/default_spec.rb +5 -0
- data/mod/04_settings/spec/set/right/delete_spec.rb +5 -0
- data/mod/04_settings/spec/set/right/help_spec.rb +5 -0
- data/mod/04_settings/spec/set/right/read_spec.rb +5 -0
- data/mod/04_settings/spec/set/right/script_spec.rb +24 -0
- data/mod/04_settings/spec/set/right/structure_spec.rb +17 -0
- data/mod/04_settings/spec/set/right/style_spec.rb +29 -0
- data/mod/04_settings/spec/set/right/update_spec.rb +5 -0
- data/mod/04_settings/spec/set/type/setting_spec.rb +10 -0
- data/mod/05_email/format/email_html_format.rb +9 -0
- data/mod/05_email/format/email_text_format.rb +11 -0
- data/mod/05_email/lib/card/follow_option.rb +90 -0
- data/mod/05_email/set/all/email_html.rb +5 -0
- data/mod/05_email/set/all/email_text.rb +5 -0
- data/mod/05_email/set/all/follow.rb +256 -0
- data/mod/05_email/set/all/notify.rb +223 -0
- data/mod/05_email/set/all/observer.rb +27 -0
- data/mod/05_email/set/right/bcc.rb +45 -0
- data/mod/05_email/set/right/cc.rb +3 -0
- data/mod/05_email/set/right/follow.rb +9 -0
- data/mod/05_email/set/right/follow_fields.rb +3 -0
- data/mod/05_email/set/right/followers.rb +30 -0
- data/mod/05_email/set/right/following.rb +52 -0
- data/mod/05_email/set/right/from.rb +3 -0
- data/mod/05_email/set/right/html_message.rb +3 -0
- data/mod/05_email/set/right/to.rb +3 -0
- data/mod/05_email/set/self/always.rb +14 -0
- data/mod/05_email/set/self/created.rb +21 -0
- data/mod/05_email/set/self/edited.rb +24 -0
- data/mod/05_email/set/self/follow.rb +2 -0
- data/mod/05_email/set/self/follow_defaults.rb +66 -0
- data/mod/05_email/set/self/never.rb +15 -0
- data/mod/05_email/set/type/email_template.rb +113 -0
- data/mod/05_email/set/type_plus_right/user/follow.rb +176 -0
- data/mod/05_email/spec/set/all/follow_spec.rb +133 -0
- data/mod/05_email/spec/set/all/notify_spec.rb +364 -0
- data/mod/05_email/spec/set/all/observer_spec.rb +76 -0
- data/mod/05_email/spec/set/right/followers_spec.rb +126 -0
- data/mod/05_email/spec/set/right/following_spec.rb +4 -0
- data/mod/05_email/spec/set/self/follow_defaults_spec.rb +18 -0
- data/mod/05_standard/file/103/icon-6566.ico +0 -0
- data/mod/05_standard/file/103/large-6566.ico +0 -0
- data/mod/05_standard/file/103/medium-6566.ico +0 -0
- data/mod/05_standard/file/103/original-6566.ico +0 -0
- data/mod/05_standard/file/103/small-6566.ico +0 -0
- data/mod/05_standard/file/79/icon-6556.png +0 -0
- data/mod/05_standard/file/79/large-6556.png +0 -0
- data/mod/05_standard/file/79/medium-6556.png +0 -0
- data/mod/05_standard/file/79/original-6556.png +0 -0
- data/mod/05_standard/file/79/small-6556.png +0 -0
- data/mod/05_standard/file/790/icon-6419.png +0 -0
- data/mod/05_standard/file/790/large-6419.png +0 -0
- data/mod/05_standard/file/790/medium-6419.png +0 -0
- data/mod/05_standard/file/790/original-6419.png +0 -0
- data/mod/05_standard/file/790/small-6419.png +0 -0
- data/mod/05_standard/set/all/account.rb +67 -0
- data/mod/05_standard/set/all/attach.rb +152 -0
- data/mod/05_standard/set/all/comment.rb +39 -0
- data/mod/05_standard/set/all/error.rb +214 -0
- data/mod/05_standard/set/all/event_viz.rb +62 -0
- data/mod/05_standard/set/all/links.rb +110 -0
- data/mod/05_standard/set/all/rich_html/content.rb +173 -0
- data/mod/05_standard/set/all/rich_html/editing.rb +145 -0
- data/mod/05_standard/set/all/rich_html/form.rb +234 -0
- data/mod/05_standard/set/all/rich_html/header.rb +64 -0
- data/mod/05_standard/set/all/rich_html/wrapper.rb +105 -0
- data/mod/05_standard/set/right/account.rb +180 -0
- data/mod/05_standard/set/right/email.rb +52 -0
- data/mod/05_standard/set/right/password.rb +39 -0
- data/mod/05_standard/set/right/salt.rb +5 -0
- data/mod/05_standard/set/right/stats.rb +35 -0
- data/mod/05_standard/set/right/status.rb +9 -0
- data/mod/05_standard/set/right/token.rb +5 -0
- data/mod/05_standard/set/right/when_created.rb +5 -0
- data/mod/05_standard/set/right/when_last_edited.rb +5 -0
- data/mod/05_standard/set/rstar/rules.rb +407 -0
- data/mod/05_standard/set/self/account_links.rb +61 -0
- data/mod/05_standard/set/self/alerts.rb +5 -0
- data/mod/05_standard/set/self/all.rb +21 -0
- data/mod/05_standard/set/self/foot.rb +8 -0
- data/mod/05_standard/set/self/head.rb +121 -0
- data/mod/05_standard/set/self/navbox.rb +20 -0
- data/mod/05_standard/set/self/now.rb +6 -0
- data/mod/05_standard/set/self/recent.rb +48 -0
- data/mod/05_standard/set/self/search.rb +43 -0
- data/mod/05_standard/set/self/signin.rb +121 -0
- data/mod/05_standard/set/self/stats.rb +91 -0
- data/mod/05_standard/set/self/version.rb +9 -0
- data/mod/05_standard/set/type/basic.rb +46 -0
- data/mod/05_standard/set/type/cardtype.rb +43 -0
- data/mod/05_standard/set/type/date.rb +8 -0
- data/mod/05_standard/set/type/file.rb +85 -0
- data/mod/05_standard/set/type/html.rb +22 -0
- data/mod/05_standard/set/type/image.rb +67 -0
- data/mod/05_standard/set/type/layout_type.rb +14 -0
- data/mod/05_standard/set/type/number.rb +19 -0
- data/mod/05_standard/set/type/phrase.rb +3 -0
- data/mod/05_standard/set/type/search_type.rb +243 -0
- data/mod/05_standard/set/type/set.rb +198 -0
- data/mod/05_standard/set/type/signup.rb +144 -0
- data/mod/05_standard/set/type/toggle.rb +12 -0
- data/mod/05_standard/set/type/uri.rb +11 -0
- data/mod/05_standard/set/type/user.rb +72 -0
- data/mod/05_standard/spec/chunk/include_spec.rb +186 -0
- data/mod/05_standard/spec/chunk/link_spec.rb +61 -0
- data/mod/05_standard/spec/format/css_format_spec.rb +5 -0
- data/mod/05_standard/spec/format/csv_format_spec.rb +5 -0
- data/mod/05_standard/spec/format/email_html_format_spec.rb +5 -0
- data/mod/05_standard/spec/format/file_format_spec.rb +5 -0
- data/mod/05_standard/spec/format/js_format_spec.rb +5 -0
- data/mod/05_standard/spec/format/json_format_spec.rb +5 -0
- data/mod/05_standard/spec/format/rss_format_spec.rb +5 -0
- data/mod/05_standard/spec/format/xml_format_spec.rb +5 -0
- data/mod/05_standard/spec/set/all/account_spec.rb +137 -0
- data/mod/05_standard/spec/set/all/attach_spec.rb +9 -0
- data/mod/05_standard/spec/set/all/comment_spec.rb +5 -0
- data/mod/05_standard/spec/set/all/email_html_spec.rb +15 -0
- data/mod/05_standard/spec/set/all/error_spec.rb +9 -0
- data/mod/05_standard/spec/set/all/event_viz_spec.rb +9 -0
- data/mod/05_standard/spec/set/all/history_spec.rb +173 -0
- data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +43 -0
- data/mod/05_standard/spec/set/all/rich_html/wrapper_spec.rb +28 -0
- data/mod/05_standard/spec/set/right/account_spec.rb +162 -0
- data/mod/05_standard/spec/set/right/email_spec.rb +55 -0
- data/mod/05_standard/spec/set/right/password_spec.rb +45 -0
- data/mod/05_standard/spec/set/right/salt_spec.rb +5 -0
- data/mod/05_standard/spec/set/right/stats_spec.rb +13 -0
- data/mod/05_standard/spec/set/right/status_spec.rb +5 -0
- data/mod/05_standard/spec/set/right/token_spec.rb +5 -0
- data/mod/05_standard/spec/set/right/when_created_spec.rb +7 -0
- data/mod/05_standard/spec/set/right/when_last_edited_spec.rb +7 -0
- data/mod/05_standard/spec/set/rstar/rules_spec.rb +25 -0
- data/mod/05_standard/spec/set/self/account_links_spec.rb +9 -0
- data/mod/05_standard/spec/set/self/alerts_spec.rb +5 -0
- data/mod/05_standard/spec/set/self/all_spec.rb +48 -0
- data/mod/05_standard/spec/set/self/foot_spec.rb +5 -0
- data/mod/05_standard/spec/set/self/head_spec.rb +17 -0
- data/mod/05_standard/spec/set/self/navbox_spec.rb +7 -0
- data/mod/05_standard/spec/set/self/now_spec.rb +7 -0
- data/mod/05_standard/spec/set/self/recent_spec.rb +5 -0
- data/mod/05_standard/spec/set/self/search_spec.rb +5 -0
- data/mod/05_standard/spec/set/self/signin_spec.rb +73 -0
- data/mod/05_standard/spec/set/self/stats_spec.rb +12 -0
- data/mod/05_standard/spec/set/self/version_spec.rb +7 -0
- data/mod/05_standard/spec/set/type/basic_spec.rb +5 -0
- data/mod/05_standard/spec/set/type/cardtype_spec.rb +5 -0
- data/mod/05_standard/spec/set/type/date_spec.rb +7 -0
- data/mod/05_standard/spec/set/type/email_template_spec.rb +208 -0
- data/mod/05_standard/spec/set/type/file_spec.rb +5 -0
- data/mod/05_standard/spec/set/type/html_spec.rb +23 -0
- data/mod/05_standard/spec/set/type/image_spec.rb +16 -0
- data/mod/05_standard/spec/set/type/layout_type_spec.rb +7 -0
- data/mod/05_standard/spec/set/type/number_spec.rb +7 -0
- data/mod/05_standard/spec/set/type/phrase_spec.rb +7 -0
- data/mod/05_standard/spec/set/type/search_type_spec.rb +27 -0
- data/mod/05_standard/spec/set/type/set_spec.rb +26 -0
- data/mod/05_standard/spec/set/type/signup_spec.rb +228 -0
- data/mod/05_standard/spec/set/type/toggle_spec.rb +12 -0
- data/mod/05_standard/spec/set/type/uri_spec.rb +41 -0
- data/mod/05_standard/spec/set/type/user_spec.rb +5 -0
- data/mod/06_bootstrap/lib/javascript/bootstrap.js +2306 -0
- data/mod/06_bootstrap/lib/javascript/bootstrap.min.js +7 -0
- data/mod/06_bootstrap/lib/stylesheets/bootstrap-theme.css +476 -0
- data/mod/06_bootstrap/lib/stylesheets/bootstrap.css +6565 -0
- data/mod/06_bootstrap/lib/stylesheets/darkly.css +6583 -0
- data/mod/06_bootstrap/set/all/bootstrap/form.rb +37 -0
- data/mod/06_bootstrap/set/all/bootstrap/header.rb +29 -0
- data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +12 -0
- data/mod/06_bootstrap/set/all/rich_bootstrap.rb +28 -0
- data/mod/06_bootstrap/set/self/bootstrap_css.rb +7 -0
- data/mod/06_bootstrap/set/self/bootstrap_js.rb +7 -0
- data/mod/06_bootstrap/set/self/bootstrap_theme_css.rb +7 -0
- data/mod/06_bootstrap/set/self/navbox.rb +32 -0
- data/mod/06_bootstrap/set/type/search_type.rb +79 -0
- data/mod/06_bootstrap/spec/set/all/bootstrap/form_spec.rb +13 -0
- data/spec/lib/card/action_spec.rb +14 -0
- data/spec/lib/card/auth_spec.rb +17 -0
- data/spec/lib/card/cache_spec.rb +122 -0
- data/spec/lib/card/chunk_spec.rb +17 -0
- data/spec/lib/card/codename_spec.rb +25 -0
- data/spec/lib/card/content_spec.rb +314 -0
- data/spec/lib/card/diff_spec.rb +210 -0
- data/spec/lib/card/format_spec.rb +82 -0
- data/spec/lib/card/loader_spec.rb +39 -0
- data/spec/lib/card/log_spec.rb +270 -0
- data/spec/lib/card/name_spec.rb +279 -0
- data/spec/lib/card/query_spec.rb +456 -0
- data/spec/lib/card/reference_spec.rb +213 -0
- data/spec/lib/card/set_pattern_spec.rb +56 -0
- data/spec/lib/card/set_spec.rb +88 -0
- data/spec/mailers/mailer_spec.rb +64 -0
- data/spec/models/card/cardtype_spec.rb +216 -0
- data/spec/models/card/create_spec.rb +82 -0
- data/spec/models/card/trash_spec.rb +260 -0
- data/spec/models/card/type_transition_spec.rb +161 -0
- data/spec/models/card/validation_spec.rb +36 -0
- data/spec/models/card_spec.rb +177 -0
- data/spec/spec_helper.rb +130 -0
- data/test/fixtures/.gitkeep +0 -0
- data/test/fixtures/card_actions.yml +5706 -0
- data/test/fixtures/card_acts.yml +835 -0
- data/test/fixtures/card_changes.yml +17182 -0
- data/test/fixtures/card_references.yml +5405 -0
- data/test/fixtures/cards.yml +15533 -0
- data/test/fixtures/mao2.jpg +0 -0
- data/test/fixtures/rails.gif +0 -0
- data/test/seed.rb +201 -0
- metadata +762 -38
- data/.gitignore +0 -17
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -22
- data/README.md +0 -29
- data/Rakefile +0 -1
@@ -0,0 +1,328 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
|
4
|
+
module RenameMethods
|
5
|
+
def name_invariant_attributes card
|
6
|
+
{
|
7
|
+
:content => card.content,
|
8
|
+
#:updater_id => card.updater_id,
|
9
|
+
#:revisions => card.actions.count,
|
10
|
+
:referencers => card.referencers.map(&:name).sort,
|
11
|
+
:referees => card.referees.map(&:name).sort,
|
12
|
+
:dependents => card.dependents.map(&:id).sort
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
def assert_rename card, new_name
|
17
|
+
attrs_before = name_invariant_attributes( card )
|
18
|
+
actions_count_before = card.actions.count
|
19
|
+
card.name=new_name
|
20
|
+
card.update_referencers = true
|
21
|
+
card.save!
|
22
|
+
expect(card.actions.count).to eq(actions_count_before+1)
|
23
|
+
assert_equal attrs_before, name_invariant_attributes(card)
|
24
|
+
assert_equal new_name, card.name
|
25
|
+
assert Card[new_name]
|
26
|
+
end
|
27
|
+
|
28
|
+
def card name
|
29
|
+
Card[name].refresh or raise "Couldn't find card named #{name}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
include RenameMethods
|
34
|
+
|
35
|
+
|
36
|
+
describe Card::Set::All::TrackedAttributes do
|
37
|
+
|
38
|
+
describe '#extract_subcard_args!' do
|
39
|
+
it "should move plus keys into subcard hash" do
|
40
|
+
raw_args = { 'name'=>'test', 'subcards'=>{ '+*oldway'=>{'content'=>'old'}, }, '+*newway'=>{'content'=>'new'} }
|
41
|
+
subcards = Card.new.extract_subcard_args! raw_args
|
42
|
+
expect(raw_args['subcards']).to be_nil
|
43
|
+
expect(subcards.keys.sort).to eq(['+*newway', '+*oldway'])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
describe 'set_name' do
|
49
|
+
|
50
|
+
|
51
|
+
it "should handle case variants" do
|
52
|
+
@c = Card.create! :name=>'chump'
|
53
|
+
expect(@c.name).to eq('chump')
|
54
|
+
@c.name = 'Chump'
|
55
|
+
@c.save!
|
56
|
+
expect(@c.name).to eq('Chump')
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should handle changing from plus card to simple" do
|
60
|
+
c = Card.create! :name=>'four+five'
|
61
|
+
c.name = 'nine'
|
62
|
+
c.save!
|
63
|
+
expect(c.name).to eq('nine')
|
64
|
+
expect(c.left_id).to eq(nil)
|
65
|
+
expect(c.right_id).to eq(nil)
|
66
|
+
end
|
67
|
+
|
68
|
+
#FIXME - following tests more about fetch than set_name. this spec still needs lots of cleanup
|
69
|
+
|
70
|
+
it "test fetch with new when present" do
|
71
|
+
Card.create!(:name=>"Carrots")
|
72
|
+
cards_should_be_added 0 do
|
73
|
+
c=Card.fetch "Carrots", :new=>{}
|
74
|
+
c.save
|
75
|
+
expect(c).to be_instance_of(Card)
|
76
|
+
expect(Card.fetch("Carrots")).to be_instance_of(Card)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it "test_simple" do
|
81
|
+
cards_should_be_added 1 do
|
82
|
+
expect(Card['Boo!']).to be_nil
|
83
|
+
expect(Card.create(:name=>"Boo!")).to be_instance_of(Card)
|
84
|
+
expect(Card['Boo!']).to be_instance_of(Card)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
it "test fetch with new when not present" do
|
90
|
+
cards_should_be_added 1 do
|
91
|
+
c=Card.fetch("Tomatoes", :new=>{})
|
92
|
+
c.save
|
93
|
+
expect(c).to be_instance_of(Card)
|
94
|
+
expect(Card.fetch("Tomatoes")).to be_instance_of(Card)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it "test_create_junction" do
|
99
|
+
cards_should_be_added 3 do
|
100
|
+
expect(Card.create(:name=>"Peach+Pear", :content=>"juicy")).to be_instance_of(Card)
|
101
|
+
end
|
102
|
+
expect(Card["Peach"]).to be_instance_of(Card)
|
103
|
+
expect(Card["Pear"]).to be_instance_of(Card)
|
104
|
+
assert_equal "juicy", Card["Peach+Pear"].content
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def cards_should_be_added number
|
110
|
+
number += Card.all.count
|
111
|
+
yield
|
112
|
+
expect(Card.all.count).to eq(number)
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
describe "renaming" do
|
120
|
+
|
121
|
+
|
122
|
+
# FIXME: these tests are TOO SLOW! 8s against server, 12s from command line.
|
123
|
+
# not sure if it's the card creation or the actual renaming process.
|
124
|
+
# Card#save needs optimized in general.
|
125
|
+
# Can't we just move this data to fixtures?
|
126
|
+
|
127
|
+
|
128
|
+
it "renaming plus card to its own child" do
|
129
|
+
assert_rename card("A+B"), "A+B+T"
|
130
|
+
end
|
131
|
+
|
132
|
+
it "clears cache for old name" do
|
133
|
+
assert_rename Card['Menu'], 'manure'
|
134
|
+
expect(Card['Menu']).to be_nil
|
135
|
+
end
|
136
|
+
|
137
|
+
it "wipes old references by default" do
|
138
|
+
c = Card['Menu']
|
139
|
+
c.name = 'manure'
|
140
|
+
c.save!
|
141
|
+
expect(Card['manure'].references_from.size).to eq(0)
|
142
|
+
end
|
143
|
+
|
144
|
+
it "picks up new references" do
|
145
|
+
Card.create :name=>'kinds of poop', :content=>'[[manure]]'
|
146
|
+
assert_rename Card['Menu'], 'manure'
|
147
|
+
expect(Card['manure'].references_from.size).to eq(2)
|
148
|
+
end
|
149
|
+
|
150
|
+
it "handles name variants" do
|
151
|
+
assert_rename card("B"), "b"
|
152
|
+
end
|
153
|
+
|
154
|
+
it "handles plus cards renamed to simple" do
|
155
|
+
assert_rename card("A+B"), "K"
|
156
|
+
end
|
157
|
+
|
158
|
+
|
159
|
+
it "handles flipped parts" do
|
160
|
+
assert_rename card("A+B"), "B+A"
|
161
|
+
end
|
162
|
+
|
163
|
+
it "test_should_error_card_exists" do
|
164
|
+
@t=card("T"); @t.name="A+B";
|
165
|
+
assert !@t.save, "save should fail"
|
166
|
+
assert @t.errors[:name], "should have errors on key"
|
167
|
+
end
|
168
|
+
|
169
|
+
it "test_used_as_tag" do
|
170
|
+
@b=card("B"); @b.name='A+D'; @b.save
|
171
|
+
assert @b.errors[:name]
|
172
|
+
end
|
173
|
+
|
174
|
+
it "test_update_dependents" do
|
175
|
+
c1 = Card["One"]
|
176
|
+
c12 = Card["One+Two"]
|
177
|
+
c123 = Card["One+Two+Three"]
|
178
|
+
c41 = Card["Four+One"]
|
179
|
+
c415 = Card["Four+One+Five"]
|
180
|
+
|
181
|
+
assert_equal ["One+Two","One+Two+Three","Four+One","Four+One+Five"], [c12,c123,c41,c415].map(&:name)
|
182
|
+
c1.name="Uno"
|
183
|
+
c1.save!
|
184
|
+
assert_equal ["Uno+Two","Uno+Two+Three","Four+Uno","Four+Uno+Five"], [c12,c123,c41,c415].map(&:reload).map(&:name)
|
185
|
+
end
|
186
|
+
|
187
|
+
it "test_should_error_invalid_name" do
|
188
|
+
@t=card("T"); @t.name="YT_o~Yo"; @t.save
|
189
|
+
assert @t.errors[:name]
|
190
|
+
end
|
191
|
+
|
192
|
+
it "test_simple_to_simple" do
|
193
|
+
assert_rename card("A"), "Alephant"
|
194
|
+
end
|
195
|
+
|
196
|
+
it "test_simple_to_junction_with_create" do
|
197
|
+
assert_rename card("T"), "C+J"
|
198
|
+
end
|
199
|
+
|
200
|
+
it "test_reset_key" do
|
201
|
+
c = Card["Basic Card"]
|
202
|
+
c.name="banana card"
|
203
|
+
c.save!
|
204
|
+
assert_equal 'banana_card', c.key
|
205
|
+
assert Card["Banana Card"] != nil
|
206
|
+
end
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
it "test_rename_should_not_fail_when_updating_inaccessible_referencer" do
|
211
|
+
Card.create! :name => "Joe Card", :content => "Whattup"
|
212
|
+
Card::Auth.as :joe_admin do
|
213
|
+
Card.create! :name => "Admin Card", :content => "[[Joe Card]]"
|
214
|
+
end
|
215
|
+
c = Card["Joe Card"]
|
216
|
+
c.update_attributes! :name => "Card of Joe", :update_referencers => true
|
217
|
+
assert_equal "[[Card of Joe]]", Card["Admin Card"].content
|
218
|
+
end
|
219
|
+
|
220
|
+
it "test_rename_should_update_structured_referencer" do
|
221
|
+
Card::Auth.as_bot do
|
222
|
+
c=Card.create! :name => "Pit"
|
223
|
+
Card.create! :name => "Orange", :type=>"Fruit", :content => "[[Pit]]"
|
224
|
+
Card.create! :name => "Fruit+*type+*structure", :content=>"this [[Pit]]"
|
225
|
+
|
226
|
+
assert_equal "this [[Pit]]", Card["Orange"].raw_content
|
227
|
+
c.update_attributes! :name => "Seed", :update_referencers => true
|
228
|
+
assert_equal "this [[Seed]]", Card["Orange"].raw_content
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
it 'should handle plus cards that have children' do
|
233
|
+
Card::Auth.as_bot do
|
234
|
+
Card.create :name=>'a+b+c+d'
|
235
|
+
ab = Card['a+b']
|
236
|
+
assert_rename ab, 'e+f'
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
|
241
|
+
context "chuck" do
|
242
|
+
before do
|
243
|
+
Card::Auth.as_bot do
|
244
|
+
Card.create! :name => "chuck_wagn+chuck"
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
it "test_rename_name_substitution" do
|
249
|
+
c1, c2 = Card["chuck_wagn+chuck"], Card["chuck"]
|
250
|
+
assert_rename c2, "buck"
|
251
|
+
assert_equal "chuck_wagn+buck", Card.find(c1.id).name
|
252
|
+
end
|
253
|
+
|
254
|
+
it "test_reference_updates_plus_to_simple" do
|
255
|
+
c1 = Card::Auth.as_bot do
|
256
|
+
Card.create! :name=>'Huck', :content=>"[[chuck wagn+chuck]]"
|
257
|
+
end
|
258
|
+
c2 = Card["chuck_wagn+chuck"]
|
259
|
+
assert_rename c2, 'schmuck'
|
260
|
+
c1 = Card.find(c1.id)
|
261
|
+
assert_equal '[[schmuck]]', c1.content
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
context "dairy" do
|
266
|
+
before do
|
267
|
+
Card::Auth.as_bot do
|
268
|
+
Card.create! :type=>"Cardtype", :name=>"Dairy", :content => "[[/new/{{_self|name}}|new]]"
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
it "test_renaming_card_with_self_link_should_not_hang" do
|
273
|
+
c = Card["Dairy"]
|
274
|
+
c.name = "Buttah"
|
275
|
+
c.update_referencers = true
|
276
|
+
c.save!
|
277
|
+
assert_equal "[[/new/{{_self|name}}|new]]", Card["Buttah"].content
|
278
|
+
end
|
279
|
+
|
280
|
+
it "test_renaming_card_without_updating_references_should_not_have_errors" do
|
281
|
+
c = Card["Dairy"]
|
282
|
+
c.update_attributes "name"=>"Newt", "update_referencers"=>'false'
|
283
|
+
assert_equal "[[/new/{{_self|name}}|new]]", Card["Newt"].content
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
|
288
|
+
context "blues" do
|
289
|
+
before do
|
290
|
+
Card::Auth.as_bot do
|
291
|
+
Card.create! :name => "Blue"
|
292
|
+
|
293
|
+
Card.create! :name => "blue includer 1", :content => "{{Blue}}"
|
294
|
+
Card.create! :name => "blue includer 2", :content => "{{blue|closed;other:stuff}}"
|
295
|
+
|
296
|
+
Card.create! :name => "blue linker 1", :content => "[[Blue]]"
|
297
|
+
Card.create! :name => "blue linker 2", :content => "[[blue]]"
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
|
302
|
+
it "test_updates_inclusions_when_renaming" do
|
303
|
+
c1,c2,c3 = Card["Blue"], Card["blue includer 1"], Card["blue includer 2"]
|
304
|
+
c1.update_attributes :name => "Red", :update_referencers => true
|
305
|
+
assert_equal "{{Red}}", Card.find(c2.id).content
|
306
|
+
# NOTE these attrs pass through a hash stage that may not preserve order
|
307
|
+
assert_equal "{{Red|closed;other:stuff}}", Card.find(c3.id).content
|
308
|
+
end
|
309
|
+
|
310
|
+
it "test_updates_inclusions_when_renaming_to_plus" do
|
311
|
+
c1,c2 = Card["Blue"], Card["blue includer 1"]
|
312
|
+
c1.update_attributes :name => "blue includer 1+color", :update_referencers => true
|
313
|
+
assert_equal "{{blue includer 1+color}}", Card.find(c2.id).content
|
314
|
+
end
|
315
|
+
|
316
|
+
it "test_reference_updates_on_case_variants" do
|
317
|
+
c1,c2,c3 = Card["Blue"], Card["blue linker 1"], Card["blue linker 2"]
|
318
|
+
c1.reload.name = "Red"
|
319
|
+
c1.update_referencers = true
|
320
|
+
c1.save!
|
321
|
+
assert_equal "[[Red]]", Card.find(c2.id).content
|
322
|
+
assert_equal "[[Red]]", Card.find(c3.id).content
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
end
|
327
|
+
|
328
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
describe Card::Set::All::Trash do
|
4
|
+
|
5
|
+
it "certain 'all rules' should be indestructable" do
|
6
|
+
Card::Auth.as_bot do
|
7
|
+
name = '*all+*default'
|
8
|
+
card = Card[name]
|
9
|
+
card.delete
|
10
|
+
expect(card.errors[:delete].first).to eq("#{name} is an indestructible rule")
|
11
|
+
expect(Card[name]).to be
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'does not delete account with edits' do
|
16
|
+
Card::Auth.as_bot do
|
17
|
+
name = 'Joe User'
|
18
|
+
card = Card[name]
|
19
|
+
card.delete
|
20
|
+
expect(card.errors[:delete].first).to match("Edits have been made with #{name}'s user account")
|
21
|
+
expect(Card[name]).to be
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'deletes account without edits' do
|
26
|
+
Card::Auth.as_bot do
|
27
|
+
name = 'born to die'
|
28
|
+
card = Card.create! :name=>name, :type_code=>:user
|
29
|
+
card.delete
|
30
|
+
expect(Card[name]).not_to be
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
describe Card::Set::All::Type do
|
4
|
+
|
5
|
+
describe 'get_type_id (#new)' do
|
6
|
+
it "should accept cardtype name and casespace variant as type" do
|
7
|
+
expect(Card.new( :type=>'Phrase' ).type_id).to eq(Card::PhraseID)
|
8
|
+
expect(Card.new( :type=>'PHRASE' ).type_id).to eq(Card::PhraseID)
|
9
|
+
expect(Card.new( :type=>'phrase' ).type_id).to eq(Card::PhraseID)
|
10
|
+
expect(Card.new( :type=>'phrase??' ).type_id).to eq(Card::PhraseID)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should accept type_code' do
|
14
|
+
expect(Card.new( :type_code=>'phrase' ).type_id).to eq(Card::PhraseID)
|
15
|
+
expect(Card.new( :type_code=>:phrase ).type_id).to eq(Card::PhraseID)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should accept type_id' do
|
19
|
+
expect(Card.new( :type_id=>Card::PhraseID ).type_code).to eq(:phrase)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'card with wagneered type' do
|
24
|
+
before do
|
25
|
+
Card::Auth.as_bot do
|
26
|
+
@type = Card.create! :name=>'Hat', :type=>'Cardtype'
|
27
|
+
end
|
28
|
+
@hat = Card.new :type=>'Hat'
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should have a type_name' do
|
32
|
+
expect(@hat.type_name).to eq('Hat')
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should not have a type_code' do
|
36
|
+
expect(@hat.type_code).to eq(nil)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should have a type_id' do
|
40
|
+
expect(@hat.type_id).to eq(@type.id)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should have a type_card' do
|
44
|
+
expect(@hat.type_card).to eq(@type)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
describe 'card with structured type' do
|
51
|
+
before do
|
52
|
+
Card::Auth.as_bot do
|
53
|
+
Card.create! :name=>'Topic', :type=>'Cardtype'
|
54
|
+
Card.create! :name=>'Topic+*type+*structure', :content=>'{{+results}}'
|
55
|
+
Card.create! :name=>'Topic+results+*type plus right+*structure', :type=>'Search', :content=>'{}'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should clear cache of structured included card after saving" do
|
60
|
+
Card::Auth.as_bot do
|
61
|
+
expect(Card.fetch('t1+results', :new=>{}).type_name).to eq('Basic')
|
62
|
+
|
63
|
+
topic1 = Card.new :type=>'Topic', :name=>'t1'
|
64
|
+
topic1.format._render_new
|
65
|
+
topic1.save!
|
66
|
+
expect(Card.fetch('t1+results', :new=>{}).type_name).to eq('Search')
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class Card
|
3
|
+
class Act < ActiveRecord::Base
|
4
|
+
before_save :set_actor
|
5
|
+
has_many :actions, :foreign_key=>:card_act_id, :inverse_of=> :act, :order => :id, :class_name=> "Card::Action"
|
6
|
+
belongs_to :actor, class_name: "Card"
|
7
|
+
belongs_to :card
|
8
|
+
def set_actor
|
9
|
+
self.actor_id ||= Auth.current_id
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.delete_actionless
|
13
|
+
Card::Act.where(
|
14
|
+
"id NOT IN (?)",
|
15
|
+
Card::Action.pluck("card_act_id"),
|
16
|
+
).delete_all
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.find_all_with_actions_on card_ids, args={}
|
20
|
+
sql = 'card_actions.card_id IN (:card_ids) AND ( (draft is not true) '
|
21
|
+
sql << ( args[:with_drafts] ? 'OR actor_id = :current_user_id)' : ')' )
|
22
|
+
vars = {:card_ids => card_ids, :current_user_id=>Card::Auth.current_id }
|
23
|
+
Card::Act.joins(:actions).where( sql, vars ).uniq.order(:id).reverse_order
|
24
|
+
end
|
25
|
+
|
26
|
+
# def actor
|
27
|
+
# Card[ actor_id ]
|
28
|
+
# end
|
29
|
+
|
30
|
+
# def card
|
31
|
+
# Card[ card_id ]
|
32
|
+
# end
|
33
|
+
|
34
|
+
def action_on card_id
|
35
|
+
actions.where( "card_id = #{card.id} and draft is not true" ).first
|
36
|
+
end
|
37
|
+
|
38
|
+
def elapsed_time
|
39
|
+
DateTime.new(acted_at).distance_of_time_in_words_to_now
|
40
|
+
end
|
41
|
+
|
42
|
+
def relevant_drafts_for card
|
43
|
+
drafts.select do |action|
|
44
|
+
card.included_card_ids.include?(action.card_id) || (card == action.card)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def relevant_actions_for card, with_drafts=false
|
49
|
+
actions.select do |action|
|
50
|
+
card.included_card_ids.include?(action.card_id) || (card == action.card)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
def timestamp_attributes_for_create
|
56
|
+
super << :acted_at
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|