card 1.91 → 1.92
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +80 -0
- data/VERSION +1 -1
- data/card.gemspec +29 -22
- data/config/i18n-tasks.yml +8 -1
- data/config/initializers/01_core_extensions/module.rb +46 -4
- data/config/initializers/02_patches/action_dispatch.rb +16 -0
- data/config/initializers/02_patches/active_job.rb +35 -0
- data/config/initializers/patches.rb +12 -0
- data/config/initializers/recaptcha.rb +8 -2
- data/config/locales/de.yml +36 -23
- data/config/locales/en.yml +508 -15
- data/db/migrate/20110511221913_require_earlier_migrations.rb +1 -1
- data/db/migrate/20120105203350_require_1_8_migrations.rb +1 -1
- data/db/migrate/20121111025347_require_1_10_migrations.rb +1 -1
- data/db/migrate/20121118114000_split_link_type.rb +1 -1
- data/db/migrate/20121118115000_update_link_type.rb +2 -2
- data/db/migrate/20130106052640_table_cleanup.rb +1 -1
- data/db/migrate/20130109015336_trunk_left.rb +1 -1
- data/db/migrate/20130411210957_update_codenames.rb +1 -1
- data/db/migrate/20140822073704_create_new_revision_tables.rb +1 -1
- data/db/migrate/20141001105348_move_revisions_to_actions.rb +6 -6
- data/db/migrate/20141121172918_rename_card_migration_table.rb +1 -1
- data/db/migrate/20141208132159_remove_present_from_reference_table.rb +1 -1
- data/db/migrate/20141216053032_better_index_names.rb +1 -1
- data/db/migrate/20150724210803_add_comment_to_actions.rb +1 -1
- data/db/migrate/20151105225559_more_space_for_db_content.rb +1 -1
- data/db/migrate/20160122153608_new_indeces.rb +1 -1
- data/db/migrate/20170908114442_create_delayed_jobs.rb +22 -0
- data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +1 -1
- data/db/migrate_core_cards/20140512155840_add_script_cards.rb +2 -2
- data/db/migrate_core_cards/20140629222005_add_email_cards.rb +1 -1
- data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +1 -1
- data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +1 -1
- data/db/migrate_core_cards/20150429090551_search_card_context.rb +1 -0
- data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +1 -1
- data/db/migrate_core_cards/20150824135418_update_file_history.rb +1 -0
- data/db/migrate_core_cards/20161103154836_update_keys.rb +1 -1
- data/db/migrate_core_cards/20170209132834_email_test_context.rb +1 -1
- data/db/migrate_core_cards/20170830210517_correct_signup_success_message.rb +10 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/bootstrap_default/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/bootstrap_default/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cerulean/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cerulean/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cerulean/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cosmo/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cosmo/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cosmo/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cyborg/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cyborg/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cyborg/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/darkly/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/darkly/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/darkly/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/flatly/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/flatly/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/flatly/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/journal/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/journal/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/journal/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/litera/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/litera/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/litera/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lumen/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lumen/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lumen/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lux/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lux/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lux/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/materia/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/materia/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/materia/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/minty/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/minty/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/minty/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/paper/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/paper/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/pulse/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/pulse/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/pulse/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/readable/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/readable/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/sandstone/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/sandstone/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/sandstone/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/simplex/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/simplex/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/simplex/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/slate/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/slate/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/slate/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/solar/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/solar/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/solar/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/spacelab/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/spacelab/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/spacelab/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/superhero/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/superhero/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/superhero/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/united/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/united/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/united/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/yeti/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/yeti/_full.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/yeti/_variables.scss +0 -0
- data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/yeti/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/bootstrap_default/_bootswatch.scss +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/bootstrap_default/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/cerulean/_bootswatch.scss +67 -0
- data/db/migrate_core_cards/data/b4_beta_themes/cerulean/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/cerulean/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/cosmo/_bootswatch.scss +45 -0
- data/db/migrate_core_cards/data/b4_beta_themes/cosmo/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/cosmo/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/cyborg/_bootswatch.scss +141 -0
- data/db/migrate_core_cards/data/b4_beta_themes/cyborg/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/cyborg/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/darkly/_bootswatch.scss +142 -0
- data/db/migrate_core_cards/data/b4_beta_themes/darkly/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/darkly/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/flatly/_bootswatch.scss +107 -0
- data/db/migrate_core_cards/data/b4_beta_themes/flatly/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/flatly/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/journal/_bootswatch.scss +69 -0
- data/db/migrate_core_cards/data/b4_beta_themes/journal/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/journal/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/litera/_bootswatch.scss +130 -0
- data/db/migrate_core_cards/data/b4_beta_themes/litera/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/litera/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/lumen/_bootswatch.scss +294 -0
- data/db/migrate_core_cards/data/b4_beta_themes/lumen/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/lumen/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/lux/_bootswatch.scss +111 -0
- data/db/migrate_core_cards/data/b4_beta_themes/lux/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/lux/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/materia/_bootswatch.scss +610 -0
- data/db/migrate_core_cards/data/b4_beta_themes/materia/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/materia/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/minty/_bootswatch.scss +85 -0
- data/db/migrate_core_cards/data/b4_beta_themes/minty/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/minty/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/paper/_bootswatch.scss +607 -0
- data/db/migrate_core_cards/data/b4_beta_themes/paper/_variables.scss +861 -0
- data/db/migrate_core_cards/data/b4_beta_themes/pulse/_bootswatch.scss +122 -0
- data/db/migrate_core_cards/data/b4_beta_themes/pulse/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/pulse/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/readable/_bootswatch.scss +174 -0
- data/db/migrate_core_cards/data/b4_beta_themes/readable/_variables.scss +861 -0
- data/db/migrate_core_cards/data/b4_beta_themes/sandstone/_bootswatch.scss +152 -0
- data/db/migrate_core_cards/data/b4_beta_themes/sandstone/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/sandstone/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/simplex/_bootswatch.scss +103 -0
- data/db/migrate_core_cards/data/b4_beta_themes/simplex/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/simplex/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/slate/_bootswatch.scss +274 -0
- data/db/migrate_core_cards/data/b4_beta_themes/slate/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/slate/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/solar/_bootswatch.scss +45 -0
- data/db/migrate_core_cards/data/b4_beta_themes/solar/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/solar/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/spacelab/_bootswatch.scss +125 -0
- data/db/migrate_core_cards/data/b4_beta_themes/spacelab/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/spacelab/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/superhero/_bootswatch.scss +136 -0
- data/db/migrate_core_cards/data/b4_beta_themes/superhero/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/superhero/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/united/_bootswatch.scss +32 -0
- data/db/migrate_core_cards/data/b4_beta_themes/united/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/united/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/variables/_variables.scss +0 -0
- data/db/migrate_core_cards/data/b4_beta_themes/yeti/_bootswatch.scss +304 -0
- data/db/migrate_core_cards/data/b4_beta_themes/yeti/_full.scss +9921 -0
- data/db/migrate_core_cards/data/b4_beta_themes/yeti/_variables.scss +961 -0
- data/db/migrate_core_cards/data/b4_beta_themes/yeti/thumbnail.png +0 -0
- data/db/migrate_core_cards/data/cards.yml +2 -2
- data/db/migrate_core_cards/data/cards/*header +2 -2
- data/db/schema.rb +89 -106
- data/db/seed/new/card_actions.yml +2146 -1922
- data/db/seed/new/card_acts.yml +2 -248
- data/db/seed/new/card_changes.yml +1 -32341
- data/db/seed/new/card_references.yml +1162 -980
- data/db/seed/new/cards.yml +23244 -14385
- data/db/seed/test/fixtures/card_actions.yml +3459 -3011
- data/db/seed/test/fixtures/card_acts.yml +470 -608
- data/db/seed/test/fixtures/card_changes.yml +109 -37619
- data/db/seed/test/fixtures/card_references.yml +2264 -1865
- data/db/seed/test/fixtures/cards.yml +26422 -16915
- data/db/seed/test/seed.rb +247 -179
- data/db/seed_consts.rb +10 -0
- data/db/seeds.rb +1 -6
- data/db/version.txt +1 -1
- data/db/version_core_cards.txt +1 -1
- data/lib/active_record/connection_adapters_ext.rb +1 -1
- data/lib/application_job.rb +2 -0
- data/lib/application_record.rb +3 -0
- data/lib/card.rb +77 -13
- data/lib/card/act_manager.rb +3 -0
- data/lib/card/act_manager/stage_director.rb +3 -38
- data/lib/card/act_manager/stage_director/phases.rb +39 -0
- data/lib/card/codename.rb +15 -9
- data/lib/card/content.rb +4 -0
- data/lib/card/content/chunk.rb +4 -0
- data/lib/card/env.rb +6 -2
- data/lib/card/env/location_history.rb +1 -1
- data/lib/card/env/success.rb +5 -2
- data/lib/card/error.rb +3 -2
- data/lib/card/format.rb +13 -21
- data/lib/card/format/context_names.rb +40 -0
- data/lib/card/format/error.rb +8 -4
- data/lib/card/format/nest.rb +7 -7
- data/lib/card/format/nest/fetch.rb +1 -1
- data/lib/card/format/nest/mode.rb +75 -0
- data/lib/card/format/nest/subformat.rb +18 -5
- data/lib/card/format/permission.rb +1 -1
- data/lib/card/format/registration.rb +18 -12
- data/lib/card/format/render.rb +22 -11
- data/lib/card/migration.rb +1 -1
- data/lib/card/mod.rb +63 -0
- data/lib/card/mod/dirs.rb +73 -4
- data/lib/card/mod/load_strategy.rb +64 -0
- data/lib/card/mod/load_strategy/eval.rb +16 -0
- data/lib/card/mod/load_strategy/pattern_tmp_files.rb +29 -0
- data/lib/card/mod/load_strategy/set_binding_magic.rb +48 -0
- data/lib/card/mod/load_strategy/set_tmp_files.rb +33 -0
- data/lib/card/mod/load_strategy/tmp_files.rb +38 -0
- data/lib/card/mod/loader.rb +44 -129
- data/lib/card/mod/loader/set_loader.rb +85 -0
- data/lib/card/mod/loader/set_pattern_loader.rb +58 -0
- data/lib/card/mod/module_template.rb +67 -0
- data/lib/card/model/save_helper.rb +27 -4
- data/lib/card/name.rb +8 -10
- data/lib/card/name/fields_and_traits.rb +7 -5
- data/lib/card/name/view_name.rb +4 -4
- data/lib/card/query.rb +11 -5
- data/lib/card/query/attributes.rb +1 -1
- data/lib/card/query/interpretation.rb +3 -3
- data/lib/card/reference.rb +2 -2
- data/lib/card/set.rb +6 -28
- data/lib/card/set/advanced_api.rb +2 -2
- data/lib/card/set/event.rb +39 -14
- data/lib/card/set/helpers.rb +8 -7
- data/lib/card/set/i18n_scanner.rb +22 -0
- data/lib/card/set/i18n_scope.rb +41 -7
- data/lib/card/set/loader.rb +3 -52
- data/lib/card/set_pattern.rb +22 -38
- data/lib/card/subcards.rb +1 -1
- data/lib/card/tasks/card.rake +43 -3
- data/lib/card/tasks/card/migrate.rake +77 -0
- data/lib/card/view.rb +34 -5
- data/lib/card/view/cache.rb +69 -32
- data/lib/card/view/cache_action.rb +158 -0
- data/lib/card/view/options.rb +107 -57
- data/lib/card/view/stub.rb +46 -12
- data/lib/card/view/visibility.rb +3 -3
- data/lib/cardio.rb +9 -5
- data/mod/account/set/right/account.rb +2 -3
- data/mod/account/set/right/email.rb +4 -5
- data/mod/account/set/right/password.rb +2 -2
- data/mod/account/set/right/salt.rb +1 -1
- data/mod/account/set/right/status.rb +1 -1
- data/mod/account/set/right/token.rb +5 -5
- data/mod/account/set/self/account_links.rb +1 -1
- data/mod/account/set/self/signin.rb +7 -7
- data/mod/account/set/type/signup.rb +6 -4
- data/mod/account/set/type/user.rb +16 -15
- data/mod/account/spec/set/all/account_spec.rb +96 -103
- data/mod/account/spec/set/right/account_spec.rb +1 -1
- data/mod/account/spec/set/self/account_links_spec.rb +2 -2
- data/mod/account/spec/set/self/signin_spec.rb +1 -1
- data/mod/account/template/type/signup/core.haml +22 -0
- data/mod/admin/set/self/admin.rb +26 -4
- data/mod/admin/set/self/admin_info.rb +7 -2
- data/mod/admin/spec/set/self/admin_spec.rb +47 -30
- data/mod/admin/spec/set/self/version_spec.rb +2 -2
- data/mod/basic_formats/format/css_format.rb +9 -0
- data/mod/basic_formats/format/csv_format.rb +10 -0
- data/mod/basic_formats/format/js_format.rb +4 -0
- data/mod/basic_formats/format/json_format.rb +15 -0
- data/mod/basic_formats/format/xml_format.rb +4 -0
- data/mod/basic_formats/set/all/all_csv.rb +1 -1
- data/mod/basic_formats/set/all/base.rb +17 -9
- data/mod/basic_formats/set/all/json.rb +1 -1
- data/mod/basic_formats/set/self/01_head/javascript.rb +11 -7
- data/mod/basic_formats/set/self/head.rb +3 -2
- data/{db/migrate_core_cards/20170719163708_update_bootswatch_themes.rb → mod/bootstrap/db/migrate_cards/20170719163701_update_bootswatch_themes.rb} +1 -1
- data/{db/migrate_core_cards → mod/bootstrap/db/migrate_cards}/20170726111053_add_bootstrap_mixins.rb +0 -0
- data/{db/migrate_core_cards → mod/bootstrap/db/migrate_cards}/20170726145012_select2.rb +0 -0
- data/mod/bootstrap/file/cerulean_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/cerulean_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/cerulean_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/cerulean_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/cosmo_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/cosmo_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/cosmo_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/cosmo_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/cyborg_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/cyborg_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/cyborg_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/cyborg_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/darkly_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/darkly_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/darkly_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/darkly_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/flatly_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/flatly_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/flatly_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/flatly_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/journal_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/journal_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/journal_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/journal_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/litera_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/litera_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/litera_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/litera_skin_image/image-original.png +0 -0
- data/mod/bootstrap/file/litera_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/lumen_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/lumen_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/lumen_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/lumen_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/lux_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/lux_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/lux_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/lux_skin_image/image-original.png +0 -0
- data/mod/bootstrap/file/lux_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/materia_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/materia_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/materia_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/materia_skin_image/image-original.png +0 -0
- data/mod/bootstrap/file/materia_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/minty_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/minty_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/minty_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/minty_skin_image/image-original.png +0 -0
- data/mod/bootstrap/file/minty_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/pulse_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/pulse_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/pulse_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/pulse_skin_image/image-original.png +0 -0
- data/mod/bootstrap/file/pulse_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/sandstone_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/sandstone_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/sandstone_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/sandstone_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/simplex_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/simplex_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/simplex_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/simplex_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/slate_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/slate_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/slate_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/slate_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/solar_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/solar_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/solar_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/solar_skin_image/image-original.png +0 -0
- data/mod/bootstrap/file/solar_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/spacelab_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/spacelab_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/spacelab_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/spacelab_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/superhero_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/superhero_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/superhero_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/superhero_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/united_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/united_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/united_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/united_skin_image/image-small.png +0 -0
- data/mod/bootstrap/file/yeti_skin_image/image-icon.png +0 -0
- data/mod/bootstrap/file/yeti_skin_image/image-large.png +0 -0
- data/mod/bootstrap/file/yeti_skin_image/image-medium.png +0 -0
- data/mod/bootstrap/file/yeti_skin_image/image-small.png +0 -0
- data/mod/bootstrap/lib/bootstrap/basic_tags.rb +3 -3
- data/mod/bootstrap/lib/bootstrap/component.rb +124 -37
- data/mod/bootstrap/lib/bootstrap/component/carousel.rb +68 -0
- data/mod/bootstrap/lib/bootstrap/component/form.rb +49 -16
- data/mod/bootstrap/lib/bootstrap/component/horizontal_form.rb +35 -10
- data/mod/bootstrap/lib/bootstrap/component/layout.rb +10 -2
- data/mod/bootstrap/lib/bootstrap/component/panel.rb +4 -4
- data/mod/bootstrap/lib/bootstrap/old_component.rb +182 -0
- data/mod/bootstrap/lib/javascript/bootstrap_modal_wagn.js +1 -1
- data/mod/bootstrap/set/all/bootstrap/accordion.rb +10 -10
- data/mod/bootstrap/set/all/bootstrap/helper.rb +2 -0
- data/mod/bootstrap/set/all/bootstrap/tabs.rb +1 -1
- data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_builder_spec.rb +24 -14
- data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_spec.rb +2 -2
- data/mod/bootstrap/spec/set/all/bootstrap/carousel_spec.rb +65 -0
- data/mod/bootstrap/spec/set/all/bootstrap/form_spec.rb +4 -44
- data/mod/bootstrap/spec/set/all/bootstrap/horizontal_form_spec.rb +46 -0
- data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +85 -91
- data/mod/carrierwave/lib/carrier_wave/file_card_uploader.rb +7 -1
- data/mod/carrierwave/set/abstract/attachment/paths.rb +2 -2
- data/mod/carrierwave/set/abstract/attachment/upload_cache.rb +10 -3
- data/mod/carrierwave/set/type/file.rb +5 -5
- data/mod/carrierwave/set/type/image.rb +4 -4
- data/mod/carrierwave/spec/lib/carrier_wave/file_card_uploader_spec.rb +1 -0
- data/mod/carrierwave/spec/set/type/file/bucket_config_spec.rb +90 -0
- data/mod/carrierwave/spec/set/type/file_spec.rb +41 -99
- data/mod/core/chunk/link.rb +1 -2
- data/mod/core/chunk/nest.rb +1 -1
- data/mod/core/chunk/reference.rb +1 -1
- data/mod/core/chunk/view_stub.rb +8 -0
- data/mod/core/format/html_format.rb +9 -3
- data/mod/core/set/abstract/code_file.rb +1 -1
- data/mod/core/set/all/actify.rb +34 -0
- data/mod/core/set/all/assign_attributes.rb +13 -0
- data/mod/core/set/all/cache.rb +96 -0
- data/mod/core/set/all/collection.rb +16 -8
- data/mod/core/set/all/{event.rb → event_conditions.rb} +1 -1
- data/mod/core/set/all/fetch.rb +43 -315
- data/mod/core/set/all/fetch_helper.rb +130 -0
- data/mod/core/set/all/haml.rb +13 -0
- data/mod/core/set/all/i18n.rb +5 -4
- data/mod/core/set/all/mark.rb +66 -0
- data/mod/core/set/all/name.rb +35 -57
- data/mod/core/set/all/permissions.rb +6 -3
- data/mod/core/set/all/references.rb +5 -5
- data/mod/core/set/all/rename.rb +34 -0
- data/mod/core/set/all/rules.rb +1 -1
- data/mod/core/set/all/states.rb +12 -0
- data/mod/core/set/all/trash.rb +4 -3
- data/mod/core/set/all/type.rb +4 -0
- data/mod/core/set/all/update_read_rules.rb +1 -1
- data/mod/core/spec/set/all/actify_spec.rb +9 -8
- data/mod/core/spec/set/all/assign_attributes_spec.rb +33 -299
- data/mod/core/spec/set/all/collection_spec.rb +2 -2
- data/mod/core/spec/set/all/event_conditions_spec.rb +54 -0
- data/mod/core/spec/set/all/fetch_spec.rb +21 -29
- data/mod/core/spec/set/all/i18n_spec.rb +17 -0
- data/mod/core/spec/set/all/name_spec.rb +39 -3
- data/mod/core/spec/set/all/name_validations_spec.rb +21 -0
- data/mod/core/spec/set/all/permissions/reader_rules_spec.rb +166 -0
- data/mod/core/spec/set/all/permissions_spec.rb +25 -171
- data/mod/core/spec/set/all/rename_spec.rb +171 -0
- data/mod/core/spec/set/all/rules2_spec.rb +45 -49
- data/mod/core/spec/set/all/trash_spec.rb +84 -61
- data/mod/history/lib/card/act.rb +5 -4
- data/mod/history/lib/card/act/act_renderer.rb +55 -28
- data/mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb +10 -2
- data/mod/history/lib/card/act/act_renderer/relative_act_renderer.rb +8 -1
- data/mod/history/lib/card/action.rb +35 -3
- data/mod/history/lib/card/action/action_renderer.rb +3 -3
- data/mod/history/lib/card/action/admin.rb +17 -0
- data/mod/history/lib/card/change.rb +1 -1
- data/mod/history/set/all/act_view.rb +16 -9
- data/mod/history/set/all/actions.rb +35 -9
- data/mod/history/set/all/content_history.rb +22 -14
- data/mod/history/set/all/history.rb +52 -19
- data/mod/machines/file/all_script_machine_output/file.js +34 -16
- data/mod/machines/file/script_html5shiv_printshiv_machine_output/file.js +2 -0
- data/mod/machines/lib/card/machine.rb +49 -0
- data/mod/machines/lib/javascript/decko.js.coffee +9 -0
- data/mod/machines/lib/javascript/decko_mod.js.coffee +3 -0
- data/mod/machines/lib/stylesheets/style_cards.scss +10 -14
- data/mod/machines/set/abstract/machine.rb +1 -1
- data/mod/machines/spec/set/abstract/machine_spec.rb +1 -1
- data/mod/machines/spec/set/type/scss_spec.rb +5 -7
- data/mod/machines/spec/shared_examples/machine.rb +3 -3
- data/mod/notifications/set/all/follow.rb +2 -2
- data/mod/notifications/set/all/send_notifications.rb +21 -15
- data/mod/notifications/set/right/bcc.rb +1 -1
- data/mod/notifications/set/right/follow.rb +1 -1
- data/mod/notifications/set/right/html_message.rb +6 -0
- data/mod/notifications/set/right/text_message.rb +6 -0
- data/mod/notifications/spec/set/all/notify_spec.rb +87 -166
- data/mod/notifications/spec/set/type/notification_template_spec.rb +3 -2
- data/mod/pointer/set/abstract/02_pointer.rb +4 -4
- data/mod/pointer/set/abstract/02_pointer/edit.rb +41 -14
- data/mod/pointer/spec/set/type/pointer_spec.rb +10 -9
- data/mod/prosemirror_editor/lib/javascript/script_prosemirror.js +305 -143
- data/mod/settings/set/abstract/permission.rb +1 -1
- data/mod/settings/set/right/structure.rb +0 -1
- data/mod/settings/set/self/recent_settings.rb +4 -0
- data/mod/standard/file/credit_image/image-icon.png +0 -0
- data/mod/standard/file/credit_image/image-large.png +0 -0
- data/mod/standard/file/credit_image/image-medium.png +0 -0
- data/mod/standard/file/credit_image/image-small.png +0 -0
- data/mod/standard/file/favicon/image-icon.png +0 -0
- data/mod/standard/file/favicon/image-large.png +0 -0
- data/mod/standard/file/favicon/image-medium.png +0 -0
- data/mod/standard/file/favicon/image-small.png +0 -0
- data/mod/standard/file/logo/image-icon.png +0 -0
- data/mod/standard/file/logo/image-large.png +0 -0
- data/mod/standard/file/logo/image-medium.png +0 -0
- data/mod/standard/file/logo/image-small.png +0 -0
- data/mod/standard/set/abstract/search.rb +1 -1
- data/mod/standard/set/all/error.rb +5 -5
- data/mod/standard/set/all/links.rb +1 -2
- data/mod/standard/set/all/list_changes.rb +1 -1
- data/mod/standard/set/all/rich_html/content.rb +20 -14
- data/mod/standard/set/all/rich_html/editing.rb +9 -7
- data/mod/standard/set/all/rich_html/form.rb +24 -27
- data/mod/standard/set/all/rich_html/header.rb +1 -1
- data/mod/standard/set/all/rich_html/new.rb +12 -10
- data/mod/standard/set/all/rich_html/toolbar.rb +2 -2
- data/mod/standard/set/all/rich_html/wrapper.rb +4 -4
- data/mod/standard/set/self/activity_toolbar_button.rb +1 -1
- data/mod/standard/set/self/recent.rb +4 -2
- data/mod/standard/set/type/basic.rb +2 -2
- data/mod/standard/set/type/cardtype.rb +11 -8
- data/mod/standard/set/type/list.rb +4 -4
- data/mod/standard/set/type/search_type.rb +4 -4
- data/mod/standard/set/type/session.rb +4 -0
- data/mod/standard/set/type/set.rb +1 -1
- data/mod/standard/set/type/toggle.rb +2 -2
- data/mod/standard/spec/chunk/link_spec.rb +1 -1
- data/mod/standard/spec/set/all/history_spec.rb +31 -12
- data/mod/standard/spec/set/all/rich_html/form_spec.rb +2 -2
- data/mod/standard/spec/set/all/rich_html/toolbar_spec.rb +1 -0
- data/mod/standard/spec/set/type/cardtype_spec.rb +44 -1
- data/mod/standard/spec/set/type/email_template/email_config_spec.rb +2 -1
- data/mod/standard/spec/set/type/list_spec.rb +8 -3
- data/mod/standard/spec/set/type/listed_by_spec.rb +0 -6
- data/spec/config/initializers/patches/active_job_spec.rb +7 -0
- data/spec/lib/card/action_spec.rb +3 -2
- data/spec/lib/card/codename_spec.rb +7 -2
- data/spec/lib/card/content_spec.rb +19 -1
- data/spec/lib/card/format/render_spec.rb +5 -5
- data/spec/lib/card/i18n_spec.rb +5 -20
- data/spec/lib/card/{loader → mod/loader}/mod_dirs.rb +0 -0
- data/spec/lib/card/mod/loader/set_loader_spec.rb +19 -0
- data/spec/lib/card/mod/loader/set_pattern_loader_spec.rb +19 -0
- data/spec/lib/card/name/fields_and_traits_spec.rb +18 -0
- data/spec/lib/card/name_spec.rb +3 -3
- data/spec/lib/card/query/sorting_spec.rb +1 -1
- data/spec/lib/card/query_spec.rb +16 -9
- data/spec/lib/card/reference_spec.rb +5 -6
- data/spec/lib/card/set_pattern_spec.rb +4 -0
- data/spec/lib/card/view_cache_spec.rb +17 -0
- data/spec/models/card/create_spec.rb +40 -22
- data/spec/models/card/trash_spec.rb +8 -70
- data/spec/models/card_spec.rb +16 -46
- data/spec/spec_helper.rb +1 -3
- data/spec/support/card_spec_helper.rb +5 -2
- data/spec/support/card_spec_loader.rb +34 -6
- data/spec/support/helper/event_helper.rb +1 -1
- data/spec/support/helper/save_helper.rb +4 -0
- data/spec/support/helper/set_helper.rb +1 -1
- data/spec/support/matchers/card_matchers.rb +136 -0
- data/spec/support/matchers/expectations.rb +5 -0
- data/spec/support/matchers/file_matchers.rb +71 -0
- data/spec/support/matchers/negated_matchers.rb +2 -0
- data/spec/support/test_mods/mod1/set/all/test_set.rb +3 -0
- data/spec/support/test_mods/mod2/set_pattern/test_pattern.rb +0 -0
- data/tmpsets/set/mod001-admin/self/admin.rb +130 -0
- data/tmpsets/set/mod001-admin/self/admin_info.rb +110 -0
- data/tmpsets/set/mod001-admin/self/version.rb +15 -0
- data/tmpsets/set/mod002-core/abstract/code_file.rb +79 -0
- data/tmpsets/set/mod002-core/all/actify.rb +101 -0
- data/tmpsets/set/mod002-core/all/active_card.rb +42 -0
- data/tmpsets/set/mod002-core/all/collection.rb +313 -0
- data/tmpsets/set/mod002-core/all/content.rb +69 -0
- data/tmpsets/set/mod002-core/all/debug.rb +30 -0
- data/tmpsets/set/mod002-core/all/erb.rb +18 -0
- data/tmpsets/set/mod002-core/all/event.rb +62 -0
- data/tmpsets/set/mod002-core/all/export.rb +49 -0
- data/tmpsets/set/mod002-core/all/fetch.rb +335 -0
- data/tmpsets/set/mod002-core/all/haml.rb +14 -0
- data/tmpsets/set/mod002-core/all/initialize.rb +42 -0
- data/tmpsets/set/mod002-core/all/location_history.rb +15 -0
- data/tmpsets/set/mod002-core/all/name.rb +282 -0
- data/tmpsets/set/mod002-core/all/name_validations.rb +65 -0
- data/tmpsets/set/mod002-core/all/pattern.rb +67 -0
- data/tmpsets/set/mod002-core/all/permissions.rb +319 -0
- data/tmpsets/set/mod002-core/all/phases.rb +23 -0
- data/tmpsets/set/mod002-core/all/references.rb +187 -0
- data/tmpsets/set/mod002-core/all/rules.rb +311 -0
- data/tmpsets/set/mod002-core/all/stages.rb +31 -0
- data/tmpsets/set/mod002-core/all/states.rb +31 -0
- data/tmpsets/set/mod002-core/all/subcards.rb +85 -0
- data/tmpsets/set/mod002-core/all/templating.rb +78 -0
- data/tmpsets/set/mod002-core/all/tracked_attributes.rb +78 -0
- data/tmpsets/set/mod002-core/all/trash.rb +113 -0
- data/tmpsets/set/mod002-core/all/type.rb +60 -0
- data/tmpsets/set/mod002-core/all/update_read_rules.rb +91 -0
- data/tmpsets/set/mod002-core/all/utils.rb +62 -0
- data/tmpsets/set/mod002-core/all/view_cache.rb +16 -0
- data/tmpsets/set/mod003-history/all/actions.rb +60 -0
- data/tmpsets/set/mod003-history/all/content_history.rb +168 -0
- data/tmpsets/set/mod003-history/all/history.rb +408 -0
- data/tmpsets/set/mod004-basic_formats/all/all_css.rb +45 -0
- data/tmpsets/set/mod004-basic_formats/all/all_csv.rb +56 -0
- data/tmpsets/set/mod004-basic_formats/all/all_js.rb +13 -0
- data/tmpsets/set/mod004-basic_formats/all/base.rb +155 -0
- data/tmpsets/set/mod004-basic_formats/all/file.rb +16 -0
- data/tmpsets/set/mod004-basic_formats/all/json.rb +76 -0
- data/tmpsets/set/mod004-basic_formats/all/rss.rb +77 -0
- data/tmpsets/set/mod004-basic_formats/all/text.rb +13 -0
- data/tmpsets/set/mod004-basic_formats/self/01_head/javascript.rb +79 -0
- data/tmpsets/set/mod004-basic_formats/self/head.rb +101 -0
- data/tmpsets/set/mod005-pointer/abstract/01_pointer.rb +193 -0
- data/tmpsets/set/mod005-pointer/abstract/01_pointer/edit.rb +224 -0
- data/tmpsets/set/mod005-pointer/abstract/code_pointer.rb +16 -0
- data/tmpsets/set/mod005-pointer/self/script_editors.rb +8 -0
- data/tmpsets/set/mod005-pointer/self/script_mods.rb +8 -0
- data/tmpsets/set/mod005-pointer/self/script_pointer_config.rb +10 -0
- data/tmpsets/set/mod005-pointer/type/pointer.rb +8 -0
- data/tmpsets/set/mod006-ace_editor/abstract/ace_editor.rb +18 -0
- data/tmpsets/set/mod006-ace_editor/self/script_ace.rb +10 -0
- data/tmpsets/set/mod006-ace_editor/self/script_ace_config.rb +12 -0
- data/tmpsets/set/mod007-prosemirror_editor/abstract/prosemirror_editor.rb +14 -0
- data/tmpsets/set/mod007-prosemirror_editor/self/script_prosemirror.rb +10 -0
- data/tmpsets/set/mod007-prosemirror_editor/self/script_prosemirror_config.rb +13 -0
- data/tmpsets/set/mod009-solid_cache/abstract/solid_cache.rb +106 -0
- data/tmpsets/set/mod009-solid_cache/all/solid_cache.rb +21 -0
- data/tmpsets/set/mod009-solid_cache/right/solid_cache.rb +39 -0
- data/tmpsets/set/mod010-basic_types/type/html.rb +26 -0
- data/tmpsets/set/mod010-basic_types/type/plain_text.rb +19 -0
- data/tmpsets/set/mod011-machines/abstract/machine.rb +277 -0
- data/tmpsets/set/mod011-machines/abstract/machine_input.rb +83 -0
- data/tmpsets/set/mod011-machines/abstract/script.rb +49 -0
- data/tmpsets/set/mod011-machines/all/reset_machines.rb +19 -0
- data/tmpsets/set/mod011-machines/right/machine_cache.rb +18 -0
- data/tmpsets/set/mod011-machines/right/machine_input.rb +10 -0
- data/tmpsets/set/mod011-machines/right/machine_output.rb +47 -0
- data/tmpsets/set/mod011-machines/self/script_card_menu.rb +8 -0
- data/tmpsets/set/mod011-machines/self/script_html5shiv_printshiv.rb +8 -0
- data/tmpsets/set/mod011-machines/self/script_jquery.rb +8 -0
- data/tmpsets/set/mod011-machines/self/script_jquery_helper.rb +16 -0
- data/tmpsets/set/mod011-machines/self/script_slot.rb +14 -0
- data/tmpsets/set/mod011-machines/self/style_bootstrap_compatible.rb +8 -0
- data/tmpsets/set/mod011-machines/self/style_cards.rb +8 -0
- data/tmpsets/set/mod011-machines/self/style_jquery_ui_smoothness.rb +8 -0
- data/tmpsets/set/mod011-machines/type/coffee_script.rb +43 -0
- data/tmpsets/set/mod011-machines/type/css.rb +67 -0
- data/tmpsets/set/mod011-machines/type/java_script.rb +36 -0
- data/tmpsets/set/mod011-machines/type/scss.rb +21 -0
- data/tmpsets/set/mod011-machines/type/skin.rb +13 -0
- data/tmpsets/set/mod012-settings/abstract/permission.rb +119 -0
- data/tmpsets/set/mod012-settings/right/add_help.rb +18 -0
- data/tmpsets/set/mod012-settings/right/comment.rb +8 -0
- data/tmpsets/set/mod012-settings/right/create.rb +8 -0
- data/tmpsets/set/mod012-settings/right/default.rb +14 -0
- data/tmpsets/set/mod012-settings/right/delete.rb +8 -0
- data/tmpsets/set/mod012-settings/right/help.rb +10 -0
- data/tmpsets/set/mod012-settings/right/read.rb +10 -0
- data/tmpsets/set/mod012-settings/right/script.rb +16 -0
- data/tmpsets/set/mod012-settings/right/structure.rb +68 -0
- data/tmpsets/set/mod012-settings/right/style.rb +17 -0
- data/tmpsets/set/mod012-settings/right/update.rb +8 -0
- data/tmpsets/set/mod012-settings/self/accountable.rb +10 -0
- data/tmpsets/set/mod012-settings/self/add_help.rb +9 -0
- data/tmpsets/set/mod012-settings/self/autoname.rb +9 -0
- data/tmpsets/set/mod012-settings/self/captcha.rb +9 -0
- data/tmpsets/set/mod012-settings/self/create.rb +9 -0
- data/tmpsets/set/mod012-settings/self/default.rb +9 -0
- data/tmpsets/set/mod012-settings/self/default_html_view.rb +9 -0
- data/tmpsets/set/mod012-settings/self/delete.rb +9 -0
- data/tmpsets/set/mod012-settings/self/follow_fields.rb +9 -0
- data/tmpsets/set/mod012-settings/self/help.rb +9 -0
- data/tmpsets/set/mod012-settings/self/input.rb +11 -0
- data/tmpsets/set/mod012-settings/self/layout.rb +9 -0
- data/tmpsets/set/mod012-settings/self/on_create.rb +9 -0
- data/tmpsets/set/mod012-settings/self/on_delete.rb +9 -0
- data/tmpsets/set/mod012-settings/self/on_update.rb +9 -0
- data/tmpsets/set/mod012-settings/self/options.rb +11 -0
- data/tmpsets/set/mod012-settings/self/options_label.rb +11 -0
- data/tmpsets/set/mod012-settings/self/read.rb +9 -0
- data/tmpsets/set/mod012-settings/self/recent_settings.rb +10 -0
- data/tmpsets/set/mod012-settings/self/script.rb +9 -0
- data/tmpsets/set/mod012-settings/self/structure.rb +9 -0
- data/tmpsets/set/mod012-settings/self/style.rb +9 -0
- data/tmpsets/set/mod012-settings/self/table_of_contents.rb +9 -0
- data/tmpsets/set/mod012-settings/self/thanks.rb +9 -0
- data/tmpsets/set/mod012-settings/self/update.rb +9 -0
- data/tmpsets/set/mod012-settings/type/setting.rb +111 -0
- data/tmpsets/set/mod013-email/all/email_html.rb +11 -0
- data/tmpsets/set/mod013-email/all/email_text.rb +12 -0
- data/tmpsets/set/mod013-email/all/follow.rb +253 -0
- data/tmpsets/set/mod013-email/all/notify.rb +271 -0
- data/tmpsets/set/mod013-email/all/observer.rb +33 -0
- data/tmpsets/set/mod013-email/right/bcc.rb +47 -0
- data/tmpsets/set/mod013-email/right/cc.rb +10 -0
- data/tmpsets/set/mod013-email/right/follow.rb +106 -0
- data/tmpsets/set/mod013-email/right/follow_fields.rb +10 -0
- data/tmpsets/set/mod013-email/right/followers.rb +41 -0
- data/tmpsets/set/mod013-email/right/following.rb +65 -0
- data/tmpsets/set/mod013-email/right/from.rb +10 -0
- data/tmpsets/set/mod013-email/right/html_message.rb +10 -0
- data/tmpsets/set/mod013-email/right/to.rb +10 -0
- data/tmpsets/set/mod013-email/self/always.rb +20 -0
- data/tmpsets/set/mod013-email/self/created.rb +26 -0
- data/tmpsets/set/mod013-email/self/edited.rb +27 -0
- data/tmpsets/set/mod013-email/self/follow.rb +9 -0
- data/tmpsets/set/mod013-email/self/follow_defaults.rb +75 -0
- data/tmpsets/set/mod013-email/self/never.rb +20 -0
- data/tmpsets/set/mod013-email/type/email_template.rb +133 -0
- data/tmpsets/set/mod013-email/type_plus_right/user/follow.rb +180 -0
- data/tmpsets/set/mod014-developer/all/event_viz.rb +59 -0
- data/tmpsets/set/mod014-developer/all/view_viz.rb +30 -0
- data/tmpsets/set/mod014-developer/right/debug.rb +96 -0
- data/tmpsets/set/mod015-carrierwave/abstract/attachment.rb +118 -0
- data/tmpsets/set/mod015-carrierwave/abstract/attachment/paths.rb +57 -0
- data/tmpsets/set/mod015-carrierwave/abstract/attachment/storage_type.rb +326 -0
- data/tmpsets/set/mod015-carrierwave/abstract/attachment/upload_cache.rb +84 -0
- data/tmpsets/set/mod015-carrierwave/all/file_utils.rb +35 -0
- data/tmpsets/set/mod015-carrierwave/self/admin.rb +30 -0
- data/tmpsets/set/mod015-carrierwave/type/file.rb +158 -0
- data/tmpsets/set/mod015-carrierwave/type/image.rb +97 -0
- data/tmpsets/set/mod016-standard/all/comment.rb +67 -0
- data/tmpsets/set/mod016-standard/all/error.rb +229 -0
- data/tmpsets/set/mod016-standard/all/links.rb +165 -0
- data/tmpsets/set/mod016-standard/all/list_changes.rb +53 -0
- data/tmpsets/set/mod016-standard/all/rich_html/content.rb +261 -0
- data/tmpsets/set/mod016-standard/all/rich_html/editing.rb +247 -0
- data/tmpsets/set/mod016-standard/all/rich_html/form.rb +298 -0
- data/tmpsets/set/mod016-standard/all/rich_html/header.rb +78 -0
- data/tmpsets/set/mod016-standard/all/rich_html/menu.rb +154 -0
- data/tmpsets/set/mod016-standard/all/rich_html/modal.rb +58 -0
- data/tmpsets/set/mod016-standard/all/rich_html/toolbar.rb +312 -0
- data/tmpsets/set/mod016-standard/all/rich_html/wrapper.rb +191 -0
- data/tmpsets/set/mod016-standard/right/discussion.rb +10 -0
- data/tmpsets/set/mod016-standard/right/when_created.rb +14 -0
- data/tmpsets/set/mod016-standard/right/when_last_edited.rb +14 -0
- data/tmpsets/set/mod016-standard/rstar/rules.rb +107 -0
- data/tmpsets/set/mod016-standard/rstar/rules_editor.rb +371 -0
- data/tmpsets/set/mod016-standard/self/alerts.rb +12 -0
- data/tmpsets/set/mod016-standard/self/codenames.rb +7 -0
- data/tmpsets/set/mod016-standard/self/foot.rb +15 -0
- data/tmpsets/set/mod016-standard/self/navbox.rb +36 -0
- data/tmpsets/set/mod016-standard/self/now.rb +14 -0
- data/tmpsets/set/mod016-standard/self/recent.rb +34 -0
- data/tmpsets/set/mod016-standard/self/search.rb +71 -0
- data/tmpsets/set/mod016-standard/type/basic.rb +59 -0
- data/tmpsets/set/mod016-standard/type/cardtype.rb +81 -0
- data/tmpsets/set/mod016-standard/type/date.rb +15 -0
- data/tmpsets/set/mod016-standard/type/layout_type.rb +17 -0
- data/tmpsets/set/mod016-standard/type/list.rb +120 -0
- data/tmpsets/set/mod016-standard/type/listed_by.rb +85 -0
- data/tmpsets/set/mod016-standard/type/number.rb +25 -0
- data/tmpsets/set/mod016-standard/type/phrase.rb +10 -0
- data/tmpsets/set/mod016-standard/type/search_type.rb +339 -0
- data/tmpsets/set/mod016-standard/type/session.rb +42 -0
- data/tmpsets/set/mod016-standard/type/set.rb +371 -0
- data/tmpsets/set/mod016-standard/type/toggle.rb +19 -0
- data/tmpsets/set/mod016-standard/type/uri.rb +18 -0
- data/tmpsets/set/mod017-account/all/account.rb +72 -0
- data/tmpsets/set/mod017-account/right/account.rb +196 -0
- data/tmpsets/set/mod017-account/right/email.rb +61 -0
- data/tmpsets/set/mod017-account/right/password.rb +54 -0
- data/tmpsets/set/mod017-account/right/salt.rb +12 -0
- data/tmpsets/set/mod017-account/right/status.rb +16 -0
- data/tmpsets/set/mod017-account/right/token.rb +57 -0
- data/tmpsets/set/mod017-account/self/account_links.rb +72 -0
- data/tmpsets/set/mod017-account/self/signin.rb +165 -0
- data/tmpsets/set/mod017-account/type/signup.rb +175 -0
- data/tmpsets/set/mod017-account/type/user.rb +88 -0
- data/tmpsets/set/mod018-bootstrap/all/bootstrap/form.rb +42 -0
- data/tmpsets/set/mod018-bootstrap/all/bootstrap/helper.rb +236 -0
- data/tmpsets/set/mod018-bootstrap/all/bootstrap/table.rb +68 -0
- data/tmpsets/set/mod018-bootstrap/all/bootstrap/tabs.rb +88 -0
- data/tmpsets/set/mod018-bootstrap/all/bootstrap/wrapper.rb +18 -0
- data/tmpsets/set/mod018-bootstrap/all/rich_bootstrap.rb +13 -0
- data/tmpsets/set/mod018-bootstrap/self/bootstrap_cards.rb +8 -0
- data/tmpsets/set/mod018-bootstrap/self/bootstrap_js.rb +12 -0
- data/tmpsets/set/mod018-bootstrap/self/bootswatch_shared.rb +47 -0
- data/tmpsets/set/mod018-bootstrap/self/script_mods.rb +7 -0
- data/tmpsets/set/mod018-bootstrap/self/smartmenu_css.rb +12 -0
- data/tmpsets/set/mod018-bootstrap/self/smartmenu_js.rb +12 -0
- data/tmpsets/set_pattern/100-all.rb +24 -0
- data/tmpsets/set_pattern/101-all_plus.rb +26 -0
- data/tmpsets/set_pattern/102-type.rb +36 -0
- data/tmpsets/set_pattern/103-star.rb +28 -0
- data/tmpsets/set_pattern/104-rstar.rb +30 -0
- data/tmpsets/set_pattern/105-right.rb +33 -0
- data/tmpsets/set_pattern/106-type_plus_right.rb +39 -0
- data/tmpsets/set_pattern/107-self.rb +32 -0
- metadata +494 -167
- data/README_Developers.rdoc +0 -100
- data/lib/card/format/names.rb +0 -43
- data/lib/card/format/nest/view.rb +0 -65
- data/lib/card/view/fetch.rb +0 -121
- data/mod/core/spec/set/all/attribute_tracking_spec.rb +0 -21
- data/spec/models/card/cardtype_spec.rb +0 -189
- data/spec/models/card/type_transition_spec.rb +0 -132
- data/spec/models/card/validation_spec.rb +0 -34
- data/spec/support/matchers.rb +0 -74
data/README_Developers.rdoc
DELETED
@@ -1,100 +0,0 @@
|
|
1
|
-
|
2
|
-
=A Developer's introduction to the Wagn/Card code base
|
3
|
-
|
4
|
-
New folks should start here after playing with Wagn but before digging into code.
|
5
|
-
|
6
|
-
==Intro
|
7
|
-
|
8
|
-
===Am I in the right place?
|
9
|
-
|
10
|
-
Yes, if:
|
11
|
-
|
12
|
-
* <b>you're a Ruby developer</b>, or at least someone who does not fear ruby code. <b>Not a techie? {Try Wagn.org}[http://wagn.org]</b>
|
13
|
-
* <b>you've experimented with Wagn</b> enough to know the basics (cards, types, rules, etc.) <b>No idea what a card is? {Try Wagn.org}[http://wagn.org]</b>.
|
14
|
-
* <b>you're looking at this page from a docs site</b> (ie, NOT GitHub) so you can use our links to navigate code. <b>Links look funny? {Try rubydocs.info}[http://rubydoc.info/gems/card].</b>
|
15
|
-
|
16
|
-
|
17
|
-
===Is Wagn an _application_ or a <i>development framework</i>?
|
18
|
-
|
19
|
-
It's both.
|
20
|
-
|
21
|
-
When you install and "seed" a new Wagn project, you have a working "deck" right away. There are lots of things built in: account handling, edit histories, default layouts, CSS, etc. In other words: you have a basic application.
|
22
|
-
|
23
|
-
But a newly seeded Deck is just a starting point. <b>Wagn is a development framework in which you start <i>in the middle of things</i> rather than from scratch</b>. Seeding is a bit of a headstart, and it means that designers, developers, and content creators can start working in parallel on day 1. But the seeded cards don't determine what you can build with Wagn; you can add things, you can remove things... In fact, you can build pretty much whatever you want.
|
24
|
-
|
25
|
-
===Sets
|
26
|
-
|
27
|
-
_Cards_ are the fundamental building blocks of Wagn, and _Sets_ are the fundamental pattern for organizing cards. Both Wagneers and Wagn developers create web systems by applying _rules_ to _sets_ of _cards_.
|
28
|
-
|
29
|
-
If you've edited Rules through a card toolbar in any Wagn deck, you will have encountered Sets. For example, imagine you're on a User card named "Henry Tai", and you decide to edit its structure. When you edit its rule, you will be prompted to choose the Set of cards to which the rule applies, eg:
|
30
|
-
|
31
|
-
* Just "Henry Tai"
|
32
|
-
* All Users
|
33
|
-
* All Cards
|
34
|
-
|
35
|
-
Depending on which Set you choose, the Rule in question will be applied to a specific group of cards.
|
36
|
-
|
37
|
-
This same general pattern occurs in Wagn code: <b>code rules (methods) are organized under the Set of cards to which they apply.</b>
|
38
|
-
|
39
|
-
|
40
|
-
===MoFoS Architecture
|
41
|
-
|
42
|
-
Sets are central to Wagn's architecture. Wagn is not, like Ruby on Rails, an implementation of the "MVC" (Model-View-Controller) architectural pattern. Instead, we like to think that we're the first instance of a new pattern that we call _MoFoS_.
|
43
|
-
|
44
|
-
MoFoS stands for "Model-Formats-Sets": One Model, viewable in many Formats, divisible into Sets.
|
45
|
-
|
46
|
-
In Wagn, the MoFoS "one model" is, as you may have guessed, the _card_.
|
47
|
-
|
48
|
-
You may have also noticed that you can add .html (the default), .text, .json, etc to any card's web path to receive the card's contents in a different format. This is the Format in MoFos.
|
49
|
-
|
50
|
-
The great power of MoFoS, though, is in the Sets. Thanks to Sets, code rules (and data rules) can be as narrow or specific as desired. These nonorthogonal groupings open up lots of exciting possibilities, and they're a big part of what makes Wagn so much fun.
|
51
|
-
|
52
|
-
|
53
|
-
===Is Wagn Ruby on Rails?
|
54
|
-
|
55
|
-
It's likely that many folks reading this are Ruby-on-Rails developers. They'll find lots of familiar patterns in Wagn, and they may have noticed that wagn depends upon rails gems. We should be clear: <b>Wagn is a Rails descendant and owes a ton to the Rails community, but Wagn is not Rails</b>.
|
56
|
-
|
57
|
-
The main difference is that while Rails' core pattern is creating new things (especially models, views, and controllers), Wagn's core pattern is subdividing exising things into new Sets.
|
58
|
-
|
59
|
-
Wagn mod developers do create lots of views (though they're quite different from Rails views), but we never create new models or controllers. In the Wagn gem there is one controller (CardController), one main model ({Card}), and several other models to optimize the Card model and track its history ({Card::Reference}, {Card::Act}, {Card::Action}, and {Card::Change}).
|
60
|
-
|
61
|
-
Wagn's equivalent of creating a new model is configuring a new Set of cards. Its equivalent of creating new actions on controllers is creating new events that are conditionally triggered for a Set of cards.
|
62
|
-
|
63
|
-
Rails development experience is definitely a plus in getting to know Wagn, but Wagn offers a new architecture, and lot of new possibilities.
|
64
|
-
|
65
|
-
|
66
|
-
==Mods
|
67
|
-
|
68
|
-
A Wagn Mod is a discrete piece of Wagn functionality. If you want to customize a Wagn deck in a way that can't be done on the site itself, odds are you want a mod.
|
69
|
-
|
70
|
-
The most convenient way to add a mod is in the `mod` directory of your deck, eg:
|
71
|
-
|
72
|
-
/mydeck/mod/mymod
|
73
|
-
|
74
|
-
A mod can have several different directories: <i>chunk, format, layout, set, set_pattern, spec, file, and lib</i>. Of these, the set directory is by far the most important.
|
75
|
-
|
76
|
-
===Creating a mod with set modules
|
77
|
-
|
78
|
-
Set modules are defined in a mod's set directory, eg:
|
79
|
-
|
80
|
-
/mydeck/mod/mymod/set/
|
81
|
-
|
82
|
-
For example, if your deck has Company cards, you can extend the behavior of those cards by adding a set module like so:
|
83
|
-
|
84
|
-
/mydeck/mod/mymod/set/type/company.rb
|
85
|
-
|
86
|
-
Note that "company" here does not refer to its "name", but rather its "codename" (which an administrator might add to the Company card via the RESTful web API with a url like
|
87
|
-
|
88
|
-
/update/Company?card[codename]=company
|
89
|
-
|
90
|
-
Generally speaking, code should never refer to a card by name; otherwise it will break when the card is renamed. Instead, it should use the codename, which will continue to work even if the canonical name is changed.
|
91
|
-
|
92
|
-
|
93
|
-
The full path of a set module follows this pattern
|
94
|
-
|
95
|
-
[mod dir]/set/[set_pattern](/[anchor])(/[additional]).rb
|
96
|
-
|
97
|
-
==....more coming soon!
|
98
|
-
|
99
|
-
|
100
|
-
|
data/lib/card/format/names.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
class Card
|
2
|
-
class Format
|
3
|
-
module Names
|
4
|
-
def initial_context_names
|
5
|
-
@initial_context_names ||=
|
6
|
-
if @context_names
|
7
|
-
context_names_minus_irrelevants
|
8
|
-
else
|
9
|
-
context_names_from_params
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def context_names_minus_irrelevants
|
14
|
-
part_keys = @card.cardname.part_names.map(&:key)
|
15
|
-
@context_names.reject { |n| !part_keys.include? n.key }
|
16
|
-
end
|
17
|
-
|
18
|
-
def context_names_from_params
|
19
|
-
return [] unless (name_list = Card::Env.slot_opts[:name_context])
|
20
|
-
name_list.to_s.split(",").map(&:to_name)
|
21
|
-
end
|
22
|
-
|
23
|
-
def context_names_to_params
|
24
|
-
return unless @context_names
|
25
|
-
@context_names.join(",")
|
26
|
-
end
|
27
|
-
|
28
|
-
def add_name_context name=nil
|
29
|
-
name ||= card.name
|
30
|
-
@context_names += name.to_name.part_names
|
31
|
-
@context_names.uniq!
|
32
|
-
end
|
33
|
-
|
34
|
-
def showname title=nil
|
35
|
-
if title
|
36
|
-
card.cardname.title title, @context_names
|
37
|
-
else
|
38
|
-
@showname ||= card.cardname.to_show(*@context_names)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
class Card
|
2
|
-
class Format
|
3
|
-
module Nest
|
4
|
-
NEST_MODES = { new: :edit,
|
5
|
-
closed_content: :closed,
|
6
|
-
setup: :edit,
|
7
|
-
edit: :edit, closed: :closed, layout: :layout,
|
8
|
-
normal: :normal, template: :template }.freeze
|
9
|
-
|
10
|
-
# Renders views for a nests
|
11
|
-
module View
|
12
|
-
def with_nest_mode mode
|
13
|
-
old_mode = @mode
|
14
|
-
if (switch_mode = NEST_MODES[mode])
|
15
|
-
@mode = switch_mode
|
16
|
-
end
|
17
|
-
result = yield
|
18
|
-
@mode = old_mode
|
19
|
-
result
|
20
|
-
end
|
21
|
-
|
22
|
-
# private
|
23
|
-
|
24
|
-
def modal_nest_view view
|
25
|
-
# Note: the subformat always has the same @mode as its parent format
|
26
|
-
case @mode
|
27
|
-
when :edit then view_in_edit_mode(view)
|
28
|
-
when :template then :template_rule
|
29
|
-
when :closed then view_in_closed_mode(view)
|
30
|
-
else view
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Returns the view that the card should use
|
35
|
-
# if nested in edit mode
|
36
|
-
def view_in_edit_mode homeview
|
37
|
-
hide_view_in_edit_mode?(homeview) ? :blank : :edit_in_form
|
38
|
-
end
|
39
|
-
|
40
|
-
def hide_view_in_edit_mode? view
|
41
|
-
Card::Format.perms[view] == :none || # view never edited
|
42
|
-
card.structure || # not yet nesting structures
|
43
|
-
card.key.blank? # eg {{_self|type}} on new cards
|
44
|
-
end
|
45
|
-
|
46
|
-
# Return the view that the card should use
|
47
|
-
# if nested in closed mode
|
48
|
-
def view_in_closed_mode view
|
49
|
-
approved_view = Card::Format.closed[view]
|
50
|
-
if approved_view == true
|
51
|
-
view
|
52
|
-
elsif Card::Format.error_code[view]
|
53
|
-
view
|
54
|
-
elsif approved_view
|
55
|
-
approved_view
|
56
|
-
elsif !card.known?
|
57
|
-
:closed_missing
|
58
|
-
else
|
59
|
-
:closed_content
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
data/lib/card/view/fetch.rb
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
class Card
|
2
|
-
class View
|
3
|
-
# Support context-aware card view caching.
|
4
|
-
#
|
5
|
-
# View definitions can contain cache settings that guide whether and how
|
6
|
-
# the view should be cached.
|
7
|
-
module Fetch
|
8
|
-
# fetching can result in one of three things:
|
9
|
-
# - simply yielding the initial render call
|
10
|
-
# - storing or retrieving the render to/from the cache
|
11
|
-
# - creating a stub within another render
|
12
|
-
# (so that the stub may be rendered later)
|
13
|
-
def fetch &block
|
14
|
-
with_fetch_logging do |cache_level|
|
15
|
-
case cache_level
|
16
|
-
when :yield then yield
|
17
|
-
when :cache_yield then cache_fetch(&block)
|
18
|
-
when :stub then stub
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
# Each of the following represents an accepted value for cache
|
24
|
-
# directives on view definitions. eg:
|
25
|
-
# view :myview, cache: :standard do ...
|
26
|
-
#
|
27
|
-
# * *always* - store independent cached view, even if that means double
|
28
|
-
# caching. (eg view is inside another one already being cached)
|
29
|
-
# * *standard* (default) cache independently or dependently, but
|
30
|
-
# don't double cache
|
31
|
-
# * *never* don't ever cache this view
|
32
|
-
def determine_cache_level
|
33
|
-
return :yield unless Cardio.config.view_cache
|
34
|
-
send "#{caching? ? 'dependent' : 'independent'}_cache_level"
|
35
|
-
end
|
36
|
-
|
37
|
-
def with_fetch_logging
|
38
|
-
cache_level = determine_cache_level
|
39
|
-
logging = false # TODO: make configurable
|
40
|
-
if logging
|
41
|
-
puts "FETCH_VIEW (#{card.name}##{requested_view})" \
|
42
|
-
"cache-level = #{cache_level}"
|
43
|
-
end
|
44
|
-
yield cache_level
|
45
|
-
end
|
46
|
-
|
47
|
-
# INDEPENDENT CACHING
|
48
|
-
# takes place on its own (not within another view being cached)
|
49
|
-
|
50
|
-
def independent_cache_level
|
51
|
-
independent_cache_ok? ? :cache_yield : :yield
|
52
|
-
end
|
53
|
-
|
54
|
-
def independent_cache_ok?
|
55
|
-
cache_setting != :never &&
|
56
|
-
foreign_live_options.empty? &&
|
57
|
-
clean_enough_to_cache?
|
58
|
-
end
|
59
|
-
|
60
|
-
# The following methods are shared by independent and dependent caching
|
61
|
-
|
62
|
-
# view-specific setting as set in view definition. (always, standard, or
|
63
|
-
# never)
|
64
|
-
def cache_setting
|
65
|
-
format.view_cache_setting requested_view
|
66
|
-
end
|
67
|
-
|
68
|
-
# altered view requests and altered cards are not cacheable
|
69
|
-
def clean_enough_to_cache?
|
70
|
-
requested_view == ok_view &&
|
71
|
-
!card.unknown? &&
|
72
|
-
!card.db_content_changed?
|
73
|
-
# FIXME: might consider other changes as disqualifying, though
|
74
|
-
# we should make sure not to disallow caching of virtual cards
|
75
|
-
end
|
76
|
-
|
77
|
-
# DEPENDENT CACHING
|
78
|
-
# handling of views rendered within another cached view.
|
79
|
-
|
80
|
-
def dependent_cache_level
|
81
|
-
level = dependent_cache_level_unvalidated
|
82
|
-
validate_stub if level == :stub
|
83
|
-
level
|
84
|
-
end
|
85
|
-
|
86
|
-
def dependent_cache_level_unvalidated
|
87
|
-
return :yield if ok_view == :too_deep
|
88
|
-
dependent_cache_ok? ? dependent_cache_setting : :stub
|
89
|
-
end
|
90
|
-
|
91
|
-
def dependent_cache_ok?
|
92
|
-
return false unless parent && clean_enough_to_cache?
|
93
|
-
return true if normalized_options[:skip_perms]
|
94
|
-
dependent_cacheable_permissible?
|
95
|
-
end
|
96
|
-
|
97
|
-
def dependent_cacheable_permissible?
|
98
|
-
case permission_task
|
99
|
-
when :none then true
|
100
|
-
when parent.permission_task then true
|
101
|
-
when Symbol then card.anyone_can?(permission_task)
|
102
|
-
else false
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
# task directly associated with the view in its definition via the
|
107
|
-
# "perms" directive
|
108
|
-
def permission_task
|
109
|
-
@permission_task ||= Card::Format.perms[requested_view] || :read
|
110
|
-
end
|
111
|
-
|
112
|
-
DEPENDENT_CACHE_LEVEL =
|
113
|
-
{ always: :cache_yield, standard: :yield, never: :stub }.freeze
|
114
|
-
|
115
|
-
def dependent_cache_setting
|
116
|
-
level = DEPENDENT_CACHE_LEVEL[cache_setting]
|
117
|
-
level || raise("unknown cache setting: #{cache_setting}")
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
|
3
|
-
# describe Card::Set::All::AttributeTracking do
|
4
|
-
# context "new card" do
|
5
|
-
# before(:each) do
|
6
|
-
# Card::Auth.as_bot do
|
7
|
-
# @c = Card.new name: "New Card", content: "Great Content"
|
8
|
-
# end
|
9
|
-
# end
|
10
|
-
#
|
11
|
-
# it "has updates" do
|
12
|
-
# described_class::Updates.should === @c.updates
|
13
|
-
# end
|
14
|
-
#
|
15
|
-
# it "tracks changes" do
|
16
|
-
# @c.name.should == 'New Card'
|
17
|
-
# @c.name = 'Old Card'
|
18
|
-
# @c.name.should == 'Old Card'
|
19
|
-
# end
|
20
|
-
# end
|
21
|
-
# end
|
@@ -1,189 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
|
3
|
-
class Card
|
4
|
-
# REVIEW: hooks api will do this differently, probably should remove and add new tests elsewhere
|
5
|
-
# this is used by some type based modules on CardtypeE from type_transition
|
6
|
-
cattr_accessor :count
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "Card (Cardtype)" do
|
10
|
-
it "does not allow cardtype remove when instances present" do
|
11
|
-
Card.create name: "City", type: "Cardtype"
|
12
|
-
city = Card.fetch("City")
|
13
|
-
c1 = Card.create name: "Sparta", type: "City"
|
14
|
-
c2 = Card.create name: "Eugene", type: "City"
|
15
|
-
assert_equal %w(Eugene Sparta), Card.search(type: "City").map(&:name).sort
|
16
|
-
assert_raises ActiveRecord::RecordInvalid do
|
17
|
-
city.delete!
|
18
|
-
end
|
19
|
-
# make sure it wasn't deleted / trashed
|
20
|
-
expect(Card["City"]).not_to be_nil
|
21
|
-
end
|
22
|
-
|
23
|
-
it "remove cardtype" do
|
24
|
-
Card.create! name: "County", type: "Cardtype"
|
25
|
-
c = Card["County"]
|
26
|
-
c.delete
|
27
|
-
end
|
28
|
-
|
29
|
-
it "cardtype creation and dynamic cardtype" do
|
30
|
-
assert Card.create(name: "BananaPudding", type: "Cardtype").type_id == Card::Codename[:cardtype]
|
31
|
-
assert_instance_of Card, c = Card.fetch("BananaPudding")
|
32
|
-
|
33
|
-
# you have to have a module to include or it's just a Basic (type_code fielde excepted)
|
34
|
-
cd = Card.create(type: "banana_pudding", name: "figgy")
|
35
|
-
assert cd.type_name == "BananaPudding"
|
36
|
-
assert Card.find_by_type_id(c.id)
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "conversion to cardtype" do
|
40
|
-
before do
|
41
|
-
@card = Card.create!(type: "Cardtype", name: "Cookie")
|
42
|
-
expect(@card.type_name).to eq("Cardtype")
|
43
|
-
end
|
44
|
-
|
45
|
-
it "creates cardtype model and permission" do
|
46
|
-
@card.type_id = Card.fetch_id("cookie")
|
47
|
-
@card.save!
|
48
|
-
expect(@card.type_name).to eq("Cookie")
|
49
|
-
@card = Card["Cookie"]
|
50
|
-
assert_instance_of Card, @card
|
51
|
-
expect(@card.type_code).to eq(nil) # :cookie
|
52
|
-
assert_equal "Cookie", Card.create!(name: "Oreo", type: "Cookie").type_name
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
it "cardtype" do
|
57
|
-
Card.all.each do |card|
|
58
|
-
assert !card.type_card.nil?
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
describe Card, "created without permission" do
|
64
|
-
before do
|
65
|
-
Card::Auth.current_id = Card::AnonymousID
|
66
|
-
end
|
67
|
-
|
68
|
-
# FIXME: this one should pass. unfortunately when I tried to fix it it started looking like the clean solution
|
69
|
-
# was to rewrite most of the permissions section as simple validations and i decided not to go down that rabbit hole.
|
70
|
-
#
|
71
|
-
# it "does not be valid" do
|
72
|
-
# Card.new( name: 'foo', type: 'Cardtype').valid?.should_not be_true
|
73
|
-
# end
|
74
|
-
|
75
|
-
it "does not create a new cardtype until saved" do
|
76
|
-
expect do
|
77
|
-
Card.new(name: "foo", type: "Cardtype")
|
78
|
-
end.not_to change(Card, :count)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe Card, "Normal card with descendants" do
|
83
|
-
before do
|
84
|
-
@a = Card["A"]
|
85
|
-
end
|
86
|
-
|
87
|
-
it "confirms that it has descendants" do
|
88
|
-
expect(@a.descendants.length).to be > 0
|
89
|
-
end
|
90
|
-
|
91
|
-
it "has its type changed" do
|
92
|
-
Card::Auth.as_bot do
|
93
|
-
@a.type_id = Card::PhraseID
|
94
|
-
@a.save!
|
95
|
-
expect(Card["A"].type_code).to eq(:phrase)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
it "still has its descendants after changing type" do
|
99
|
-
Card::Auth.as_bot do
|
100
|
-
assert type_id = Card.fetch_id("cardtype_e")
|
101
|
-
@a.type_id = type_id
|
102
|
-
@a.save!
|
103
|
-
expect(Card["A"].descendants.length).to be > 0
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
describe Card, "New Cardtype" do
|
109
|
-
before do
|
110
|
-
Card::Auth.as_bot do
|
111
|
-
@ct = Card.create! name: "Animal", type: "Cardtype"
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
it "has create permissions" do
|
116
|
-
expect(@ct.who_can(:create)).not_to be_nil
|
117
|
-
end
|
118
|
-
|
119
|
-
it "its create permissions should be based on Basic" do
|
120
|
-
expect(@ct.who_can(:create)).to eq(Card["Basic"].who_can(:create))
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
describe Card, "Wannabe Cardtype Card" do
|
125
|
-
before do
|
126
|
-
Card::Auth.as_bot do
|
127
|
-
@card = Card.create! name: "convertible"
|
128
|
-
@card.type_id = Card::CardtypeID
|
129
|
-
@card.save!
|
130
|
-
end
|
131
|
-
end
|
132
|
-
it "changes its type to a Cardtype" do
|
133
|
-
expect(Card["convertible"].type_code).to eq(:cardtype)
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
describe Card, "Joe User" do
|
138
|
-
before do
|
139
|
-
Card::Auth.as_bot do
|
140
|
-
@r3 = Card["r3"]
|
141
|
-
Card.create name: "Cardtype F+*type+*create", type: "Pointer", content: "[[r3]]"
|
142
|
-
end
|
143
|
-
|
144
|
-
@ucard = Card::Auth.current
|
145
|
-
@type_names = Card::Auth.createable_types
|
146
|
-
end
|
147
|
-
|
148
|
-
it "does not have r3 permissions" do
|
149
|
-
expect(@ucard.fetch(new: {}, trait: :roles).item_names.member?(@r3.name)).to be_falsey
|
150
|
-
end
|
151
|
-
it "ponders creating a card of Cardtype F, but find that he lacks create permissions" do
|
152
|
-
expect(Card.new(type: "Cardtype F").ok?(:create)).to be_falsey
|
153
|
-
end
|
154
|
-
it "does not find Cardtype F on its list of createable cardtypes" do
|
155
|
-
expect(@type_names.member?("Cardtype F")).to be_falsey
|
156
|
-
end
|
157
|
-
it "finds Basic on its list of createable cardtypes" do
|
158
|
-
expect(@type_names.member?("Basic")).to be_truthy
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
describe Card, "Cardtype with Existing Cards" do
|
163
|
-
before do
|
164
|
-
@ct = Card["Cardtype F"]
|
165
|
-
end
|
166
|
-
it "has existing cards of that type" do
|
167
|
-
expect(Card.search(type: @ct.name)).not_to be_empty
|
168
|
-
end
|
169
|
-
|
170
|
-
it "raises an error when you try to delete it" do
|
171
|
-
Card::Auth.as_bot do
|
172
|
-
@ct.delete
|
173
|
-
expect(@ct.errors[:cardtype]).not_to be_empty
|
174
|
-
end
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
describe Card::Set::Type::Cardtype do
|
179
|
-
it "handles changing away from Cardtype" do
|
180
|
-
Card::Auth.as_bot do
|
181
|
-
ctg = Card.create! name: "CardtypeG", type: "Cardtype"
|
182
|
-
ctg.type_id = Card::BasicID
|
183
|
-
ctg.save!
|
184
|
-
ctg = Card["CardtypeG"]
|
185
|
-
expect(ctg.type_code).to eq(:basic)
|
186
|
-
# ctg.extension.should == nil
|
187
|
-
end
|
188
|
-
end
|
189
|
-
end
|