card 1.16.1 → 1.16.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardoc/checksums +60 -0
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/.yardopts +6 -0
- data/README_Developers.rdoc +100 -0
- data/VERSION +1 -1
- data/card.gemspec +18 -18
- data/db/migrate/20150724210803_add_comment_to_actions.rb +5 -0
- data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +70 -0
- data/db/migrate_core_cards/20150807205221_create_references_for_search_cards.rb +10 -0
- data/db/migrate_core_cards/data/1.12_stylesheets/common.scss +4 -2
- data/db/schema.rb +2 -1
- data/db/seed/new/card_actions.yml +2334 -12538
- data/db/seed/new/card_acts.yml +1 -1
- data/db/seed/new/card_changes.yml +7384 -38929
- data/db/seed/new/card_references.yml +207 -207
- data/db/seed/new/cards.yml +1364 -1440
- data/db/seed/test/fixtures/card_actions.yml +3285 -13219
- data/db/seed/test/fixtures/card_acts.yml +107 -107
- data/db/seed/test/fixtures/card_changes.yml +10830 -42375
- data/db/seed/test/fixtures/card_references.yml +393 -393
- data/db/seed/test/fixtures/cards.yml +1701 -1777
- data/db/version.txt +1 -1
- data/db/version_core_cards.txt +1 -1
- data/lib/card.rb +13 -3
- data/lib/card/chunk.rb +22 -15
- data/lib/card/content.rb +9 -8
- data/lib/card/diff.rb +79 -79
- data/lib/card/loader.rb +33 -33
- data/lib/card/name.rb +8 -0
- data/lib/card/set.rb +44 -17
- data/lib/card/set_pattern.rb +8 -0
- data/lib/cardio.rb +19 -3
- data/mod/01_core/chunk/link.rb +7 -6
- data/mod/01_core/chunk/query_reference.rb +65 -0
- data/mod/01_core/set/all/content.rb +1 -1
- data/mod/01_core/set/all/fetch.rb +15 -7
- data/mod/01_core/set/all/initialize.rb +4 -3
- data/mod/01_core/set/all/phases.rb +12 -8
- data/mod/01_core/set/all/references.rb +12 -6
- data/mod/01_core/set/all/rules.rb +14 -11
- data/mod/01_core/set/all/states.rb +2 -1
- data/mod/01_core/set/all/tracked_attributes.rb +14 -0
- data/mod/01_core/spec/set/all/collection_spec.rb +5 -5
- data/mod/01_core/spec/set/all/name_spec.rb +6 -6
- data/mod/01_history/lib/card/act.rb +2 -2
- data/mod/01_history/lib/card/action.rb +11 -2
- data/mod/01_history/set/all/actions.rb +4 -3
- data/mod/01_history/set/all/content_history.rb +1 -1
- data/mod/01_history/set/all/history.rb +55 -66
- data/mod/02_basic_types/set/all/file.rb +26 -3
- data/mod/02_basic_types/set/type/pointer.rb +13 -14
- data/mod/02_basic_types/spec/set/all/file_spec.rb +0 -1
- data/mod/03_machines/lib/card/machine.rb +4 -4
- data/mod/03_machines/lib/javascript/wagn_mod.js.coffee +4 -17
- data/mod/03_machines/lib/stylesheets/style_cards.scss +5 -0
- data/mod/03_machines/set/right/machine_input.rb +3 -0
- data/mod/03_machines/set/right/machine_output.rb +4 -0
- data/mod/04_settings/lib/card/setting.rb +2 -1
- data/mod/04_settings/set/abstract/permission.rb +95 -0
- data/mod/04_settings/set/right/comment.rb +2 -90
- data/mod/04_settings/set/right/create.rb +2 -2
- data/mod/04_settings/set/right/delete.rb +2 -3
- data/mod/04_settings/set/right/read.rb +3 -2
- data/mod/04_settings/set/right/update.rb +3 -2
- data/mod/04_settings/set/self/recent_settings.rb +3 -0
- data/mod/04_settings/set/type/setting.rb +9 -1
- data/mod/05_email/set/all/notify.rb +2 -1
- data/mod/05_email/set/type/email_template.rb +17 -17
- data/mod/05_standard/file/credit_image/image-icon.png +0 -0
- data/mod/05_standard/file/credit_image/image-large.png +0 -0
- data/mod/05_standard/file/credit_image/image-medium.png +0 -0
- data/mod/05_standard/file/credit_image/image-original.png +0 -0
- data/mod/05_standard/file/credit_image/image-small.png +0 -0
- data/mod/05_standard/file/favicon/{icon-image.png → image-icon.png} +0 -0
- data/mod/05_standard/file/favicon/{large-image.png → image-large.png} +0 -0
- data/mod/05_standard/file/favicon/{medium-image.png → image-medium.png} +0 -0
- data/mod/05_standard/file/favicon/{original-image.png → image-original.png} +0 -0
- data/mod/05_standard/file/favicon/{small-image.png → image-small.png} +0 -0
- data/mod/05_standard/file/logo/{icon-image.png → image-icon.png} +0 -0
- data/mod/05_standard/file/logo/{large-image.png → image-large.png} +0 -0
- data/mod/05_standard/file/logo/{medium-image.png → image-medium.png} +0 -0
- data/mod/05_standard/file/logo/{original-image.png → image-original.png} +0 -0
- data/mod/05_standard/file/logo/{small-image.png → image-small.png} +0 -0
- data/mod/05_standard/lib/carrier_wave/cardmount.rb +79 -0
- data/mod/05_standard/lib/file_uploader.rb +127 -0
- data/mod/05_standard/lib/image_uploader.rb +35 -0
- data/mod/05_standard/set/abstract/attachment.rb +85 -0
- data/mod/05_standard/set/all/error.rb +1 -18
- data/mod/05_standard/set/all/event_viz.rb +17 -14
- data/mod/05_standard/set/all/rich_html/editing.rb +10 -10
- data/mod/05_standard/set/all/rich_html/toolbar.rb +44 -37
- data/mod/05_standard/set/right/account.rb +1 -1
- data/mod/05_standard/set/right/password.rb +9 -10
- data/mod/05_standard/set/self/recent.rb +1 -1
- data/mod/05_standard/set/type/file.rb +43 -31
- data/mod/05_standard/set/type/image.rb +22 -6
- data/mod/05_standard/set/type/search_type.rb +4 -2
- data/mod/05_standard/set/type/session.rb +7 -5
- data/mod/05_standard/set/type/set.rb +3 -1
- data/mod/05_standard/spec/set/all/history_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/cardtype_spec.rb +3 -3
- data/mod/05_standard/spec/set/type/file_spec.rb +85 -1
- data/mod/05_standard/spec/set/type/image_spec.rb +89 -5
- data/mod/05_standard/spec/set/type/search_type_spec.rb +16 -1
- data/mod/06_bootstrap/file/{cerulean_skin/icon-image.png → cerulean_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{cerulean_skin/large-image.png → cerulean_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{cerulean_skin/medium-image.png → cerulean_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{cerulean_skin/original-image.png → cerulean_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{cerulean_skin/small-image.png → cerulean_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{cosmo_skin/icon-image.png → cosmo_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{cosmo_skin/large-image.png → cosmo_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{cosmo_skin/medium-image.png → cosmo_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{cosmo_skin/original-image.png → cosmo_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{cosmo_skin/small-image.png → cosmo_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{cyborg_skin/icon-image.png → cyborg_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{cyborg_skin/large-image.png → cyborg_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{cyborg_skin/medium-image.png → cyborg_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{cyborg_skin/original-image.png → cyborg_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{cyborg_skin/small-image.png → cyborg_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{darkly_skin/icon-image.png → darkly_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{darkly_skin/large-image.png → darkly_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{darkly_skin/medium-image.png → darkly_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{darkly_skin/original-image.png → darkly_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{darkly_skin/small-image.png → darkly_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{flatly_skin/icon-image.png → flatly_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{flatly_skin/large-image.png → flatly_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{flatly_skin/medium-image.png → flatly_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{flatly_skin/original-image.png → flatly_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{flatly_skin/small-image.png → flatly_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{journal_skin/icon-image.png → journal_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{journal_skin/large-image.png → journal_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{journal_skin/medium-image.png → journal_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{journal_skin/original-image.png → journal_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{journal_skin/small-image.png → journal_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{lumen_skin/icon-image.png → lumen_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{lumen_skin/large-image.png → lumen_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{lumen_skin/medium-image.png → lumen_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{lumen_skin/original-image.png → lumen_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{lumen_skin/small-image.png → lumen_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{paper_skin/icon-image.png → paper_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{paper_skin/large-image.png → paper_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{paper_skin/medium-image.png → paper_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{paper_skin/original-image.png → paper_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{paper_skin/small-image.png → paper_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{readable_skin/icon-image.png → readable_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{readable_skin/large-image.png → readable_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{readable_skin/medium-image.png → readable_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{readable_skin/original-image.png → readable_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{readable_skin/small-image.png → readable_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{sandstone_skin/icon-image.png → sandstone_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{sandstone_skin/large-image.png → sandstone_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{sandstone_skin/medium-image.png → sandstone_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{sandstone_skin/original-image.png → sandstone_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{sandstone_skin/small-image.png → sandstone_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{simplex_skin/icon-image.png → simplex_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{simplex_skin/large-image.png → simplex_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{simplex_skin/medium-image.png → simplex_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{simplex_skin/original-image.png → simplex_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{simplex_skin/small-image.png → simplex_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{slate_skin/icon-image.png → slate_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{slate_skin/large-image.png → slate_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{slate_skin/medium-image.png → slate_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{slate_skin/original-image.png → slate_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{slate_skin/small-image.png → slate_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{spacelab_skin/icon-image.png → spacelab_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{spacelab_skin/large-image.png → spacelab_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{spacelab_skin/medium-image.png → spacelab_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{spacelab_skin/original-image.png → spacelab_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{spacelab_skin/small-image.png → spacelab_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{superhero_skin/icon-image.png → superhero_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{superhero_skin/large-image.png → superhero_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{superhero_skin/medium-image.png → superhero_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{superhero_skin/original-image.png → superhero_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{superhero_skin/small-image.png → superhero_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{united_skin/icon-image.png → united_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{united_skin/large-image.png → united_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{united_skin/medium-image.png → united_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{united_skin/original-image.png → united_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{united_skin/small-image.png → united_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/file/{yeti_skin/icon-image.png → yeti_skin_image/image-icon.png} +0 -0
- data/mod/06_bootstrap/file/{yeti_skin/large-image.png → yeti_skin_image/image-large.png} +0 -0
- data/mod/06_bootstrap/file/{yeti_skin/medium-image.png → yeti_skin_image/image-medium.png} +0 -0
- data/mod/06_bootstrap/file/{yeti_skin/original-image.png → yeti_skin_image/image-original.png} +0 -0
- data/mod/06_bootstrap/file/{yeti_skin/small-image.png → yeti_skin_image/image-small.png} +0 -0
- data/mod/06_bootstrap/lib/stylesheets/bootstrap_cards.scss +5 -3
- data/spec/lib/card/reference_spec.rb +8 -1
- data/tmpsets/README.md +2 -0
- data/tmpsets/set/mod001-01_core/all/active_card.rb +40 -0
- data/tmpsets/set/mod001-01_core/all/collection.rb +348 -0
- data/tmpsets/set/mod001-01_core/all/content.rb +68 -0
- data/tmpsets/set/mod001-01_core/all/erb.rb +17 -0
- data/tmpsets/set/mod001-01_core/all/fetch.rb +242 -0
- data/tmpsets/set/mod001-01_core/all/haml.rb +13 -0
- data/tmpsets/set/mod001-01_core/all/initialize.rb +56 -0
- data/tmpsets/set/mod001-01_core/all/name.rb +279 -0
- data/tmpsets/set/mod001-01_core/all/pattern.rb +62 -0
- data/tmpsets/set/mod001-01_core/all/permissions.rb +289 -0
- data/tmpsets/set/mod001-01_core/all/phases.rb +187 -0
- data/tmpsets/set/mod001-01_core/all/references.rb +130 -0
- data/tmpsets/set/mod001-01_core/all/rules.rb +324 -0
- data/tmpsets/set/mod001-01_core/all/states.rb +28 -0
- data/tmpsets/set/mod001-01_core/all/templating.rb +132 -0
- data/tmpsets/set/mod001-01_core/all/tracked_attributes.rb +136 -0
- data/tmpsets/set/mod001-01_core/all/trash.rb +56 -0
- data/tmpsets/set/mod001-01_core/all/type.rb +91 -0
- data/tmpsets/set/mod001-01_core/all/utils.rb +162 -0
- data/tmpsets/set/mod001-01_core/all/view_cache.rb +14 -0
- data/tmpsets/set/mod002-01_history/all/actions.rb +54 -0
- data/tmpsets/set/mod002-01_history/all/content_history.rb +140 -0
- data/tmpsets/set/mod002-01_history/all/history.rb +341 -0
- data/tmpsets/set/mod003-02_basic_types/all/all_css.rb +48 -0
- data/tmpsets/set/mod003-02_basic_types/all/all_csv.rb +58 -0
- data/tmpsets/set/mod003-02_basic_types/all/all_js.rb +13 -0
- data/tmpsets/set/mod003-02_basic_types/all/base.rb +128 -0
- data/tmpsets/set/mod003-02_basic_types/all/file.rb +42 -0
- data/tmpsets/set/mod003-02_basic_types/all/json.rb +72 -0
- data/tmpsets/set/mod003-02_basic_types/all/rss.rb +78 -0
- data/tmpsets/set/mod003-02_basic_types/all/text.rb +14 -0
- data/tmpsets/set/mod003-02_basic_types/type/html.rb +33 -0
- data/tmpsets/set/mod003-02_basic_types/type/plain_text.rb +16 -0
- data/tmpsets/set/mod003-02_basic_types/type/pointer.rb +358 -0
- data/tmpsets/set/mod004-03_machines/right/machine_input.rb +8 -0
- data/tmpsets/set/mod004-03_machines/right/machine_output.rb +30 -0
- data/tmpsets/set/mod004-03_machines/self/script_ace.rb +18 -0
- data/tmpsets/set/mod004-03_machines/self/script_card_menu.rb +17 -0
- data/tmpsets/set/mod004-03_machines/self/script_html5shiv_printshiv.rb +8 -0
- data/tmpsets/set/mod004-03_machines/self/script_jquery.rb +8 -0
- data/tmpsets/set/mod004-03_machines/self/script_jquery_helper.rb +18 -0
- data/tmpsets/set/mod004-03_machines/self/script_slot.rb +13 -0
- data/tmpsets/set/mod004-03_machines/self/script_tinymce.rb +8 -0
- data/tmpsets/set/mod004-03_machines/self/style_bootstrap_compatible.rb +11 -0
- data/tmpsets/set/mod004-03_machines/self/style_cards.rb +12 -0
- data/tmpsets/set/mod004-03_machines/self/style_jquery_ui_smoothness.rb +9 -0
- data/tmpsets/set/mod004-03_machines/type/coffee_script.rb +67 -0
- data/tmpsets/set/mod004-03_machines/type/css.rb +55 -0
- data/tmpsets/set/mod004-03_machines/type/java_script.rb +43 -0
- data/tmpsets/set/mod004-03_machines/type/scss.rb +28 -0
- data/tmpsets/set/mod004-03_machines/type/skin.rb +18 -0
- data/tmpsets/set/mod005-04_settings/abstract/permission.rb +101 -0
- data/tmpsets/set/mod005-04_settings/right/add_help.rb +17 -0
- data/tmpsets/set/mod005-04_settings/right/comment.rb +9 -0
- data/tmpsets/set/mod005-04_settings/right/create.rb +9 -0
- data/tmpsets/set/mod005-04_settings/right/default.rb +9 -0
- data/tmpsets/set/mod005-04_settings/right/delete.rb +9 -0
- data/tmpsets/set/mod005-04_settings/right/help.rb +9 -0
- data/tmpsets/set/mod005-04_settings/right/read.rb +9 -0
- data/tmpsets/set/mod005-04_settings/right/script.rb +16 -0
- data/tmpsets/set/mod005-04_settings/right/structure.rb +16 -0
- data/tmpsets/set/mod005-04_settings/right/style.rb +16 -0
- data/tmpsets/set/mod005-04_settings/right/update.rb +9 -0
- data/tmpsets/set/mod005-04_settings/self/accountable.rb +9 -0
- data/tmpsets/set/mod005-04_settings/self/add_help.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/autoname.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/captcha.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/create.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/default.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/delete.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/help.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/input.rb +7 -0
- data/tmpsets/set/mod005-04_settings/self/layout.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/on_create.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/on_delete.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/on_update.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/options.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/options_label.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/read.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/recent_settings.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/script.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/structure.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/style.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/table_of_contents.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/thanks.rb +8 -0
- data/tmpsets/set/mod005-04_settings/self/update.rb +8 -0
- data/tmpsets/set/mod005-04_settings/type/setting.rb +96 -0
- data/tmpsets/set/mod006-05_email/all/email_html.rb +11 -0
- data/tmpsets/set/mod006-05_email/all/email_text.rb +11 -0
- data/tmpsets/set/mod006-05_email/all/follow.rb +260 -0
- data/tmpsets/set/mod006-05_email/all/notify.rb +244 -0
- data/tmpsets/set/mod006-05_email/all/observer.rb +33 -0
- data/tmpsets/set/mod006-05_email/right/bcc.rb +51 -0
- data/tmpsets/set/mod006-05_email/right/cc.rb +9 -0
- data/tmpsets/set/mod006-05_email/right/follow.rb +90 -0
- data/tmpsets/set/mod006-05_email/right/follow_fields.rb +8 -0
- data/tmpsets/set/mod006-05_email/right/followers.rb +35 -0
- data/tmpsets/set/mod006-05_email/right/following.rb +58 -0
- data/tmpsets/set/mod006-05_email/right/from.rb +9 -0
- data/tmpsets/set/mod006-05_email/right/html_message.rb +9 -0
- data/tmpsets/set/mod006-05_email/right/to.rb +9 -0
- data/tmpsets/set/mod006-05_email/self/always.rb +20 -0
- data/tmpsets/set/mod006-05_email/self/created.rb +27 -0
- data/tmpsets/set/mod006-05_email/self/edited.rb +30 -0
- data/tmpsets/set/mod006-05_email/self/follow.rb +8 -0
- data/tmpsets/set/mod006-05_email/self/follow_defaults.rb +71 -0
- data/tmpsets/set/mod006-05_email/self/never.rb +21 -0
- data/tmpsets/set/mod006-05_email/type/email_template.rb +119 -0
- data/tmpsets/set/mod006-05_email/type_plus_right/user/follow.rb +182 -0
- data/tmpsets/set/mod007-05_standard/abstract/attachment.rb +91 -0
- data/tmpsets/set/mod007-05_standard/all/account.rb +73 -0
- data/tmpsets/set/mod007-05_standard/all/comment.rb +45 -0
- data/tmpsets/set/mod007-05_standard/all/error.rb +198 -0
- data/tmpsets/set/mod007-05_standard/all/event_viz.rb +75 -0
- data/tmpsets/set/mod007-05_standard/all/links.rb +153 -0
- data/tmpsets/set/mod007-05_standard/all/rich_html/content.rb +248 -0
- data/tmpsets/set/mod007-05_standard/all/rich_html/editing.rb +216 -0
- data/tmpsets/set/mod007-05_standard/all/rich_html/form.rb +238 -0
- data/tmpsets/set/mod007-05_standard/all/rich_html/header.rb +80 -0
- data/tmpsets/set/mod007-05_standard/all/rich_html/menu.rb +135 -0
- data/tmpsets/set/mod007-05_standard/all/rich_html/modal.rb +98 -0
- data/tmpsets/set/mod007-05_standard/all/rich_html/toolbar.rb +271 -0
- data/tmpsets/set/mod007-05_standard/all/rich_html/wrapper.rb +158 -0
- data/tmpsets/set/mod007-05_standard/right/account.rb +187 -0
- data/tmpsets/set/mod007-05_standard/right/discussion.rb +9 -0
- data/tmpsets/set/mod007-05_standard/right/email.rb +57 -0
- data/tmpsets/set/mod007-05_standard/right/password.rb +44 -0
- data/tmpsets/set/mod007-05_standard/right/salt.rb +11 -0
- data/tmpsets/set/mod007-05_standard/right/stats.rb +41 -0
- data/tmpsets/set/mod007-05_standard/right/status.rb +15 -0
- data/tmpsets/set/mod007-05_standard/right/token.rb +11 -0
- data/tmpsets/set/mod007-05_standard/right/when_created.rb +11 -0
- data/tmpsets/set/mod007-05_standard/right/when_last_edited.rb +11 -0
- data/tmpsets/set/mod007-05_standard/rstar/rules.rb +411 -0
- data/tmpsets/set/mod007-05_standard/self/account_links.rb +55 -0
- data/tmpsets/set/mod007-05_standard/self/alerts.rb +11 -0
- data/tmpsets/set/mod007-05_standard/self/all.rb +28 -0
- data/tmpsets/set/mod007-05_standard/self/foot.rb +14 -0
- data/tmpsets/set/mod007-05_standard/self/head.rb +126 -0
- data/tmpsets/set/mod007-05_standard/self/navbox.rb +39 -0
- data/tmpsets/set/mod007-05_standard/self/now.rb +12 -0
- data/tmpsets/set/mod007-05_standard/self/performance_log.rb +98 -0
- data/tmpsets/set/mod007-05_standard/self/recent.rb +54 -0
- data/tmpsets/set/mod007-05_standard/self/search.rb +49 -0
- data/tmpsets/set/mod007-05_standard/self/signin.rb +130 -0
- data/tmpsets/set/mod007-05_standard/self/stats.rb +109 -0
- data/tmpsets/set/mod007-05_standard/self/version.rb +15 -0
- data/tmpsets/set/mod007-05_standard/type/basic.rb +52 -0
- data/tmpsets/set/mod007-05_standard/type/cardtype.rb +78 -0
- data/tmpsets/set/mod007-05_standard/type/date.rb +14 -0
- data/tmpsets/set/mod007-05_standard/type/file.rb +103 -0
- data/tmpsets/set/mod007-05_standard/type/image.rb +89 -0
- data/tmpsets/set/mod007-05_standard/type/layout_type.rb +21 -0
- data/tmpsets/set/mod007-05_standard/type/number.rb +25 -0
- data/tmpsets/set/mod007-05_standard/type/phrase.rb +9 -0
- data/tmpsets/set/mod007-05_standard/type/search_type.rb +291 -0
- data/tmpsets/set/mod007-05_standard/type/session.rb +42 -0
- data/tmpsets/set/mod007-05_standard/type/set.rb +354 -0
- data/tmpsets/set/mod007-05_standard/type/signup.rb +150 -0
- data/tmpsets/set/mod007-05_standard/type/toggle.rb +18 -0
- data/tmpsets/set/mod007-05_standard/type/uri.rb +17 -0
- data/tmpsets/set/mod007-05_standard/type/user.rb +78 -0
- data/tmpsets/set/mod008-06_bootstrap/all/bootstrap/form.rb +41 -0
- data/tmpsets/set/mod008-06_bootstrap/all/bootstrap/helper.rb +150 -0
- data/tmpsets/set/mod008-06_bootstrap/all/bootstrap/wrapper.rb +18 -0
- data/tmpsets/set/mod008-06_bootstrap/all/rich_bootstrap.rb +14 -0
- data/tmpsets/set/mod008-06_bootstrap/self/bootstrap_cards.rb +15 -0
- data/tmpsets/set/mod008-06_bootstrap/self/bootstrap_js.rb +13 -0
- data/tmpsets/set/mod008-06_bootstrap/self/bootswatch_shared.rb +38 -0
- data/tmpsets/set/mod008-06_bootstrap/self/smartmenu_css.rb +13 -0
- data/tmpsets/set/mod008-06_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 +36 -0
- data/tmpsets/set_pattern/107-self.rb +32 -0
- metadata +306 -107
- data/mod/05_standard/set/all/attach.rb +0 -164
- data/mod/05_standard/spec/set/all/attach_spec.rb +0 -9
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class Card; module Set; module All; module Comment; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_standard/set/all/comment.rb ~~~~~~~~~~~
|
3
|
+
event :add_comment, :after=>:approve, :on=>:save, :when=> proc {|c| c.comment } do
|
4
|
+
self.content = %{
|
5
|
+
#{ content }
|
6
|
+
#{ '<hr>' unless content.blank? }
|
7
|
+
#{ comment.split(/\n/).map {|line| "<p>#{line.strip.empty? ? ' ' : line}</p>"} * "\n" }
|
8
|
+
<div class="w-comment-author">--#{
|
9
|
+
if Auth.signed_in?
|
10
|
+
"[[#{Auth.current.name}]]"
|
11
|
+
else
|
12
|
+
Env.session[:comment_author] = comment_author if Env.session
|
13
|
+
"#{ comment_author } (Not signed in)"
|
14
|
+
end
|
15
|
+
}.....#{Time.now}</div>
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
view( :comment_box, :denial=>:blank, :tags=>:unknown_ok, :perms=>lambda { |r| r.card.ok? :comment } ) do |args|
|
20
|
+
|
21
|
+
|
22
|
+
%{<div class="comment-box nodblclick"> #{
|
23
|
+
card_form :update do
|
24
|
+
%{
|
25
|
+
#{ hidden_field_tag( 'card[name]', card.name ) if card.new_card?
|
26
|
+
# FIXME wish we had more generalized solution for names. without this, nonexistent cards will often take left's linkname. (needs test)
|
27
|
+
}
|
28
|
+
#{ text_area :comment, :rows=>3 }
|
29
|
+
<div class="comment-buttons">
|
30
|
+
#{
|
31
|
+
unless Auth.signed_in?
|
32
|
+
card.comment_author= (session[:comment_author] || params[:comment_author] || "Anonymous") #ENGLISH
|
33
|
+
%{<label>My Name is:</label> #{ text_field :comment_author }}
|
34
|
+
end
|
35
|
+
}
|
36
|
+
#{ button_tag 'Comment', :type=>:submit, :disable_with=>"Commenting" }
|
37
|
+
</div>
|
38
|
+
}
|
39
|
+
end}
|
40
|
+
</div>}
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
# ~~~~~~~~~~~ below autogenerated; above pulled from /Users/ethan/dev/wagn/gem/card/mod/05_standard/set/all/comment.rb ~~~~~~~~~~~
|
45
|
+
end;end;end;end;
|
@@ -0,0 +1,198 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class Card; module Set; module All; module Error; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_standard/set/all/error.rb ~~~~~~~~~~~
|
3
|
+
|
4
|
+
|
5
|
+
format do
|
6
|
+
view :closed_missing, :perms=>:none, :closed=>true do |args|
|
7
|
+
''
|
8
|
+
end
|
9
|
+
|
10
|
+
view :missing, :perms=>:none do |args|
|
11
|
+
''
|
12
|
+
end
|
13
|
+
|
14
|
+
view :not_found, :perms=>:none, :error_code=>404 do |args|
|
15
|
+
%{ Could not find #{card.name.present? ? %{"#{card.name}"} : 'the card requested'}. }
|
16
|
+
end
|
17
|
+
|
18
|
+
view :server_error, :perms=>:none, :error_code=>500 do |args|
|
19
|
+
%{ Wagn Hitch! Server Error. Yuck, sorry about that.\n}+
|
20
|
+
%{ To tell us more and follow the fix, add a support ticket at http://wagn.org/new/Support_Ticket }
|
21
|
+
end
|
22
|
+
|
23
|
+
view :denial, :perms=>:none, :error_code=>403 do |args|
|
24
|
+
focal? ? 'Permission Denied' : ''
|
25
|
+
end
|
26
|
+
|
27
|
+
view :bad_address, :perms=>:none, :error_code=>404 do |args|
|
28
|
+
%{ 404: Bad Address }
|
29
|
+
end
|
30
|
+
|
31
|
+
view :too_deep, :perms=>:none, :closed=>true do |args|
|
32
|
+
%{ Man, you're too deep. (Too many levels of inclusions at a time) }
|
33
|
+
end
|
34
|
+
|
35
|
+
view :too_slow, :perms=>:none, :closed=>true do |args|
|
36
|
+
%{ Timed out! #{ showname } took too long to load. }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
format :html do
|
42
|
+
def view_for_unknown view, args
|
43
|
+
case
|
44
|
+
when focal? && ok?( :create ) ; :new
|
45
|
+
when commentable?( view, args ) ; view
|
46
|
+
else super
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def commentable? view, args
|
51
|
+
self.class.tagged view, :comment and
|
52
|
+
show_view? :comment_box, args.merge( :default_visibility=>:hide ) and #developer or wagneer has overridden default
|
53
|
+
ok? :comment
|
54
|
+
end
|
55
|
+
|
56
|
+
def rendering_error exception, view
|
57
|
+
details = if Auth.always_ok?
|
58
|
+
card_link(error_cardname, :class=>'render-error-link') +
|
59
|
+
alert('warning', :dismissible=>true, :alert_class=>"render-error-message errors-view admin-error-message") do
|
60
|
+
%{
|
61
|
+
<h3>Error message (visible to admin only)</h3>
|
62
|
+
<p><strong>#{ exception.message }</strong></p>
|
63
|
+
<div>#{exception.backtrace * "<br>\n"}</div>
|
64
|
+
}
|
65
|
+
end
|
66
|
+
else
|
67
|
+
error_cardname
|
68
|
+
end
|
69
|
+
|
70
|
+
content_tag :span, :class=>'render-error alert alert-danger' do
|
71
|
+
[
|
72
|
+
'error rendering',
|
73
|
+
details,
|
74
|
+
"(#{view} view)"
|
75
|
+
].join "\n"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def unsupported_view view
|
80
|
+
"<strong>view <em>#{view}</em> not supported for <em>#{error_cardname}</em></strong>"
|
81
|
+
end
|
82
|
+
|
83
|
+
view :message, :perms=>:none, :tags=>:unknown_ok do |args|
|
84
|
+
frame args do
|
85
|
+
params[:message]
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
view :missing do |args|
|
91
|
+
return '' unless card.ok? :create # should this be moved into ok_view?
|
92
|
+
|
93
|
+
opts = { :remote=>true, :class=>"slotter missing-#{ args[:denied_view] || args[:home_view]}" }
|
94
|
+
opts[:path_opts] = { :type=> args[:type] } if args[:type]
|
95
|
+
|
96
|
+
wrap args do
|
97
|
+
view_link "Add #{ fancy_title args[:title] }", :new, opts
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
view :closed_missing, :perms=>:none do |args|
|
102
|
+
%{<span class="faint"> #{ showname } </span>}
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
view :conflict, :error_code=>409 do |args|
|
108
|
+
wrap args.merge( :slot_class=>'error-view' ) do #ENGLISH below
|
109
|
+
alert 'warning' do
|
110
|
+
%{<strong>Conflict!</strong><span class="new-current-revision-id">#{card.last_action_id}</span>
|
111
|
+
<div>#{ card_link card.last_action.act.actor.cardname } has also been making changes.</div>
|
112
|
+
<div>Please examine below, resolve above, and re-submit.</div>
|
113
|
+
#{ wrap do |args|
|
114
|
+
_render_act_expanded :act=>card.last_action.act, :current_rev_nr => 0
|
115
|
+
end
|
116
|
+
}
|
117
|
+
}
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
view :errors, :perms=>:none do |args|
|
123
|
+
|
124
|
+
if card.errors.any?
|
125
|
+
title = %{ Problems #{%{ with #{card.name} } unless card.name.blank?} }
|
126
|
+
frame args.merge(:panel_class=>"panel panel-warning", :title=>title, :hide=>'menu' ) do
|
127
|
+
card.errors.map do |attrib, msg|
|
128
|
+
msg = "<strong>#{attrib.to_s.upcase}:</strong> #{msg}" unless attrib == :abort
|
129
|
+
alert 'warning', :dismissible=>true, :alert_class=>'card-error-msg' do
|
130
|
+
msg
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
view :not_found do |args| #ug. bad name.
|
138
|
+
sign_in_or_up_links = if !Auth.signed_in?
|
139
|
+
%{<div>
|
140
|
+
#{ card_link :signin, :text=>'Sign in' } or
|
141
|
+
#{ link_to 'Sign up', card_path('new/:signup') } to create it.
|
142
|
+
</div>}
|
143
|
+
end
|
144
|
+
frame args.merge(:title=>'Not Found', :optional_menu=>:never) do
|
145
|
+
%{
|
146
|
+
<h2>Could not find #{card.name.present? ? "<em>#{card.name}</em>" : 'that'}.</h2>
|
147
|
+
#{sign_in_or_up_links}
|
148
|
+
}
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
view :denial do |args|
|
153
|
+
to_task = if task = args[:denied_task]
|
154
|
+
%{to #{task} this.}
|
155
|
+
else
|
156
|
+
'to do that.'
|
157
|
+
end
|
158
|
+
if !focal?
|
159
|
+
%{<span class="denied"><!-- Sorry, you don't have permission #{to_task} --></span>}
|
160
|
+
else
|
161
|
+
frame args do #ENGLISH below
|
162
|
+
message = case
|
163
|
+
when task != :read && Card.config.read_only
|
164
|
+
"We are currently in read-only mode. Please try again later."
|
165
|
+
when Auth.signed_in?
|
166
|
+
"You need permission #{to_task}"
|
167
|
+
else
|
168
|
+
or_signup = if Card.new(:type_id=>Card::SignupID).ok? :create
|
169
|
+
"or #{ link_to 'sign up', card_url('new/:signup') }"
|
170
|
+
end
|
171
|
+
save_interrupted_action(request.env['REQUEST_URI'])
|
172
|
+
"Please #{ link_to 'sign in', card_url(':signin') } #{or_signup} #{to_task}"
|
173
|
+
end
|
174
|
+
|
175
|
+
%{<h1>Sorry!</h1>\n<div>#{ message }</div>}
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
|
181
|
+
view :server_error do |args|
|
182
|
+
%{
|
183
|
+
<body>
|
184
|
+
<div class="dialog">
|
185
|
+
<h1>Wagn Hitch :(</h1>
|
186
|
+
<p>Server Error. Yuck, sorry about that.</p>
|
187
|
+
<p><a href="http://www.wagn.org/new/Support_Ticket">Add a support ticket</a>
|
188
|
+
to tell us more and follow the fix.</p>
|
189
|
+
</div>
|
190
|
+
</body>
|
191
|
+
}
|
192
|
+
end
|
193
|
+
|
194
|
+
end
|
195
|
+
|
196
|
+
|
197
|
+
# ~~~~~~~~~~~ below autogenerated; above pulled from /Users/ethan/dev/wagn/gem/card/mod/05_standard/set/all/error.rb ~~~~~~~~~~~
|
198
|
+
end;end;end;end;
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class Card; module Set; module All; module EventViz; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_standard/set/all/event_viz.rb ~~~~~~~~~~~
|
3
|
+
# the events method is a developer's tool for visualizing the event order for a given card.
|
4
|
+
# For example, from a console you might run
|
5
|
+
#
|
6
|
+
# puts mycard.events :update
|
7
|
+
#
|
8
|
+
# to see the order of events that will be executed on mycard.
|
9
|
+
# The indention and arrows (^v) indicate event dependencies.
|
10
|
+
#
|
11
|
+
# Note: as of yet, the functionality is a bit rough. It does not display events
|
12
|
+
# that are called directly from within other events (like :stored), and certain event
|
13
|
+
# requirements (like the presence of a "current_act") may prevent events from showing
|
14
|
+
# up in the tree.
|
15
|
+
def events action
|
16
|
+
@action = action
|
17
|
+
events = [ events_tree(:validation), events_tree(:save) ]
|
18
|
+
@action = nil
|
19
|
+
puts_events events
|
20
|
+
end
|
21
|
+
|
22
|
+
#private
|
23
|
+
|
24
|
+
def puts_events events, prefix='', depth=0
|
25
|
+
r = ''
|
26
|
+
depth += 1
|
27
|
+
events.each do |e|
|
28
|
+
space = ' ' * (depth * 2)
|
29
|
+
|
30
|
+
#FIXME - this is not right. before and around callbacks are processed in declaration order regardless of kind.
|
31
|
+
# not all befores then all arounds
|
32
|
+
|
33
|
+
if e[:before]
|
34
|
+
r += puts_events( e[:before], space+'v ', depth)
|
35
|
+
end
|
36
|
+
if e[:around]
|
37
|
+
r += puts_events( e[:around], space+'vv ', depth )
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
output = "#{prefix}#{e[:name]}"
|
42
|
+
#warn output
|
43
|
+
r+= "#{output}\n"
|
44
|
+
|
45
|
+
if e[:after]
|
46
|
+
r += puts_events( e[:after ].reverse, space+'^ ', depth )
|
47
|
+
end
|
48
|
+
end
|
49
|
+
r
|
50
|
+
end
|
51
|
+
|
52
|
+
def events_tree filt
|
53
|
+
hash = {:name => filt }
|
54
|
+
if respond_to? "_#{filt}_callbacks"
|
55
|
+
send( "_#{filt}_callbacks" ).each do |callback|
|
56
|
+
next unless callback.applies? self
|
57
|
+
hash[callback.kind] ||= []
|
58
|
+
hash[callback.kind] << events_tree( callback.filter )
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
hash
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
class ::ActiveSupport::Callbacks::Callback
|
67
|
+
def applies? object
|
68
|
+
conditions_lambdas.all? { |c| c.call(object, nil) }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
# ~~~~~~~~~~~ below autogenerated; above pulled from /Users/ethan/dev/wagn/gem/card/mod/05_standard/set/all/event_viz.rb ~~~~~~~~~~~
|
75
|
+
end;end;end;end;
|
@@ -0,0 +1,153 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class Card; module Set; module All; module Links; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_standard/set/all/links.rb ~~~~~~~~~~~
|
3
|
+
|
4
|
+
|
5
|
+
format do
|
6
|
+
|
7
|
+
# link is called by web_link, card_link, and view_link
|
8
|
+
# (and is overridden in other formats)
|
9
|
+
def link_to text, href, opts={}
|
10
|
+
href = interpret_href href
|
11
|
+
|
12
|
+
if text and href != text
|
13
|
+
"#{text}[#{href}]"
|
14
|
+
else
|
15
|
+
href
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# link to url, view, card or related card
|
20
|
+
#
|
21
|
+
def smart_link link_text, target, html_args={}
|
22
|
+
if (view = target.delete(:view))
|
23
|
+
view_link link_text, view, html_args.merge(:path_opts=>target)
|
24
|
+
elsif (page = target.delete(:card))
|
25
|
+
card_link page, html_args.merge(:path_opts=>target, :text=>link_text)
|
26
|
+
elsif target[:related]
|
27
|
+
if target[:related].kind_of? String
|
28
|
+
target[:related] = {:name=>"+#{target[:related]}"}
|
29
|
+
end
|
30
|
+
view_link link_text, :related, html_args.merge(:path_opts=>target)
|
31
|
+
elsif target[:web]
|
32
|
+
else
|
33
|
+
link_to link_text, target, html_args
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
# link to a specific url or path
|
39
|
+
def web_link href, opts={}
|
40
|
+
text = opts.delete(:text) || href
|
41
|
+
new_class = case href
|
42
|
+
when /^https?:/ ; 'external-link'
|
43
|
+
when /^mailto:/ ; 'email-link'
|
44
|
+
when /^([a-zA-Z][\-+\.a-zA-Z\d]*):/ ; $1 + '-link'
|
45
|
+
when /^\//
|
46
|
+
href = internal_url href[1..-1] ; 'internal-link'
|
47
|
+
else
|
48
|
+
return card_link href, opts
|
49
|
+
end
|
50
|
+
add_class opts, new_class
|
51
|
+
link_to text, href, opts
|
52
|
+
end
|
53
|
+
|
54
|
+
# link to a specific card
|
55
|
+
def card_link name_or_card, opts={}
|
56
|
+
name = case name_or_card
|
57
|
+
when Symbol then Card.fetch( name_or_card, :skip_modules=>true ).cardname
|
58
|
+
when Card then name_or_card.cardname
|
59
|
+
else name_or_card
|
60
|
+
end
|
61
|
+
text = (opts.delete(:text) || name).to_name.to_show @context_names
|
62
|
+
|
63
|
+
path_opts = opts.delete( :path_opts ) || {}
|
64
|
+
path_opts[:name ] = name
|
65
|
+
path_opts[:known] = opts[:known].nil? ? Card.known?(name) : opts.delete(:known)
|
66
|
+
add_class opts, ( path_opts[:known] ? 'known-card' : 'wanted-card' )
|
67
|
+
link_to text, path_opts, opts
|
68
|
+
end
|
69
|
+
|
70
|
+
# link to a specific view (defaults to current card)
|
71
|
+
# this is generally used for ajax calls
|
72
|
+
def view_link text, view, opts={}
|
73
|
+
path_opts = opts.delete( :path_opts ) || {}
|
74
|
+
path_opts[:view] = view unless view == :home
|
75
|
+
opts[:remote] = true
|
76
|
+
opts[:rel] = 'nofollow'
|
77
|
+
|
78
|
+
link_to text, path_opts, opts
|
79
|
+
end
|
80
|
+
|
81
|
+
def related_link name_or_card, opts={}
|
82
|
+
name = case name_or_card
|
83
|
+
when Symbol then Card.fetch( name_or_card, :skip_modules=>true ).cardname
|
84
|
+
when Card then name_or_card.cardname
|
85
|
+
else name_or_card
|
86
|
+
end
|
87
|
+
opts[:path_opts] ||= {:view=>:related}
|
88
|
+
opts[:path_opts][:related] = {:name=>"+#{name}"}
|
89
|
+
opts[:path_opts][:related].merge! opts[:related_opts] if opts[:related_opts]
|
90
|
+
view_link( opts[:text] || name, :related, opts)
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
def path opts={}
|
96
|
+
if opts[:action] == :new && opts[:type] && !(opts[:name] || opts[:card] || opts[:id])
|
97
|
+
opts.delete(:action)
|
98
|
+
base = "new/#{opts.delete(:type)}"
|
99
|
+
else
|
100
|
+
name = opts.delete(:name) || card.name
|
101
|
+
base = opts[:action] ? "card/#{ opts.delete :action }/" : ''
|
102
|
+
|
103
|
+
opts[:no_id] = true if [:new, :create].member? opts[:action]
|
104
|
+
#generalize. dislike hardcoding views/actions here
|
105
|
+
|
106
|
+
linkname = name.to_name.url_key
|
107
|
+
unless name.empty? || opts.delete(:no_id)
|
108
|
+
base += ( opts[:id] ? "~#{ opts.delete :id }" : linkname )
|
109
|
+
end
|
110
|
+
|
111
|
+
opts[:card] ||= {}
|
112
|
+
opts[:card][:name] = name if opts.delete(:known)==false && name.present? && name.to_s != linkname
|
113
|
+
|
114
|
+
if type = opts.delete(:type) and Card.known?( type )
|
115
|
+
opts[:card][:type] = type
|
116
|
+
end
|
117
|
+
opts.delete(:card) if opts[:card].empty?
|
118
|
+
end
|
119
|
+
|
120
|
+
query = opts.empty? ? '' : "?#{opts.to_param}"
|
121
|
+
internal_url( base + query )
|
122
|
+
end
|
123
|
+
|
124
|
+
def internal_url relative_path
|
125
|
+
card_path relative_path
|
126
|
+
end
|
127
|
+
|
128
|
+
def interpret_href href
|
129
|
+
Hash===href ? path(href) : href
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
format :html do
|
135
|
+
|
136
|
+
|
137
|
+
def link_to text, href, opts={}
|
138
|
+
href = interpret_href href
|
139
|
+
|
140
|
+
[:remote, :method].each do |key|
|
141
|
+
if val = opts.delete(key)
|
142
|
+
opts["data-#{key}"] = val
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
content_tag :a, raw(text), opts.merge(:href=>href)
|
147
|
+
end
|
148
|
+
|
149
|
+
end
|
150
|
+
|
151
|
+
|
152
|
+
# ~~~~~~~~~~~ below autogenerated; above pulled from /Users/ethan/dev/wagn/gem/card/mod/05_standard/set/all/links.rb ~~~~~~~~~~~
|
153
|
+
end;end;end;end;
|