card 1.19.6 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/card.gemspec +8 -7
- data/config/initializers/01_core_extensions/array.rb +4 -0
- data/config/initializers/01_core_extensions/persistent_identifiers.rb +12 -0
- data/config/initializers/02_patches/better_errors.rb +56 -0
- data/config/initializers/core_extensions.rb +13 -18
- data/config/initializers/patches.rb +8 -0
- data/config/locales/de.yml +0 -2
- data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +22 -12
- data/db/migrate_core_cards/20161102202156_tweak_recaptcha_setting_cards.rb +17 -0
- data/db/migrate_core_cards/20161103154836_update_keys.rb +46 -0
- data/lib/card.rb +1 -8
- data/lib/card/act_manager.rb +4 -0
- data/lib/card/auth/permissions.rb +5 -3
- data/lib/card/cache.rb +1 -20
- data/lib/card/cache/persistent.rb +6 -0
- data/lib/card/content/chunk.rb +4 -3
- data/lib/card/content/diff.rb +2 -2
- data/lib/card/content/diff/result.rb +11 -0
- data/lib/card/env/success.rb +4 -0
- data/lib/card/error.rb +2 -0
- data/lib/card/format.rb +14 -17
- data/lib/card/format/content.rb +16 -8
- data/lib/card/format/error.rb +3 -5
- data/lib/card/format/names.rb +22 -16
- data/lib/card/format/nest.rb +67 -61
- data/lib/card/format/nest/fetch.rb +40 -33
- data/lib/card/format/nest/main.rb +39 -19
- data/lib/card/format/nest/subformat.rb +3 -16
- data/lib/card/format/nest/view.rb +23 -32
- data/lib/card/format/permission.rb +49 -34
- data/lib/card/format/registration.rb +12 -6
- data/lib/card/format/render.rb +62 -73
- data/lib/card/migration.rb +14 -10
- data/lib/card/migration/import.rb +20 -19
- data/lib/card/migration/import/import_data.rb +50 -59
- data/lib/card/migration/import/import_data/card_attributes.rb +56 -0
- data/lib/card/migration/import/import_data/card_content.rb +33 -0
- data/lib/card/migration/import/merger.rb +47 -0
- data/lib/card/mod/loader.rb +4 -4
- data/lib/card/model/save_helper.rb +49 -10
- data/lib/card/name.rb +16 -52
- data/lib/card/name/fields_and_traits.rb +67 -0
- data/lib/card/name/variants.rb +17 -0
- data/lib/card/query.rb +6 -2
- data/lib/card/query/attributes.rb +1 -1
- data/lib/card/query/interpretation.rb +3 -3
- data/lib/card/set/event.rb +2 -1
- data/lib/card/set/format.rb +18 -7
- data/lib/card/set_pattern.rb +17 -13
- data/lib/card/tasks/card.rake +1 -1
- data/lib/card/view.rb +55 -0
- data/lib/card/view/cache.rb +90 -0
- data/lib/card/view/fetch.rb +109 -0
- data/lib/card/view/options.rb +164 -0
- data/lib/card/view/stub.rb +30 -0
- data/lib/card/view/visibility.rb +95 -0
- data/lib/cardio.rb +3 -2
- data/lib/cardio/schema.rb +21 -8
- data/lib/generators/card.rb +16 -2
- data/lib/generators/card/format/format_generator.rb +10 -9
- data/lib/generators/card/migration/migration_generator.rb +10 -5
- data/lib/generators/card/set/USAGE +1 -1
- data/lib/generators/card/set/set_generator.rb +11 -9
- data/mod/account/set/right/account.rb +38 -40
- data/mod/account/set/right/token.rb +2 -1
- data/mod/account/set/self/account_links.rb +34 -54
- data/mod/account/set/self/signin.rb +107 -93
- data/mod/account/set/type/signup.rb +33 -32
- data/mod/account/set/type/user.rb +28 -21
- data/mod/account/spec/set/all/account_spec.rb +9 -9
- data/mod/account/spec/set/right/account_spec.rb +23 -14
- data/mod/account/spec/set/right/email_spec.rb +6 -6
- data/mod/account/spec/set/right/password_spec.rb +4 -4
- data/mod/account/spec/set/right/token_spec.rb +3 -3
- data/mod/account/spec/set/self/account_links_spec.rb +3 -3
- data/mod/account/spec/set/self/signin_spec.rb +2 -2
- data/mod/account/spec/set/type/signup_spec.rb +7 -8
- data/mod/ace_editor/set/abstract/ace_editor.rb +1 -4
- data/mod/admin/set/self/admin.rb +2 -2
- data/mod/admin/set/self/admin_info.rb +1 -1
- data/mod/admin/set/self/recaptcha_private_key.rb +3 -0
- data/mod/admin/set/self/recaptcha_proxy.rb +3 -0
- data/mod/admin/set/self/recaptcha_public_key.rb +3 -0
- data/mod/admin/set/self/trash.rb +4 -4
- data/mod/admin/spec/set/self/admin_spec.rb +4 -4
- data/mod/admin/spec/set/self/version_spec.rb +1 -1
- data/mod/basic_formats/set/all/all_css.rb +3 -3
- data/mod/basic_formats/set/all/all_csv.rb +6 -6
- data/mod/basic_formats/set/all/all_js.rb +4 -0
- data/mod/basic_formats/set/all/base.rb +40 -62
- data/mod/basic_formats/set/all/json.rb +34 -39
- data/mod/basic_formats/set/all/rss.rb +6 -6
- data/mod/basic_formats/set/all/text.rb +3 -2
- data/mod/basic_formats/set/self/01_head/javascript.rb +2 -2
- data/mod/basic_formats/set/self/head.rb +6 -10
- data/mod/basic_formats/spec/set/all/all_css_spec.rb +1 -1
- data/mod/basic_formats/spec/set/all/all_csv_spec.rb +1 -1
- data/mod/basic_formats/spec/set/all/base_spec.rb +8 -5
- data/mod/basic_formats/spec/set/all/json_spec.rb +2 -2
- data/mod/basic_formats/spec/set/all/rss_spec.rb +4 -4
- data/mod/basic_types/set/type/plain_text.rb +3 -5
- data/mod/basic_types/spec/set/type/plain_text_spec.rb +2 -2
- data/mod/bootstrap/lib/bootstrap.rb +16 -0
- data/mod/bootstrap/lib/bootstrap/basic_tags.rb +26 -0
- data/mod/bootstrap/lib/bootstrap/component.rb +133 -0
- data/mod/bootstrap/lib/bootstrap/component/form.rb +31 -0
- data/mod/bootstrap/lib/bootstrap/component/horizontal_form.rb +38 -0
- data/mod/bootstrap/lib/bootstrap/component/layout.rb +83 -0
- data/mod/bootstrap/lib/bootstrap/component/panel.rb +9 -0
- data/mod/bootstrap/lib/bootstrap/component_loader.rb +30 -0
- data/mod/bootstrap/lib/bootstrap/delegate.rb +16 -0
- data/mod/bootstrap/lib/bootstrapper.rb +16 -0
- data/mod/bootstrap/lib/stylesheets/bootstrap/_tables.scss +55 -52
- data/mod/bootstrap/lib/stylesheets/bootstrap/mixins/_table-row.scss +12 -12
- data/mod/bootstrap/lib/stylesheets/bootstrap_cards.scss +12 -0
- data/mod/bootstrap/set/all/bootstrap/accordion.rb +63 -0
- data/mod/bootstrap/set/all/bootstrap/helper.rb +7 -140
- data/mod/bootstrap/set/all/bootstrap/navbar.rb +74 -0
- data/mod/bootstrap/set/all/bootstrap/table.rb +76 -46
- data/mod/bootstrap/set/all/bootstrap/tabs.rb +58 -23
- data/mod/bootstrap/set/all/bootstrap/wrapper.rb +14 -8
- data/mod/bootstrap/set/all/rich_bootstrap.rb +5 -3
- data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_builder_spec.rb +31 -0
- data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_spec.rb +20 -0
- data/mod/bootstrap/spec/set/all/bootstrap/form_spec.rb +59 -1
- data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +104 -15
- data/mod/carrierwave/set/abstract/attachment.rb +4 -3
- data/mod/carrierwave/set/abstract/attachment/paths.rb +1 -1
- data/mod/carrierwave/set/abstract/attachment/storage_type.rb +5 -11
- data/mod/carrierwave/set/type/file.rb +39 -32
- data/mod/carrierwave/set/type/image.rb +59 -34
- data/mod/carrierwave/spec/set/type/image_spec.rb +3 -3
- data/mod/core/chunk/link.rb +5 -0
- data/mod/core/chunk/{include.rb → nest.rb} +8 -29
- data/mod/core/chunk/reference.rb +5 -6
- data/mod/core/chunk/view_stub.rb +42 -0
- data/mod/core/format/html_format.rb +23 -26
- data/mod/core/set/abstract/code_file.rb +1 -1
- data/mod/core/set/all/actify.rb +1 -1
- data/mod/core/set/all/active_card.rb +0 -1
- data/mod/core/set/all/{tracked_attributes.rb → assign_attributes.rb} +55 -24
- data/mod/core/set/all/collection.rb +136 -122
- data/mod/core/set/all/content.rb +8 -0
- data/mod/core/set/all/event.rb +5 -2
- data/mod/core/set/all/export.rb +7 -7
- data/mod/core/set/all/fetch.rb +90 -26
- data/mod/core/set/all/initialize.rb +17 -6
- data/mod/core/set/all/name.rb +2 -3
- data/mod/core/set/all/permissions.rb +19 -11
- data/mod/core/set/all/states.rb +12 -2
- data/mod/core/set/all/trash.rb +1 -1
- data/mod/core/set/all/type.rb +2 -0
- data/mod/core/set/all/utils.rb +4 -3
- data/mod/core/spec/chunk/literal_spec.rb +2 -2
- data/mod/core/spec/chunk/uri_spec.rb +17 -17
- data/mod/core/spec/format/html_format_spec.rb +11 -13
- data/mod/core/spec/set/all/attribute_tracking_spec.rb +2 -2
- data/mod/core/spec/set/all/collection_spec.rb +21 -24
- data/mod/core/spec/set/all/content_spec.rb +1 -1
- data/mod/core/spec/set/all/export_spec.rb +3 -3
- data/mod/core/spec/set/all/fetch_spec.rb +5 -5
- data/mod/core/spec/set/all/initialize_spec.rb +4 -4
- data/mod/core/spec/set/all/name_spec.rb +6 -6
- data/mod/core/spec/set/all/permissions_spec.rb +10 -10
- data/mod/core/spec/set/all/references_spec.rb +1 -1
- data/mod/core/spec/set/all/rules2_spec.rb +24 -24
- data/mod/core/spec/set/all/rules_spec.rb +1 -1
- data/mod/core/spec/set/all/templating_spec.rb +8 -8
- data/mod/core/spec/set/all/tracked_attributes_spec.rb +6 -6
- data/mod/core/spec/set/all/type_spec.rb +5 -5
- data/mod/developer/spec/set/all/event_viz_spec.rb +1 -1
- data/mod/developer/spec/set/right/debug_spec.rb +1 -1
- data/mod/email/set/all/email_html.rb +2 -2
- data/mod/email/set/all/notify.rb +8 -3
- data/mod/email/set/right/bcc.rb +3 -3
- data/mod/email/set/right/follow.rb +5 -5
- data/mod/email/set/right/following.rb +1 -1
- data/mod/email/set/self/follow_defaults.rb +27 -16
- data/mod/email/set/type/email_template.rb +1 -1
- data/mod/email/set/type_plus_right/user/follow.rb +10 -9
- data/mod/history/lib/card/act.rb +4 -0
- data/mod/history/lib/card/act/act_renderer.rb +194 -0
- data/mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb +25 -0
- data/mod/history/lib/card/act/act_renderer/relative_act_renderer.rb +41 -0
- data/mod/history/lib/card/action.rb +1 -0
- data/mod/history/lib/card/action/action_renderer.rb +92 -0
- data/mod/history/lib/card/action/differ.rb +6 -1
- data/mod/history/set/all/act_view.rb +64 -0
- data/mod/history/set/all/action_view.rb +65 -0
- data/mod/history/set/all/content_history.rb +44 -37
- data/mod/history/set/all/history.rb +49 -263
- data/mod/machines/lib/stylesheets/style_cards.scss +30 -115
- data/mod/machines/set/abstract/script.rb +42 -7
- data/mod/machines/set/right/machine_input.rb +4 -0
- data/mod/machines/set/type/coffee_script.rb +8 -22
- data/mod/machines/set/type/css.rb +2 -2
- data/mod/machines/set/type/java_script.rb +4 -24
- data/mod/machines/set/type/scss.rb +1 -1
- data/mod/machines/spec/set/type/css_spec.rb +1 -1
- data/mod/machines/spec/set/type/scss_spec.rb +3 -3
- data/mod/machines/spec/set/type/skin_spec.rb +7 -7
- data/mod/pointer/set/abstract/01_pointer.rb +44 -46
- data/mod/pointer/set/abstract/01_pointer/edit.rb +13 -13
- data/mod/pointer/set/right/options.rb +4 -0
- data/mod/pointer/spec/set/type/pointer_spec.rb +7 -7
- data/mod/prosemirror_editor/set/abstract/prosemirror_editor.rb +3 -3
- data/mod/settings/set/abstract/permission.rb +25 -18
- data/mod/settings/set/right/add_help.rb +3 -3
- data/mod/settings/set/right/structure.rb +10 -16
- data/mod/settings/spec/set/right/comment_spec.rb +3 -3
- data/mod/settings/spec/set/right/create_spec.rb +1 -1
- data/mod/settings/spec/set/right/style_spec.rb +1 -1
- data/mod/settings/spec/set/type/setting_spec.rb +1 -1
- data/mod/solid_cache/set/abstract/solid_cache.rb +4 -4
- data/mod/solid_cache/set/right/solid_cache.rb +9 -10
- data/mod/standard/set/abstract/01_search_params.rb +41 -0
- data/mod/standard/set/abstract/search.rb +132 -0
- data/mod/standard/set/abstract/search/paging.rb +81 -0
- data/mod/standard/set/abstract/search/paging/paging_links.rb +90 -0
- data/mod/standard/set/abstract/wql_search.rb +67 -0
- data/mod/standard/set/all/error.rb +89 -82
- data/mod/standard/set/all/links.rb +1 -1
- data/mod/standard/set/all/rich_html/content.rb +125 -141
- data/mod/standard/set/all/rich_html/editing.rb +115 -178
- data/mod/standard/set/all/rich_html/form.rb +111 -131
- data/mod/standard/set/all/rich_html/header.rb +57 -39
- data/mod/standard/set/all/rich_html/menu.rb +94 -94
- data/mod/standard/set/all/rich_html/modal.rb +5 -10
- data/mod/standard/set/all/rich_html/new.rb +103 -0
- data/mod/standard/set/all/rich_html/toolbar.rb +54 -74
- data/mod/standard/set/all/rich_html/wrapper.rb +111 -138
- data/mod/standard/set/rstar/rules.rb +27 -38
- data/mod/standard/set/rstar/rules_editor.rb +298 -277
- data/mod/standard/set/self/navbox.rb +20 -15
- data/mod/standard/set/self/recent.rb +25 -17
- data/mod/standard/set/self/search.rb +25 -4
- data/mod/standard/set/type/cardtype.rb +11 -9
- data/mod/standard/set/type/date.rb +1 -1
- data/mod/standard/set/type/number.rb +1 -1
- data/mod/standard/set/type/phrase.rb +1 -1
- data/mod/standard/set/type/search_type.rb +17 -282
- data/mod/standard/set/type/session.rb +1 -1
- data/mod/standard/set/type/set.rb +155 -131
- data/mod/standard/set/type/toggle.rb +1 -1
- data/mod/standard/set/type/uri.rb +4 -4
- data/mod/standard/spec/chunk/include_spec.rb +13 -31
- data/mod/standard/spec/chunk/link_spec.rb +1 -1
- data/mod/standard/spec/set/all/error_spec.rb +1 -1
- data/mod/standard/spec/set/all/history_spec.rb +2 -2
- data/mod/standard/spec/set/all/rich_html/form_spec.rb +4 -4
- data/mod/standard/spec/set/all/rich_html/toolbar_spec.rb +22 -0
- data/mod/standard/spec/set/all/rich_html/wrapper_spec.rb +3 -2
- data/mod/standard/spec/set/right/when_created_spec.rb +1 -1
- data/mod/standard/spec/set/right/when_last_edited_spec.rb +1 -1
- data/mod/standard/spec/set/rstar/rules_spec.rb +2 -3
- data/mod/standard/spec/set/self/head_spec.rb +2 -2
- data/mod/standard/spec/set/self/navbox_spec.rb +1 -1
- data/mod/standard/spec/set/self/now_spec.rb +1 -1
- data/mod/standard/spec/set/type/date_spec.rb +1 -1
- data/mod/standard/spec/set/type/email_template_spec.rb +1 -1
- data/mod/standard/spec/set/type/layout_type_spec.rb +1 -1
- data/mod/standard/spec/set/type/number_spec.rb +1 -1
- data/mod/standard/spec/set/type/phrase_spec.rb +1 -1
- data/mod/standard/spec/set/type/search_type_spec.rb +2 -2
- data/mod/standard/spec/set/type/set_spec.rb +2 -2
- data/mod/standard/spec/set/type/toggle_spec.rb +2 -2
- data/mod/standard/spec/set/type/uri_spec.rb +3 -1
- data/mod/tinymce_editor/set/abstract/tinymce_editor.rb +1 -1
- data/spec/config/initializers/core_extensions_spec.rb +40 -10
- data/spec/lib/card/auth_spec.rb +8 -8
- data/spec/lib/card/cache_spec.rb +3 -3
- data/spec/lib/card/chunk_spec.rb +4 -4
- data/spec/lib/card/codename_spec.rb +2 -2
- data/spec/lib/card/content_spec.rb +23 -23
- data/spec/lib/card/diff_spec.rb +1 -1
- data/spec/lib/card/format_spec.rb +19 -24
- data/spec/lib/card/loader_spec.rb +4 -4
- data/spec/lib/card/name_spec.rb +16 -16
- data/spec/lib/card/query_spec.rb +80 -80
- data/spec/lib/card/reference_spec.rb +5 -5
- data/spec/lib/card/set_spec.rb +6 -6
- data/spec/lib/card/subcards_spec.rb +14 -0
- data/spec/lib/card/view_cache_spec.rb +5 -5
- data/spec/models/card/cardtype_spec.rb +15 -15
- data/spec/models/card/create_spec.rb +2 -2
- data/spec/models/card/trash_spec.rb +24 -24
- data/spec/models/card/type_transition_spec.rb +8 -8
- data/spec/models/card/validation_spec.rb +5 -5
- data/spec/models/card_spec.rb +14 -14
- data/spec/spec_helper.rb +6 -2
- data/spec/support/card_spec_helper.rb +21 -11
- data/spec/support/helper/card_helper.rb +11 -4
- metadata +73 -15
- data/lib/card/cache/view_cache.rb +0 -103
- data/mod/bootstrap/set/all/bootstrap/layout.rb +0 -58
- data/mod/core/set/all/view_cache.rb +0 -9
@@ -1,41 +1,41 @@
|
|
1
1
|
include_set Abstract::ProsemirrorEditor
|
2
2
|
|
3
3
|
format :html do
|
4
|
-
def edit_slot
|
5
|
-
|
6
|
-
if args[:structure] || card.structure ||
|
7
|
-
args[:edit_fields]
|
8
|
-
multi_card_edit_slot args
|
9
|
-
else
|
10
|
-
single_card_edit_slot args
|
11
|
-
end
|
4
|
+
def edit_slot
|
5
|
+
multi_edit? ? multi_card_edit_slot : single_card_edit_slot
|
12
6
|
end
|
13
7
|
|
14
|
-
def
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
8
|
+
def multi_edit?
|
9
|
+
inline_nests_editor? || nests_editor? || # editor configured in voo
|
10
|
+
voo.structure || voo.edit_structure || # structure configured in voo
|
11
|
+
card.structure # structure in card rule
|
12
|
+
end
|
13
|
+
|
14
|
+
def multi_card_edit_slot
|
15
|
+
inline_nests_editor? ? _render_core : process_nested_fields
|
16
|
+
end
|
17
|
+
|
18
|
+
def inline_nests_editor?
|
19
|
+
voo.editor == :inline_nests
|
20
|
+
end
|
21
|
+
|
22
|
+
def nests_editor?
|
23
|
+
voo.editor == :nests
|
23
24
|
end
|
24
25
|
|
25
|
-
def single_card_edit_slot
|
26
|
-
|
27
|
-
if [args[:optional_type_formgroup], args[:optional_name_formgroup]]
|
28
|
-
.member? :show
|
26
|
+
def single_card_edit_slot
|
27
|
+
if voo.show?(:type_formgroup) || voo.show?(:name_formgroup)
|
29
28
|
# display content field in formgroup for consistency with other fields
|
30
|
-
formgroup
|
29
|
+
formgroup("", editor: :content) { content_field }
|
31
30
|
else
|
32
|
-
editor_wrap(:content) {
|
31
|
+
editor_wrap(:content) { content_field }
|
33
32
|
end
|
34
33
|
end
|
35
34
|
|
36
|
-
def process_nested_fields
|
37
|
-
|
38
|
-
|
35
|
+
def process_nested_fields
|
36
|
+
nested_fields_for_edit.map do |name, options|
|
37
|
+
options[:hide] = :toolbar
|
38
|
+
nest name, options
|
39
39
|
end.join "\n"
|
40
40
|
end
|
41
41
|
|
@@ -63,71 +63,64 @@ format :html do
|
|
63
63
|
|
64
64
|
def card_form action, opts={}
|
65
65
|
@form_root = true
|
66
|
-
|
67
|
-
|
66
|
+
url, action = card_form_url action
|
67
|
+
html_opts = card_form_html_opts action, opts
|
68
|
+
form_for card, url: url, html: html_opts, remote: true do |form|
|
68
69
|
@form = form
|
69
|
-
|
70
|
-
#{hidden_tags hidden_args if hidden_args}
|
71
|
-
#{yield form}
|
72
|
-
)
|
70
|
+
output yield(form)
|
73
71
|
end
|
74
72
|
end
|
75
73
|
|
76
74
|
def form_root_format
|
77
|
-
if @form_root
|
78
|
-
|
79
|
-
|
80
|
-
nil
|
81
|
-
else
|
82
|
-
@parent.form_root_format
|
75
|
+
if @form_root then self
|
76
|
+
elsif !@parent then nil
|
77
|
+
else @parent.form_root_format
|
83
78
|
end
|
84
79
|
end
|
85
80
|
|
86
|
-
def
|
87
|
-
|
88
|
-
|
89
|
-
klasses = Array.wrap(html[:class])
|
90
|
-
klasses << "card-form slotter"
|
81
|
+
def card_form_html_opts action, opts={}
|
82
|
+
klasses = Array.wrap(opts[:class]) << "card-form slotter"
|
91
83
|
klasses << "autosave" if action == :update
|
92
|
-
|
84
|
+
opts[:class] = klasses.join " "
|
93
85
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
{ url: url, remote: true, html: html }
|
86
|
+
opts[:recaptcha] ||= "on" if card.recaptcha_on?
|
87
|
+
opts.delete :recaptcha if opts[:recaptcha] == :off
|
88
|
+
opts
|
98
89
|
end
|
99
90
|
|
100
|
-
def
|
91
|
+
def card_form_url action
|
101
92
|
case action
|
102
|
-
when Symbol
|
103
|
-
|
104
|
-
|
105
|
-
[path(action), action[:action]]
|
106
|
-
when String # deprecated
|
107
|
-
[card_path(action), nil]
|
93
|
+
when Symbol then [path(action: action), action]
|
94
|
+
when Hash then [path(action), action[:action]]
|
95
|
+
# for when non-action path args are required
|
108
96
|
else
|
109
|
-
raise Card::Error, "unsupported
|
97
|
+
raise Card::Error, "unsupported #card_form_url action: #{action}"
|
110
98
|
end
|
111
99
|
end
|
112
100
|
|
113
101
|
def editor_wrap type=nil
|
114
102
|
html_class = "editor"
|
115
103
|
html_class << " #{type}-editor" if type
|
116
|
-
|
104
|
+
wrap_with :div, class: html_class do
|
105
|
+
yield
|
106
|
+
end
|
117
107
|
end
|
118
108
|
|
119
|
-
def formgroup title,
|
109
|
+
def formgroup title, opts={}, &block
|
110
|
+
label = formgroup_label opts[:editor], title
|
111
|
+
editor_body = editor_wrap opts[:editor], &block
|
112
|
+
help_text = formgroup_help_text opts[:help]
|
120
113
|
wrap_with :div, formgroup_div_args(opts[:class]) do
|
121
|
-
|
122
|
-
#{form.label(opts[:editor] || :content, title)}
|
123
|
-
<div>
|
124
|
-
#{editor_wrap(opts[:editor]) { content }}
|
125
|
-
#{formgroup_help_text opts[:help]}
|
126
|
-
</div>
|
127
|
-
)
|
114
|
+
"#{label}<div>#{editor_body} #{help_text}</div>"
|
128
115
|
end
|
129
116
|
end
|
130
117
|
|
118
|
+
def formgroup_label editor_type, title
|
119
|
+
return if voo && voo.hide?(:title)
|
120
|
+
label_type = editor_type || :content
|
121
|
+
form.label label_type, title
|
122
|
+
end
|
123
|
+
|
131
124
|
def formgroup_div_args html_class
|
132
125
|
div_args = { class: ["form-group", html_class].compact.join(" ") }
|
133
126
|
div_args[:card_id] = card.id if card.real?
|
@@ -136,10 +129,9 @@ format :html do
|
|
136
129
|
end
|
137
130
|
|
138
131
|
def formgroup_help_text text=nil
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
end
|
132
|
+
class_up "help-text", "help-block"
|
133
|
+
voo.help = text if voo && text.to_s != "true"
|
134
|
+
_optional_render_help
|
143
135
|
end
|
144
136
|
|
145
137
|
def hidden_tags hash, base=nil
|
@@ -160,46 +152,49 @@ format :html do
|
|
160
152
|
|
161
153
|
# FIELDSET VIEWS
|
162
154
|
|
163
|
-
view :name_formgroup do
|
164
|
-
formgroup "name",
|
165
|
-
|
155
|
+
view :name_formgroup do
|
156
|
+
formgroup "name", editor: "name" do
|
157
|
+
raw name_field
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def wrap_type_formgroup
|
162
|
+
formgroup "type", editor: "type", class: "type-formgroup" do
|
163
|
+
yield
|
164
|
+
end
|
166
165
|
end
|
167
166
|
|
168
|
-
view :type_formgroup do
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
type_field class: "type-field live-type-field",
|
173
|
-
href: path(view: :new), "data-remote" => true
|
174
|
-
end
|
175
|
-
formgroup "type", field, editor: "type", class: "type-formgroup"
|
167
|
+
view :type_formgroup do
|
168
|
+
wrap_type_formgroup do
|
169
|
+
type_field class: "type-field edit-type-field"
|
170
|
+
end
|
176
171
|
end
|
177
172
|
|
178
|
-
|
179
|
-
|
173
|
+
def button_formgroup
|
174
|
+
wrap_with :div, class: "form-group" do
|
175
|
+
wrap_with :div, yield
|
176
|
+
end
|
180
177
|
end
|
181
178
|
|
182
|
-
view :content_formgroup do
|
183
|
-
|
184
|
-
<fieldset class="card-editor editor">
|
185
|
-
#{edit_slot args}
|
186
|
-
</fieldset>
|
187
|
-
)
|
179
|
+
view :content_formgroup, cache: :never do
|
180
|
+
wrap_with :fieldset, edit_slot, class: classy("card-editor", "editor")
|
188
181
|
end
|
189
182
|
|
190
|
-
def name_field
|
191
|
-
|
192
|
-
text_field
|
193
|
-
# needed because otherwise gets wrong value if there are updates
|
194
|
-
value: card.name,
|
195
|
-
autocomplete: "off"
|
196
|
-
}.merge(options))
|
183
|
+
def name_field
|
184
|
+
# value needed because otherwise gets wrong value if there are updates
|
185
|
+
text_field :name, value: card.name, autocomplete: "off"
|
197
186
|
end
|
198
187
|
|
199
188
|
def type_field args={}
|
200
189
|
typelist = Auth.createable_types
|
201
|
-
current_type =
|
202
|
-
|
190
|
+
current_type = type_field_current_value args, typelist
|
191
|
+
options = options_from_collection_for_select typelist, :to_s, :to_s,
|
192
|
+
current_type
|
193
|
+
template.select_tag "card[type]", options, args
|
194
|
+
end
|
195
|
+
|
196
|
+
def type_field_current_value args, typelist
|
197
|
+
return if args.delete :no_current_type
|
203
198
|
if !card.new_card? && !typelist.include?(card.type_name)
|
204
199
|
# current type should be an option on existing cards,
|
205
200
|
# regardless of create perms
|
@@ -208,38 +203,30 @@ format :html do
|
|
208
203
|
card.type_name_or_default
|
209
204
|
end
|
210
205
|
|
211
|
-
|
212
|
-
|
213
|
-
template.select_tag "card[type]", options, args
|
206
|
+
def content_field skip_rev_id=false
|
207
|
+
[content_field_revision_tracking(skip_rev_id), _render_editor].compact.join
|
214
208
|
end
|
215
209
|
|
216
|
-
def
|
217
|
-
@form = form
|
218
|
-
@nested = options[:nested]
|
210
|
+
def content_field_revision_tracking skip_rev_id
|
219
211
|
card.last_action_id_before_edit = card.last_action_id
|
220
|
-
|
221
|
-
if card && !card.new_card? && !options[:skip_rev_id]
|
212
|
+
return if !card || card.new_card? || skip_rev_id
|
222
213
|
hidden_field :last_action_id_before_edit, class: "current_revision_id"
|
223
|
-
# hidden_field_tag 'card[last_action_id_before_edit]',
|
224
|
-
# card.last_action_id, class: 'current_revision_id'
|
225
|
-
end
|
226
|
-
%(
|
227
|
-
#{revision_tracking}
|
228
|
-
#{_render_editor options}
|
229
|
-
)
|
230
214
|
end
|
231
215
|
|
232
216
|
# FIELD VIEWS
|
233
217
|
|
234
|
-
view :edit_in_form, perms: :update, tags: :unknown_ok do
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
opts[:class] += " RIGHT-#{card.cardname.tag_name.safe_key}"
|
218
|
+
view :edit_in_form, cache: :never, perms: :update, tags: :unknown_ok do
|
219
|
+
@form = form_for_multi
|
220
|
+
add_junction_class
|
221
|
+
formgroup fancy_title(voo.title),
|
222
|
+
editor: "content", help: true, class: classy("card-editor") do
|
223
|
+
[content_field, (form.hidden_field(:type_id) if card.new_card?)]
|
241
224
|
end
|
242
|
-
|
225
|
+
end
|
226
|
+
|
227
|
+
def add_junction_class
|
228
|
+
return unless card.cardname.junction?
|
229
|
+
class_up "card-editor", "RIGHT-#{card.cardname.tag_name.safe_key}"
|
243
230
|
end
|
244
231
|
|
245
232
|
# form helpers
|
@@ -267,25 +254,18 @@ format :html do
|
|
267
254
|
end
|
268
255
|
|
269
256
|
def submit_button args={}
|
270
|
-
args.reverse_merge!(
|
271
|
-
situation: "primary",
|
272
|
-
data: {}
|
273
|
-
)
|
274
257
|
text = args.delete(:text) || "Submit"
|
258
|
+
args.reverse_merge! situation: "primary", data: {}
|
275
259
|
args[:data][:disable_with] ||= args.delete(:disable_with) || "Submitting"
|
276
260
|
button_tag text, args
|
277
261
|
end
|
278
262
|
|
279
263
|
# redirect to *previous if no :href is given
|
280
264
|
def cancel_button args={}
|
281
|
-
args.reverse_merge! type: "button"
|
282
|
-
if args[:href]
|
283
|
-
add_class args, "slotter"
|
284
|
-
else
|
285
|
-
add_class args, "redirecter"
|
286
|
-
args[:href] = Card.path_setting("/*previous")
|
287
|
-
end
|
288
265
|
text = args.delete(:text) || "Cancel"
|
266
|
+
args[:type] ||= "button"
|
267
|
+
add_class args, (args[:href] ? "slotter" : "redirecter")
|
268
|
+
args[:href] ||= Card.path_setting("/*previous")
|
289
269
|
button_tag text, args
|
290
270
|
end
|
291
271
|
end
|
@@ -1,62 +1,80 @@
|
|
1
1
|
format :html do
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
#{_optional_render :title, args}
|
8
|
-
</div>
|
9
|
-
#{_optional_render :type_info, args, :hide}
|
10
|
-
</div>
|
11
|
-
#{_optional_render :toolbar, args, :hide}
|
12
|
-
)
|
2
|
+
# TODO: find these a better home.
|
3
|
+
def class_up klass, classier, force=false
|
4
|
+
key = klass.to_s
|
5
|
+
return if !force && class_list[key]
|
6
|
+
class_list[key] = classier.to_s
|
13
7
|
end
|
14
8
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
9
|
+
def class_list
|
10
|
+
@class_list ||= {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def classy *classes
|
14
|
+
classes = Array.wrap(classes).flatten
|
15
|
+
[classes, class_list[classes.first]].flatten.compact.join " "
|
21
16
|
end
|
22
17
|
|
23
|
-
view :
|
24
|
-
|
25
|
-
|
26
|
-
<div class="card-subheader navbar-inverse btn-primary active">
|
27
|
-
#{args[:subheader]}
|
28
|
-
#{autosaved_draft_link if card.drafts.present? && @slot_view == :edit}
|
29
|
-
</div>
|
30
|
-
)
|
18
|
+
view :header do
|
19
|
+
voo.hide :toggle, :toolbar
|
20
|
+
main_header + _optional_render_toolbar
|
31
21
|
end
|
32
22
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
else
|
38
|
-
%w(close closed collapse-down)
|
23
|
+
def main_header
|
24
|
+
wrap_with :div, class: classy("card-header") do
|
25
|
+
wrap_with :div, class: classy("card-header-title") do
|
26
|
+
header_title_elements
|
39
27
|
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def header_title_elements
|
32
|
+
[_optional_render_toggle, _optional_render_title]
|
33
|
+
end
|
40
34
|
|
35
|
+
view :subheader do
|
36
|
+
wrap_with :div, class: "card-subheader navbar-inverse btn-primary active" do
|
37
|
+
[
|
38
|
+
_render_title,
|
39
|
+
(autosaved_draft_link(class: "pull-right") if show_draft_link?)
|
40
|
+
]
|
41
|
+
end
|
42
|
+
# toolbar_view_title(@slot_view) || _render_title(args)
|
43
|
+
end
|
44
|
+
|
45
|
+
def show_draft_link?
|
46
|
+
card.drafts.present? && @slot_view == :edit
|
47
|
+
end
|
48
|
+
|
49
|
+
view :toggle do
|
50
|
+
verb, adjective, direction = toggle_verb_adjective_direction
|
41
51
|
link_to_view adjective, glyphicon(direction),
|
42
52
|
title: "#{verb} #{card.name}",
|
43
53
|
class: "#{verb}-icon toggler slotter nodblclick"
|
44
54
|
end
|
45
55
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
56
|
+
def toggle_verb_adjective_direction
|
57
|
+
if @toggle_mode == :close
|
58
|
+
%w(open open expand)
|
59
|
+
else
|
60
|
+
%w(close closed collapse-down)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def nav_link_list side
|
65
|
+
wrap_with :ul, class: "nav navbar-nav navbar-#{side}" do
|
66
|
+
item_links.map do |link|
|
67
|
+
wrap_with(:li) { link }
|
50
68
|
end.join "\n"
|
51
69
|
end
|
52
70
|
end
|
53
71
|
|
54
|
-
view :navbar_right do
|
55
|
-
|
72
|
+
view :navbar_right do
|
73
|
+
nav_link_list :right
|
56
74
|
end
|
57
75
|
|
58
|
-
view :navbar_left do
|
59
|
-
|
76
|
+
view :navbar_left do
|
77
|
+
nav_link_list :left
|
60
78
|
end
|
61
79
|
|
62
80
|
def show_follow?
|