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,29 +1,34 @@
|
|
1
1
|
|
2
2
|
format :html do
|
3
|
-
view :raw do
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
view :raw do
|
4
|
+
wrap_with :div, class: "form-group" do
|
5
|
+
text_field_tag :_keyword, "", class: "navbox form-control",
|
6
|
+
placeholder: navbar_placeholder
|
7
7
|
end
|
8
|
-
|
8
|
+
end
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
def navbar_placeholder
|
11
|
+
@@placeholder ||= begin
|
12
|
+
holder_card = Card["#{Card[:navbox].name}+*placeholder"]
|
13
|
+
holder_card ? holder_card.raw_content : ""
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
|
-
view :navbar_left do
|
16
|
-
|
17
|
+
view :navbar_left do
|
18
|
+
class_up "navbox-form", "navbar-form navbar-left"
|
19
|
+
_render_core
|
17
20
|
end
|
18
21
|
|
19
|
-
view :navbar_right do
|
20
|
-
|
22
|
+
view :navbar_right do
|
23
|
+
class_up "navbox-form", "navbar-form navbar-left"
|
24
|
+
_render_core
|
21
25
|
end
|
22
26
|
|
23
|
-
view :core do
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
+
view :core do
|
28
|
+
form_tag Card.path_setting("/:search"),
|
29
|
+
method: "get", role: "search",
|
30
|
+
class: classy("navbox-form", "nodblclick") do
|
31
|
+
_render_raw
|
27
32
|
end
|
28
33
|
end
|
29
34
|
end
|
@@ -1,27 +1,35 @@
|
|
1
1
|
ACTS_PER_PAGE = 50
|
2
2
|
|
3
|
-
view :title do
|
4
|
-
|
3
|
+
view :title do
|
4
|
+
voo.title = "Recent Changes"
|
5
|
+
super()
|
5
6
|
end
|
6
7
|
|
7
8
|
format :html do
|
8
|
-
view :core do
|
9
|
-
|
10
|
-
|
9
|
+
view :core do
|
10
|
+
voo.hide :history_legend unless voo.main
|
11
|
+
bs_layout container: true, fluid: true do
|
12
|
+
html _optional_render_history_legend with_drafts: false
|
13
|
+
row 12 do
|
14
|
+
html _render_recent_acts
|
15
|
+
end
|
16
|
+
row 12 do
|
17
|
+
col act_paging
|
18
|
+
end
|
11
19
|
end
|
12
20
|
end
|
13
21
|
|
14
|
-
|
15
|
-
|
16
|
-
acts = Act.all_viewable.order(id: :desc)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
22
|
+
|
23
|
+
view :recent_acts, cache: :never do
|
24
|
+
acts = Act.all_viewable.order(id: :desc)
|
25
|
+
.page(page_from_params).per(ACTS_PER_PAGE)
|
26
|
+
render_act_list acts: acts, act_context: :absolute
|
27
|
+
end
|
28
|
+
|
29
|
+
def act_paging
|
30
|
+
acts = Act.all_viewable.order(id: :desc).page(page_from_params).per(ACTS_PER_PAGE)
|
31
|
+
wrap_with :span, class: "slotter" do
|
32
|
+
paginate acts, remote: true, theme: 'twitter-bootstrap-3'
|
33
|
+
end
|
26
34
|
end
|
27
35
|
end
|
@@ -1,17 +1,38 @@
|
|
1
|
+
include_set Abstract::SearchParams
|
2
|
+
|
3
|
+
format do
|
4
|
+
def extra_paging_path_args
|
5
|
+
vars = query_with_params.vars
|
6
|
+
return {} unless vars.is_a? Hash
|
7
|
+
vars.each_with_object({}) do |(key, value), hash|
|
8
|
+
hash["_#{key}"] = value
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def default_search_params
|
13
|
+
hash = super
|
14
|
+
hash[:vars] = params[:vars] || {}
|
15
|
+
params.each do |key, val|
|
16
|
+
next unless key.to_s =~ /^\_(\w+)$/
|
17
|
+
hash[:vars][Regexp.last_match(1).to_sym] = val
|
18
|
+
end
|
19
|
+
hash
|
20
|
+
end
|
21
|
+
end
|
1
22
|
|
2
23
|
format :html do
|
3
|
-
view :title do
|
24
|
+
view :title do
|
4
25
|
vars = root.search_params[:vars]
|
5
26
|
if vars && vars[:keyword]
|
6
|
-
|
27
|
+
voo.title = %(Search results for: <span class="search-keyword">)\
|
7
28
|
"#{vars[:keyword]}</span>"
|
8
29
|
end
|
9
|
-
super
|
30
|
+
super()
|
10
31
|
end
|
11
32
|
end
|
12
33
|
|
13
34
|
format :json do
|
14
|
-
view :complete do
|
35
|
+
view :complete, cache: :never do
|
15
36
|
term = complete_term
|
16
37
|
exact = Card.fetch term, new: {}
|
17
38
|
|
@@ -7,19 +7,17 @@ format :html do
|
|
7
7
|
|
8
8
|
view :type_formgroup do |args|
|
9
9
|
if card.cards_of_type_exist?
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
</div>
|
15
|
-
)
|
10
|
+
wrap_with :div do
|
11
|
+
"Sorry, this card must remain a Cardtype so long as " \
|
12
|
+
"there are <strong>#{card.name}</strong> cards."
|
13
|
+
end
|
16
14
|
else
|
17
15
|
super args
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
21
19
|
view :add_link do |args|
|
22
|
-
|
20
|
+
voo.title ||= "Add #{card.name}"
|
23
21
|
title = _render_title args
|
24
22
|
link_to title, path: _render_add_path(args), class: args[:css_class]
|
25
23
|
end
|
@@ -35,9 +33,9 @@ format :html do
|
|
35
33
|
|
36
34
|
view :add_path do |args|
|
37
35
|
path_args = {}
|
38
|
-
if
|
36
|
+
if voo.params
|
39
37
|
context = ((@parent && @parent.card) || card).name
|
40
|
-
Rack::Utils.parse_nested_query(
|
38
|
+
Rack::Utils.parse_nested_query(voo.params).each do |key, value|
|
41
39
|
value = value.to_name.to_absolute(context) if value
|
42
40
|
key = key.to_name.to_absolute(context)
|
43
41
|
path_args[key] = value
|
@@ -68,6 +66,10 @@ def cards_of_type_exist?
|
|
68
66
|
!new_card? && Auth.as_bot { Card.count_by_wql type_id: id } > 0
|
69
67
|
end
|
70
68
|
|
69
|
+
def create_ok?
|
70
|
+
Card.new(type_id: id).ok? :create
|
71
|
+
end
|
72
|
+
|
71
73
|
event :check_for_cards_of_type, after: :validate_delete do
|
72
74
|
if cards_of_type_exist?
|
73
75
|
errors.add :cardtype, "can't alter this type; #{name} cards still exist"
|
@@ -1,167 +1,16 @@
|
|
1
1
|
include_set Abstract::AceEditor
|
2
|
-
|
3
|
-
def item_cards params={}
|
4
|
-
s = query(params)
|
5
|
-
raise("OH NO.. no limit") unless s[:limit]
|
6
|
-
# forces explicit limiting
|
7
|
-
# can be 0 or less to force no limit
|
8
|
-
Query.run(s, name)
|
9
|
-
end
|
10
|
-
|
11
|
-
def item_names params={}
|
12
|
-
statement = query params.merge(return: :name)
|
13
|
-
Query.run(statement, name)
|
14
|
-
end
|
15
|
-
|
16
|
-
def item_type
|
17
|
-
return if query[:type].is_a?(Array) || query[:type].is_a?(Hash)
|
18
|
-
query[:type]
|
19
|
-
end
|
20
|
-
|
21
|
-
def count params={}
|
22
|
-
Card.count_by_wql query(params)
|
23
|
-
end
|
24
|
-
|
25
|
-
def query params={}
|
26
|
-
@query ||= {}
|
27
|
-
@query[params.to_s] ||= get_query(params.clone)
|
28
|
-
end
|
29
|
-
|
30
|
-
def get_query params={}
|
31
|
-
# why is this a wagn_bot thing? can't deny search content??
|
32
|
-
query = Auth.as_bot do
|
33
|
-
query_content = params.delete(:query) || raw_content
|
34
|
-
if query_content.empty?
|
35
|
-
raise JSON::ParserError,
|
36
|
-
"Error in card '#{name}':can't run search with empty content"
|
37
|
-
elsif query_content.is_a?(String)
|
38
|
-
JSON.parse(query_content)
|
39
|
-
else query_content
|
40
|
-
end
|
41
|
-
end
|
42
|
-
query.symbolize_keys!.merge! params.symbolize_keys
|
43
|
-
if (default_limit = query.delete(:default_limit))
|
44
|
-
query[:limit] ||= default_limit
|
45
|
-
end
|
46
|
-
query[:context] ||= cardname
|
47
|
-
query
|
48
|
-
end
|
2
|
+
include_set Abstract::WqlSearch
|
49
3
|
|
50
4
|
format do
|
51
|
-
view :core do
|
52
|
-
|
53
|
-
case
|
5
|
+
view :core, cache: :never do
|
6
|
+
_render(
|
7
|
+
case search_with_params
|
54
8
|
when Exception then :search_error
|
55
9
|
when Integer then :search_count
|
56
10
|
when @mode == :template then :raw
|
57
11
|
else :card_list
|
58
12
|
end
|
59
|
-
|
60
|
-
end
|
61
|
-
|
62
|
-
view :search_count do |_args|
|
63
|
-
search_results.to_s
|
64
|
-
end
|
65
|
-
|
66
|
-
view :search_error do |_args|
|
67
|
-
sr_class = search_results.class.to_s
|
68
|
-
%(#{sr_class} :: #{search_results.message} :: #{card.raw_content})
|
69
|
-
end
|
70
|
-
|
71
|
-
view :card_list do |_args|
|
72
|
-
if search_results.empty?
|
73
|
-
"no results"
|
74
|
-
else
|
75
|
-
search_results.map do |c|
|
76
|
-
nest c
|
77
|
-
end.join "\n"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def search_vars args={}
|
82
|
-
@search_vars ||=
|
83
|
-
begin
|
84
|
-
v = {}
|
85
|
-
v[:query] = card.query(search_params)
|
86
|
-
v[:item] = set_nest_opts args.merge(query_view: v[:query][:view])
|
87
|
-
v
|
88
|
-
rescue JSON::ParserError => e
|
89
|
-
{ error: e }
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def search_results args={}
|
94
|
-
@search_results ||= begin
|
95
|
-
search_vars args
|
96
|
-
if search_vars[:error]
|
97
|
-
search_vars[:error]
|
98
|
-
else
|
99
|
-
begin
|
100
|
-
raw_results = card.item_cards search_params
|
101
|
-
is_count = search_vars[:query][:return] == "count"
|
102
|
-
is_count ? raw_results.to_i : raw_results
|
103
|
-
rescue Card::Error::BadQuery => e
|
104
|
-
e
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def search_result_names
|
111
|
-
@search_result_names ||=
|
112
|
-
begin
|
113
|
-
card.item_names search_params
|
114
|
-
rescue => e
|
115
|
-
{ error: e }
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
def each_reference_with_args args={}
|
120
|
-
search_result_names.each do |name|
|
121
|
-
yield(name, nest_args(args.reverse_merge!(item: :content)))
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
def set_nest_opts args
|
126
|
-
@nest_defaults = nil
|
127
|
-
@nest_opts ||= {}
|
128
|
-
@nest_opts[:view] = args[:item] || nest_opts[:view] ||
|
129
|
-
args[:query_view] || default_item_view
|
130
|
-
# explicit > nest syntax > WQL > nest defaults
|
131
|
-
end
|
132
|
-
|
133
|
-
def page_link text, page, _current=false, options={}
|
134
|
-
@paging_path_args[:offset] = page * @paging_limit
|
135
|
-
options[:class] = "card-paging-link slotter"
|
136
|
-
options[:remote] = true
|
137
|
-
options[:path] = @paging_path_args
|
138
|
-
link_to raw(text), options
|
139
|
-
end
|
140
|
-
|
141
|
-
def page_li text, page, current=false, options={}
|
142
|
-
css_class = if current
|
143
|
-
"active"
|
144
|
-
elsif !page
|
145
|
-
"disabled"
|
146
|
-
end
|
147
|
-
page ||= 0
|
148
|
-
content_tag :li, class: css_class do
|
149
|
-
page_link text, page, current, options
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
def previous_page_link page
|
154
|
-
page_li '<span aria-hidden="true">«</span>', page, false,
|
155
|
-
"aria-label" => "Previous"
|
156
|
-
end
|
157
|
-
|
158
|
-
def next_page_link page
|
159
|
-
page_li '<span aria-hidden="true">»</span>', page, false,
|
160
|
-
"aria-label" => "Next"
|
161
|
-
end
|
162
|
-
|
163
|
-
def ellipse_page
|
164
|
-
content_tag :li, content_tag(:span, "...")
|
13
|
+
)
|
165
14
|
end
|
166
15
|
|
167
16
|
def chunk_list
|
@@ -169,30 +18,7 @@ format do
|
|
169
18
|
end
|
170
19
|
end
|
171
20
|
|
172
|
-
format :data do
|
173
|
-
view :card_list do |_args|
|
174
|
-
search_results.map do |c|
|
175
|
-
nest c
|
176
|
-
end
|
177
|
-
end
|
178
|
-
end
|
179
|
-
|
180
|
-
format :csv do
|
181
|
-
view :card_list do |args|
|
182
|
-
items = super args
|
183
|
-
if @depth == 0
|
184
|
-
render_csv_title_row + items
|
185
|
-
else
|
186
|
-
items
|
187
|
-
end
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
21
|
format :json do
|
192
|
-
def default_search_params
|
193
|
-
set_default_search_params default_limit: 0
|
194
|
-
end
|
195
|
-
|
196
22
|
view :export do |args|
|
197
23
|
# avoid running the search from options and structure that
|
198
24
|
# case a huge result or error
|
@@ -202,7 +28,7 @@ format :json do
|
|
202
28
|
super(args)
|
203
29
|
end
|
204
30
|
|
205
|
-
view :export_items do |args|
|
31
|
+
view :export_items, cache: :never do |args|
|
206
32
|
card.item_names(limit: 0).map do |i_name|
|
207
33
|
next unless (i_card = Card[i_name])
|
208
34
|
subformat(i_card).render_atom(args)
|
@@ -211,123 +37,32 @@ format :json do
|
|
211
37
|
end
|
212
38
|
|
213
39
|
format :rss do
|
214
|
-
view :feed_body do
|
215
|
-
case raw_feed_items
|
40
|
+
view :feed_body do
|
41
|
+
case raw_feed_items
|
216
42
|
when Exception then @xml.item(render(:search_error))
|
217
43
|
when Integer then @xml.item(render(:search_count))
|
218
|
-
else super
|
44
|
+
else super()
|
219
45
|
end
|
220
46
|
end
|
221
47
|
|
222
|
-
def raw_feed_items
|
223
|
-
@raw_feed_items ||=
|
224
|
-
search_params[:default_limit] = 25
|
225
|
-
search_results
|
226
|
-
end
|
48
|
+
def raw_feed_items
|
49
|
+
@raw_feed_items ||= search_with_params
|
227
50
|
end
|
228
51
|
end
|
229
52
|
|
230
53
|
format :html do
|
231
|
-
|
232
|
-
|
233
|
-
end
|
234
|
-
|
235
|
-
view :card_list do |args|
|
236
|
-
paging = _optional_render :paging, args
|
237
|
-
|
238
|
-
if search_results.empty?
|
239
|
-
render_no_search_results(args)
|
240
|
-
else
|
241
|
-
results =
|
242
|
-
search_results.map do |c|
|
243
|
-
item_view = nest_defaults(c)[:view]
|
244
|
-
%(
|
245
|
-
<div class="search-result-item item-#{item_view}">
|
246
|
-
#{nest(c, size: args[:size], view: item_view)}
|
247
|
-
</div>
|
248
|
-
)
|
249
|
-
end.join "\n"
|
250
|
-
|
251
|
-
%(
|
252
|
-
#{paging}
|
253
|
-
<div class="search-result-list">
|
254
|
-
#{results}
|
255
|
-
</div>
|
256
|
-
#{paging if search_results.length > 10}
|
257
|
-
)
|
258
|
-
end
|
259
|
-
end
|
260
|
-
|
261
|
-
view :closed_content do |args|
|
262
|
-
if @depth > self.class.max_depth
|
54
|
+
view :closed_content, cache: :never do
|
55
|
+
if @depth > max_depth
|
263
56
|
"..."
|
264
57
|
else
|
265
|
-
|
266
|
-
|
267
|
-
search_limit && [search_limit, Card.config.closed_search_limit].min
|
268
|
-
_render_core args.merge(hide: "paging", item: :link)
|
58
|
+
search_params[:limit] = closed_limit
|
59
|
+
_render_core hide: "paging", items: { view: :link }
|
269
60
|
# TODO: if item is queryified to be "name", then that should work.
|
270
61
|
# otherwise use link
|
271
62
|
end
|
272
63
|
end
|
273
64
|
|
274
|
-
|
275
|
-
|
276
|
-
end
|
277
|
-
|
278
|
-
view :paging do |args|
|
279
|
-
s = card.query search_params
|
280
|
-
offset = s[:offset].to_i
|
281
|
-
limit = s[:limit].to_i
|
282
|
-
return "" if limit < 1
|
283
|
-
# avoid query if we know there aren't enough results to warrant paging
|
284
|
-
return "" if offset == 0 && limit > offset + search_results.length
|
285
|
-
total = card.count search_params
|
286
|
-
# should only happen if limit exactly equals the total
|
287
|
-
return "" if limit >= total
|
288
|
-
@paging_path_args = { limit: limit,
|
289
|
-
slot: {
|
290
|
-
item: args[:item] || nest_defaults(card)[:view]
|
291
|
-
} }
|
292
|
-
@paging_path_args[:view] = args[:home_view] if args[:home_view]
|
293
|
-
@paging_limit = limit
|
294
|
-
|
295
|
-
s[:vars].each { |key, value| @paging_path_args["_#{key}"] = value }
|
296
|
-
|
297
|
-
out = ['<nav><ul class="pagination paging">']
|
298
|
-
|
299
|
-
total_pages = ((total - 1) / limit).to_i
|
300
|
-
current_page = (offset / limit).to_i # should already be integer
|
301
|
-
window = 2 # should be configurable
|
302
|
-
window_min = current_page - window
|
303
|
-
window_max = current_page + window
|
304
|
-
|
305
|
-
previous_page = current_page > 0 ? current_page - 1 : false
|
306
|
-
out << previous_page_link(previous_page)
|
307
|
-
if window_min > 0
|
308
|
-
out << page_li(1, 0)
|
309
|
-
out << ellipse_page if window_min > 1
|
310
|
-
end
|
311
|
-
|
312
|
-
(window_min..window_max).each do |page|
|
313
|
-
next if page < 0 || page > total_pages
|
314
|
-
text = page + 1
|
315
|
-
out << page_li(text, page, page == current_page)
|
316
|
-
end
|
317
|
-
|
318
|
-
if total_pages > window_max
|
319
|
-
out << ellipse_page if total_pages > window_max + 1
|
320
|
-
out << page_li(total_pages + 1, total_pages)
|
321
|
-
end
|
322
|
-
|
323
|
-
next_page = current_page < total_pages ? current_page + 1 : false
|
324
|
-
out << next_page_link(next_page)
|
325
|
-
|
326
|
-
out << %(</ul></nav>)
|
327
|
-
out.join
|
328
|
-
end
|
329
|
-
|
330
|
-
def default_search_params
|
331
|
-
set_default_search_params default_limit: 20
|
65
|
+
def default_editor_args args
|
66
|
+
args[:ace_mode] = "json"
|
332
67
|
end
|
333
68
|
end
|