card 1.19.6 → 1.20.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|