blacklight 8.0.0.beta1 → 8.0.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/.env +1 -0
- data/.github/workflows/ruby.yml +6 -0
- data/.gitignore +1 -0
- data/.rubocop_todo.yml +3 -1
- data/README.md +1 -1
- data/Rakefile +18 -0
- data/VERSION +1 -1
- data/app/assets/config/blacklight/manifest.js +3 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js +132 -140
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
- data/app/assets/javascripts/blacklight/blacklight.js +132 -140
- data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +1 -1
- data/app/assets/stylesheets/blacklight/_facets.scss +32 -5
- data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +1 -1
- data/app/components/blacklight/advanced_search_form_component.rb +3 -3
- data/app/components/blacklight/document/actions_component.rb +1 -1
- data/app/components/blacklight/document/show_tools_component.html.erb +12 -0
- data/app/components/blacklight/document/show_tools_component.rb +23 -0
- data/app/components/blacklight/document_component.rb +48 -20
- data/app/components/blacklight/document_metadata_component.html.erb +4 -2
- data/app/components/blacklight/document_metadata_component.rb +8 -2
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +2 -2
- data/app/components/blacklight/facet_field_list_component.html.erb +2 -2
- data/app/components/blacklight/metadata_field_component.html.erb +2 -2
- data/app/components/blacklight/metadata_field_layout_component.rb +7 -4
- data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +17 -0
- data/app/components/blacklight/response/facet_group_component.html.erb +2 -1
- data/app/components/blacklight/response/facet_group_component.rb +1 -1
- data/app/components/blacklight/response/sort_component.rb +1 -1
- data/app/components/blacklight/response/spellcheck_component.rb +1 -1
- data/app/components/blacklight/response/view_type_button_component.rb +1 -1
- data/app/components/blacklight/response/view_type_component.rb +2 -2
- data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
- data/app/components/blacklight/search_context/server_applied_params_component.html.erb +4 -0
- data/app/components/blacklight/search_context/server_applied_params_component.rb +13 -0
- data/app/components/blacklight/search_context/server_item_pagination_component.rb +71 -0
- data/app/components/blacklight/system/dropdown_component.rb +3 -3
- data/app/components/blacklight/system/flash_message_component.rb +2 -2
- data/app/components/blacklight/system/modal_component.rb +1 -1
- data/app/components/blacklight/top_navbar_component.html.erb +1 -1
- data/app/components/blacklight/top_navbar_component.rb +4 -0
- data/app/controllers/concerns/blacklight/bookmarks.rb +1 -1
- data/app/controllers/concerns/blacklight/search_context.rb +46 -6
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -101
- data/app/helpers/blacklight/catalog_helper_behavior.rb +27 -54
- data/app/helpers/blacklight/component_helper_behavior.rb +0 -11
- data/app/helpers/blacklight/document_helper_behavior.rb +76 -0
- data/app/helpers/blacklight/layout_helper_behavior.rb +59 -0
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +1 -0
- data/app/helpers/blacklight/url_helper_behavior.rb +11 -3
- data/app/javascript/blacklight/bookmark_toggle.js +8 -15
- data/app/javascript/blacklight/button_focus.js +10 -10
- data/app/javascript/blacklight/index.js +6 -5
- data/app/javascript/blacklight/modal.js +24 -24
- data/app/javascript/blacklight/search_context.js +51 -57
- data/app/models/concerns/blacklight/document.rb +11 -0
- data/app/models/record_mailer.rb +19 -15
- data/app/presenters/blacklight/document_presenter.rb +13 -11
- data/app/presenters/blacklight/index_presenter.rb +1 -1
- data/app/presenters/blacklight/rendering/abstract_step.rb +4 -0
- data/app/presenters/blacklight/rendering/join.rb +7 -1
- data/app/presenters/blacklight/rendering/link_to_facet.rb +1 -1
- data/app/presenters/blacklight/rendering/microdata.rb +1 -1
- data/app/services/blacklight/search_service.rb +2 -1
- data/app/views/catalog/_document.atom.builder +1 -1
- data/app/views/catalog/_document.html.erb +3 -8
- data/app/views/catalog/_document_list.html.erb +2 -1
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_show_main_content.html.erb +5 -11
- data/app/views/catalog/_show_tools.html.erb +1 -14
- data/app/views/catalog/facet.html.erb +3 -3
- data/app/views/catalog/index.html.erb +3 -0
- data/app/views/catalog/show.html.erb +1 -6
- data/app/views/layouts/blacklight/base.html.erb +4 -5
- data/app/views/record_mailer/email_record.text.erb +4 -3
- data/app/views/record_mailer/sms_record.text.erb +4 -4
- data/blacklight.gemspec +2 -2
- data/config/importmap.rb +1 -1
- data/config/locales/blacklight.ar.yml +209 -232
- data/config/locales/blacklight.ca.yml +0 -6
- data/config/locales/blacklight.de.yml +197 -215
- data/config/locales/blacklight.en.yml +2 -6
- data/config/locales/blacklight.es.yml +196 -215
- data/config/locales/blacklight.fr.yml +196 -219
- data/config/locales/blacklight.hu.yml +193 -212
- data/config/locales/blacklight.it.yml +197 -215
- data/config/locales/blacklight.nl.yml +193 -212
- data/config/locales/blacklight.pt-BR.yml +195 -215
- data/config/locales/blacklight.sq.yml +193 -212
- data/config/locales/blacklight.zh.yml +194 -213
- data/docker-compose.yml +1 -0
- data/lib/blacklight/configuration/session_tracking_config.rb +45 -0
- data/lib/blacklight/configuration/view_config.rb +0 -4
- data/lib/blacklight/configuration.rb +8 -4
- data/lib/blacklight/engine.rb +6 -7
- data/lib/blacklight/routes/searchable.rb +1 -0
- data/lib/generators/blacklight/assets/importmap_generator.rb +9 -8
- data/lib/generators/blacklight/assets/propshaft_generator.rb +11 -2
- data/lib/generators/blacklight/assets/sprockets_generator.rb +2 -0
- data/lib/generators/blacklight/assets_generator.rb +3 -1
- data/lib/generators/blacklight/install_generator.rb +3 -1
- data/lib/generators/blacklight/templates/solr_document.rb +0 -6
- data/package.json +7 -4
- data/rollup.config.js +11 -1
- data/spec/components/blacklight/document_component_spec.rb +66 -15
- data/spec/components/blacklight/header_component_spec.rb +20 -0
- data/spec/components/blacklight/response/view_type_component_spec.rb +17 -0
- data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
- data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +29 -0
- data/spec/components/blacklight/{search_context_component_spec.rb → search_context/server_item_pagination_component_spec.rb} +15 -4
- data/spec/controllers/bookmarks_controller_spec.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +18 -6
- data/spec/features/component_template_override_spec.rb +8 -0
- data/spec/features/modal_spec.rb +12 -0
- data/spec/features/sitelinks_search_box_spec.rb +13 -0
- data/spec/helpers/blacklight/url_helper_behavior_spec.rb +1 -1
- data/spec/helpers/blacklight_helper_spec.rb +0 -56
- data/spec/helpers/catalog_helper_spec.rb +56 -0
- data/spec/lib/blacklight/configuration/session_tracking_config_spec.rb +38 -0
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +2 -2
- data/spec/models/blacklight/configuration_spec.rb +2 -2
- data/spec/models/blacklight/icon_spec.rb +0 -2
- data/spec/models/blacklight/search_builder_spec.rb +3 -3
- data/spec/models/blacklight/solr/request_spec.rb +2 -2
- data/spec/models/record_mailer_spec.rb +36 -23
- data/spec/presenters/blacklight/document_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/field_presenter_spec.rb +2 -2
- data/spec/presenters/blacklight/index_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/show_presenter_spec.rb +1 -0
- data/spec/presenters/pipeline_spec.rb +13 -2
- data/spec/routing/catalog_routing_spec.rb +4 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/view_component_test_helpers.rb +21 -0
- data/spec/test_app_templates/Gemfile.extra +4 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +8 -0
- data/spec/views/catalog/_document.html.erb_spec.rb +22 -1
- data/spec/views/catalog/_document_list.html.erb_spec.rb +7 -2
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +2 -2
- data/spec/views/catalog/index.json.jbuilder_spec.rb +1 -1
- data/tasks/blacklight.rake +1 -1
- metadata +39 -21
- data/app/components/blacklight/search_context_component.rb +0 -68
- data/app/models/concerns/blacklight/document/email.rb +0 -27
- data/app/models/concerns/blacklight/document/sms.rb +0 -25
- data/spec/features/sitelinks_search_box.rb +0 -13
- data/spec/models/blacklight/document/email_spec.rb +0 -57
- data/spec/models/blacklight/document/sms_spec.rb +0 -58
- data/spec/support/view_component_capybara_test_helpers.rb +0 -8
- /data/app/components/blacklight/{search_context_component.html.erb → search_context/server_item_pagination_component.html.erb} +0 -0
|
@@ -1,240 +1,221 @@
|
|
|
1
|
+
---
|
|
1
2
|
zh:
|
|
2
|
-
views:
|
|
3
|
-
pagination:
|
|
4
|
-
first: '« 首页'
|
|
5
|
-
last: '末页 »'
|
|
6
|
-
previous: '« 上一页'
|
|
7
|
-
next: '下一页 »'
|
|
8
|
-
truncate: '…'
|
|
9
|
-
aria:
|
|
10
|
-
container_label: 分页链接
|
|
11
|
-
current_page: 当前页面,页面%{page}
|
|
12
|
-
go_to_page: 前往页面%{page}
|
|
13
|
-
go_to_previous_page: 转到上一页
|
|
14
|
-
go_to_next_page: 转到下一页
|
|
15
|
-
go_to_first_page: 转到第一页
|
|
16
|
-
go_to_last_page: 转到最后一页
|
|
17
|
-
|
|
18
|
-
pagination_compact:
|
|
19
|
-
previous: '« 上一页'
|
|
20
|
-
next: '下一页 »'
|
|
21
|
-
|
|
22
3
|
blacklight:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
search_field: '转到搜索'
|
|
28
|
-
first_result: '转到第一个搜索结果'
|
|
29
|
-
header_links:
|
|
30
|
-
login: '登陆'
|
|
31
|
-
logout: '注销'
|
|
32
|
-
bookmarks: '书签'
|
|
33
|
-
search_history: '搜索历史'
|
|
34
|
-
|
|
35
|
-
welcome: '欢迎!'
|
|
36
|
-
and: '和'
|
|
37
|
-
or: '或'
|
|
38
|
-
|
|
39
|
-
modal:
|
|
40
|
-
close: "关闭"
|
|
41
|
-
|
|
4
|
+
and: 和
|
|
5
|
+
application_name: Blacklight
|
|
6
|
+
back_to_bookmarks: 返回书签页面
|
|
7
|
+
back_to_search: 返回搜索页面
|
|
42
8
|
bookmarks:
|
|
43
|
-
title: '书签'
|
|
44
|
-
page_title: '书签 - %{application_name}'
|
|
45
|
-
no_bookmarks: '你还没有任何书签'
|
|
46
9
|
add:
|
|
47
|
-
button:
|
|
10
|
+
button: 书签
|
|
11
|
+
failure: 抱歉,保存书签时出错。
|
|
48
12
|
success:
|
|
49
|
-
one:
|
|
50
|
-
other:
|
|
51
|
-
failure: '抱歉,保存书签时出错。'
|
|
52
|
-
remove:
|
|
53
|
-
button: '删除书签'
|
|
54
|
-
success: '成功删除书签。'
|
|
55
|
-
failure: '抱歉,删除书签时出错。'
|
|
56
|
-
action_confirm: '删除这个书签?'
|
|
57
|
-
clear:
|
|
58
|
-
action_title: '清除书签'
|
|
59
|
-
action_confirm: '清除所有书签?'
|
|
60
|
-
success: '已经清除了所有书签。'
|
|
61
|
-
failure: '抱歉,清除书签时出错。'
|
|
62
|
-
need_login: '登陆后才能访问你的书签功能。'
|
|
63
|
-
list_title: '你的书签'
|
|
64
|
-
delete: '删除'
|
|
65
|
-
|
|
66
|
-
search_history:
|
|
13
|
+
one: 成功添加书签。
|
|
14
|
+
other: 成功添加书签。
|
|
67
15
|
clear:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
sms: '发送短信'
|
|
84
|
-
clear: '清除'
|
|
85
|
-
|
|
16
|
+
action_confirm: 清除所有书签?
|
|
17
|
+
action_title: 清除书签
|
|
18
|
+
failure: 抱歉,清除书签时出错。
|
|
19
|
+
success: 已经清除了所有书签。
|
|
20
|
+
delete: 删除
|
|
21
|
+
list_title: 你的书签
|
|
22
|
+
need_login: 登陆后才能访问你的书签功能。
|
|
23
|
+
no_bookmarks: 你还没有任何书签
|
|
24
|
+
page_title: 书签 - %{application_name}
|
|
25
|
+
remove:
|
|
26
|
+
action_confirm: 删除这个书签?
|
|
27
|
+
button: 删除书签
|
|
28
|
+
failure: 抱歉,删除书签时出错。
|
|
29
|
+
success: 成功删除书签。
|
|
30
|
+
title: 书签
|
|
86
31
|
citation:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
32
|
+
apa: APA
|
|
33
|
+
chicago: Chicago
|
|
34
|
+
mla: MLA
|
|
35
|
+
did_you_mean: 你是要输入: %{options} 吗?
|
|
91
36
|
email:
|
|
37
|
+
errors:
|
|
38
|
+
to:
|
|
39
|
+
blank: 请输入电子邮件接收人才能发送
|
|
40
|
+
invalid: 请输入合法电子邮件地址
|
|
92
41
|
form:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
42
|
+
message: 正文:
|
|
43
|
+
submit: 发送
|
|
44
|
+
title: 通过电子邮件发送
|
|
45
|
+
to: 电子邮件:
|
|
46
|
+
success: 已发送电子邮件
|
|
97
47
|
text:
|
|
98
|
-
default_title:
|
|
99
|
-
|
|
100
|
-
author: '作者: %{value}'
|
|
101
|
-
format: '格式: %{value}'
|
|
102
|
-
language: '语言: %{value}'
|
|
48
|
+
default_title: 无
|
|
49
|
+
message: 正文: %{message}
|
|
103
50
|
subject:
|
|
104
51
|
one: '记录: %{title}'
|
|
105
|
-
other:
|
|
52
|
+
other: 记录
|
|
106
53
|
url: '网址: %{url}'
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
text:
|
|
123
|
-
title: '%{value}'
|
|
124
|
-
author: ' 来自 %{value}'
|
|
125
|
-
url: '链接: %{url}'
|
|
126
|
-
success: "已发送短信"
|
|
127
|
-
errors:
|
|
128
|
-
to:
|
|
129
|
-
invalid: '请输入10位正确电话号码'
|
|
130
|
-
blank: "请输入接收人电话号码才能发送短信"
|
|
131
|
-
carrier:
|
|
132
|
-
blank: '你必须选择一个运营商'
|
|
133
|
-
invalid: "你必须输入一个运营商"
|
|
134
|
-
|
|
135
|
-
back_to_search: '返回搜索页面'
|
|
136
|
-
back_to_bookmarks: '返回书签页面'
|
|
137
|
-
|
|
54
|
+
entry_name:
|
|
55
|
+
default: 条目
|
|
56
|
+
grouped:
|
|
57
|
+
default: 分组结果
|
|
58
|
+
header_links:
|
|
59
|
+
bookmarks: 书签
|
|
60
|
+
login: 登陆
|
|
61
|
+
logout: 注销
|
|
62
|
+
search_history: 搜索历史
|
|
63
|
+
main:
|
|
64
|
+
aria:
|
|
65
|
+
main_container: 主要内容
|
|
66
|
+
modal:
|
|
67
|
+
close: 关闭
|
|
68
|
+
or: 或
|
|
138
69
|
search:
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
search_constraints_header: '搜索条件'
|
|
145
|
-
search_results: '搜索结果'
|
|
146
|
-
errors:
|
|
147
|
-
invalid_solr_id: "抱歉,你要找的结果不存在。"
|
|
148
|
-
per_page:
|
|
149
|
-
label: '%{count}<span class="sr-only visually-hidden"> 每页</span>'
|
|
150
|
-
button_label: '%{count} 每页' # TODO: Remove during major release
|
|
151
|
-
button_label_html: '%{count}<span class="d-none d-sm-inline"> 每页</span>'
|
|
152
|
-
title: '每页显示结果数'
|
|
153
|
-
submit: '更新'
|
|
154
|
-
aria_label: '结果导航'
|
|
155
|
-
sort:
|
|
156
|
-
label: '按 %{field} 排序' # TODO: Remove during major release
|
|
157
|
-
label_html: '<span class="d-none d-sm-inline">按 %{field} </span>排序'
|
|
158
|
-
submit: '排序'
|
|
159
|
-
form:
|
|
160
|
-
search_field:
|
|
161
|
-
label: '搜索字段'
|
|
162
|
-
title: '设定的搜索选项'
|
|
163
|
-
post_label: '为'
|
|
164
|
-
search:
|
|
165
|
-
label: '搜索'
|
|
166
|
-
placeholder: '搜索...'
|
|
167
|
-
submit: '搜索'
|
|
168
|
-
pagination:
|
|
169
|
-
title: '搜索结果导航'
|
|
170
|
-
pagination_info:
|
|
171
|
-
no_items_found: '没有找到 %{entry_name} '
|
|
172
|
-
single_item_found: '找到 <strong>1</strong> %{entry_name}'
|
|
173
|
-
pages:
|
|
174
|
-
one: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> 共 <strong>%{total_num}</strong>'
|
|
175
|
-
other: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> 共 <strong>%{total_num}</strong>'
|
|
176
|
-
entry_pagination_info:
|
|
177
|
-
one: '<strong>1 / 1</strong>'
|
|
178
|
-
other: '<strong>%{current}</strong> / <strong>%{total}</strong>'
|
|
70
|
+
atom_feed: 搜索结果Atom
|
|
71
|
+
bookmarks:
|
|
72
|
+
absent: 加入书签
|
|
73
|
+
inprogress: 保存...
|
|
74
|
+
present: 在书签中
|
|
179
75
|
documents:
|
|
180
76
|
aria:
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
counter:
|
|
77
|
+
limit_search: 限定搜索
|
|
78
|
+
search_results: 搜索结果
|
|
79
|
+
counter: "%{counter}. "
|
|
80
|
+
entry_pagination_info:
|
|
81
|
+
one: "<strong>1 / 1</strong>"
|
|
82
|
+
other: "<strong>%{current}</strong> / <strong>%{total}</strong>"
|
|
83
|
+
errors:
|
|
84
|
+
invalid_solr_id: 抱歉,你要找的结果不存在。
|
|
184
85
|
facets:
|
|
185
|
-
|
|
186
|
-
clear:
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
more_html: '更多 <span class="sr-only visually-hidden">%{field_name}</span> »'
|
|
193
|
-
selected:
|
|
194
|
-
remove: '[删除]'
|
|
86
|
+
all: 皆
|
|
87
|
+
clear: 清除搜索条件
|
|
88
|
+
count: "%{number}"
|
|
89
|
+
group:
|
|
90
|
+
close: 隐藏方面
|
|
91
|
+
open: 显示方面
|
|
92
|
+
toggle: 更多 »
|
|
195
93
|
missing: "[未找到]"
|
|
94
|
+
more_html: 更多 <span class="sr-only visually-hidden">%{field_name}</span> »
|
|
196
95
|
pivot:
|
|
197
|
-
show: 打开
|
|
198
96
|
hide: 关
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
97
|
+
show: 打开
|
|
98
|
+
selected:
|
|
99
|
+
remove: "[删除]"
|
|
100
|
+
sort:
|
|
101
|
+
count: 按数量排序
|
|
102
|
+
index: 按字母排序
|
|
103
|
+
title: 限定搜索
|
|
203
104
|
filters:
|
|
204
|
-
|
|
205
|
-
label: '%{label}:'
|
|
105
|
+
label: "%{label}:"
|
|
206
106
|
remove:
|
|
207
|
-
value: '删除限定条件 %{value}'
|
|
208
107
|
label_value: '删除限定条件 %{label}: %{value}'
|
|
209
|
-
|
|
108
|
+
value: 删除限定条件 %{value}
|
|
109
|
+
title: 你在搜索:
|
|
110
|
+
form:
|
|
111
|
+
search:
|
|
112
|
+
label: 搜索
|
|
113
|
+
placeholder: 搜索...
|
|
114
|
+
search_field:
|
|
115
|
+
label: 搜索字段
|
|
116
|
+
post_label: 为
|
|
117
|
+
title: 设定的搜索选项
|
|
118
|
+
submit: 搜索
|
|
119
|
+
group:
|
|
120
|
+
more: 更多 »
|
|
121
|
+
header: 搜
|
|
210
122
|
index:
|
|
211
|
-
label:
|
|
123
|
+
label: "%{label}:"
|
|
124
|
+
page_title:
|
|
125
|
+
constraint: "%{label}: %{value}"
|
|
126
|
+
many_constraint_values: "%{values} 已选"
|
|
127
|
+
title: "%{constraints} - %{application_name} 搜索结果"
|
|
128
|
+
pagination:
|
|
129
|
+
title: 搜索结果导航
|
|
130
|
+
pagination_info:
|
|
131
|
+
no_items_found: '没有找到 %{entry_name} '
|
|
132
|
+
pages:
|
|
133
|
+
one: "<strong>%{start_num}</strong> - <strong>%{end_num}</strong> 共 <strong>%{total_num}</strong>"
|
|
134
|
+
other: "<strong>%{start_num}</strong> - <strong>%{end_num}</strong> 共 <strong>%{total_num}</strong>"
|
|
135
|
+
single_item_found: 找到 <strong>1</strong> %{entry_name}
|
|
136
|
+
per_page:
|
|
137
|
+
aria_label: 结果导航
|
|
138
|
+
button_label: "%{count} 每页"
|
|
139
|
+
button_label_html: '%{count}<span class="d-none d-sm-inline"> 每页</span>'
|
|
140
|
+
label: '%{count}<span class="sr-only visually-hidden"> 每页</span>'
|
|
141
|
+
submit: 更新
|
|
142
|
+
title: 每页显示结果数
|
|
143
|
+
rss_feed: 搜索结果RSS
|
|
144
|
+
search_constraints_header: 搜索条件
|
|
145
|
+
search_results: 搜索结果
|
|
212
146
|
show:
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
inprogress: "保存..."
|
|
221
|
-
zero_results:
|
|
222
|
-
title: "未找到任何结果"
|
|
223
|
-
modify_search: "请更改你的搜索条件"
|
|
224
|
-
use_fewer_keywords: "使用更少的搜索条件,使用左边的链接来筛选搜索结果。"
|
|
225
|
-
search_fields: "你在搜索如下字段 %{search_fields}"
|
|
226
|
-
search_everything: "试一试搜索所有记录"
|
|
227
|
-
view_title: "以如下方式察看搜索结果: "
|
|
147
|
+
label: "%{label}:"
|
|
148
|
+
title: "%{document_title} - %{application_name}"
|
|
149
|
+
sort:
|
|
150
|
+
label: 按 %{field} 排序
|
|
151
|
+
label_html: <span class="d-none d-sm-inline">按 %{field} </span>排序
|
|
152
|
+
submit: 排序
|
|
153
|
+
start_over: 重新开始
|
|
228
154
|
view:
|
|
229
|
-
list:
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
155
|
+
list: 列表
|
|
156
|
+
view_title: '以如下方式察看搜索结果: '
|
|
157
|
+
zero_results:
|
|
158
|
+
modify_search: 请更改你的搜索条件
|
|
159
|
+
search_everything: 试一试搜索所有记录
|
|
160
|
+
search_fields: 你在搜索如下字段 %{search_fields}
|
|
161
|
+
title: 未找到任何结果
|
|
162
|
+
use_fewer_keywords: 使用更少的搜索条件,使用左边的链接来筛选搜索结果。
|
|
163
|
+
search_history:
|
|
164
|
+
clear:
|
|
165
|
+
action_confirm: 清除搜索历史?
|
|
166
|
+
action_title: 清除搜索历史
|
|
167
|
+
failure: 清除搜索历史时出错。
|
|
168
|
+
success: 已经清除搜索历史。
|
|
169
|
+
forget: 去除
|
|
170
|
+
no_history: 你没有任何搜索历史
|
|
171
|
+
page_title: 搜索历史 - %{application_name}
|
|
172
|
+
recent: 你最近搜索历史
|
|
173
|
+
save: 保存
|
|
174
|
+
title: ''
|
|
175
|
+
skip_links:
|
|
176
|
+
first_result: 转到第一个搜索结果
|
|
177
|
+
label: 跳过链接
|
|
178
|
+
main_content: 转到主要内容
|
|
179
|
+
search_field: 转到搜索
|
|
180
|
+
sms:
|
|
181
|
+
errors:
|
|
182
|
+
carrier:
|
|
183
|
+
blank: 你必须选择一个运营商
|
|
184
|
+
invalid: 你必须输入一个运营商
|
|
185
|
+
to:
|
|
186
|
+
blank: 请输入接收人电话号码才能发送短信
|
|
187
|
+
invalid: 请输入10位正确电话号码
|
|
188
|
+
form:
|
|
189
|
+
carrier: 运营商
|
|
190
|
+
carrier_prompt: 请选择运营商
|
|
191
|
+
submit: 发送
|
|
192
|
+
title: 通过短信发送
|
|
193
|
+
to: '电话号码:'
|
|
194
|
+
success: 已发送短信
|
|
195
|
+
text:
|
|
196
|
+
url: '链接: %{url}'
|
|
197
|
+
tools:
|
|
198
|
+
citation: 引用
|
|
199
|
+
clear: 清除
|
|
200
|
+
email: 电子邮件
|
|
201
|
+
sms: 发送短信
|
|
202
|
+
title: 工具
|
|
203
|
+
welcome: 欢迎!
|
|
204
|
+
views:
|
|
205
|
+
pagination:
|
|
239
206
|
aria:
|
|
240
|
-
|
|
207
|
+
container_label: 分页链接
|
|
208
|
+
current_page: 当前页面,页面%{page}
|
|
209
|
+
go_to_first_page: 转到第一页
|
|
210
|
+
go_to_last_page: 转到最后一页
|
|
211
|
+
go_to_next_page: 转到下一页
|
|
212
|
+
go_to_page: 前往页面%{page}
|
|
213
|
+
go_to_previous_page: 转到上一页
|
|
214
|
+
first: "« 首页"
|
|
215
|
+
last: 末页 »
|
|
216
|
+
next: 下一页 »
|
|
217
|
+
previous: "« 上一页"
|
|
218
|
+
truncate: "…"
|
|
219
|
+
pagination_compact:
|
|
220
|
+
next: 下一页 »
|
|
221
|
+
previous: "« 上一页"
|
data/docker-compose.yml
CHANGED
|
@@ -17,6 +17,7 @@ services:
|
|
|
17
17
|
environment:
|
|
18
18
|
- SOLR_URL # Set via environment variable or use default defined in .env file
|
|
19
19
|
- RAILS_VERSION # Set via environment variable or use default defined in .env file
|
|
20
|
+
- VIEW_COMPONENT_VERSION # Set via environment variable or use default defined in .env file
|
|
20
21
|
- SOLR_ENV=docker-compose
|
|
21
22
|
- ENGINE_CART_RAILS_OPTIONS=--skip-git --skip-listen --skip-spring --skip-keeps --skip-action-cable --skip-coffee --skip-test --skip-solr
|
|
22
23
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Blacklight::Configuration
|
|
4
|
+
class SessionTrackingConfig < Blacklight::OpenStructWithHashAccess
|
|
5
|
+
# @!attribute storage
|
|
6
|
+
# @return [String, FalseClass] 'server': use server-side tracking; 'client': delegate search tracking and prev/next navigation to client
|
|
7
|
+
# @!attribute applied_params_component
|
|
8
|
+
# @return [Class] component class used to render a facet group
|
|
9
|
+
# @!attribute item_pagination_component
|
|
10
|
+
# @return [Class] component class used to render the constraints
|
|
11
|
+
|
|
12
|
+
def initialize(property_hash = {})
|
|
13
|
+
super({ storage: 'server' }.merge(property_hash))
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def applied_params_component
|
|
17
|
+
super || default_applied_params_component(storage)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def item_pagination_component
|
|
21
|
+
super || default_item_pagination_component(storage)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def url_helper
|
|
25
|
+
super || default_url_helper(storage)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def default_applied_params_component(storage)
|
|
29
|
+
return Blacklight::SearchContext::ServerAppliedParamsComponent if storage == 'server'
|
|
30
|
+
|
|
31
|
+
nil
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def default_item_pagination_component(storage)
|
|
35
|
+
return Blacklight::SearchContext::ServerItemPaginationComponent if storage == 'server'
|
|
36
|
+
|
|
37
|
+
nil
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# extension point for alternative storage types
|
|
41
|
+
def default_url_helper(_storage)
|
|
42
|
+
nil
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -26,10 +26,6 @@ class Blacklight::Configuration
|
|
|
26
26
|
# @return [Class] component class used to render the search bar
|
|
27
27
|
# @!attribute search_header_component
|
|
28
28
|
# @return [Class] component class used to render the header above the documents
|
|
29
|
-
def search_bar_presenter_class
|
|
30
|
-
super || Blacklight::SearchBarPresenter
|
|
31
|
-
end
|
|
32
|
-
|
|
33
29
|
def display_label(**options)
|
|
34
30
|
I18n.t(
|
|
35
31
|
:"blacklight.search.view_title.#{key}",
|
|
@@ -20,6 +20,7 @@ module Blacklight
|
|
|
20
20
|
autoload :DisplayField
|
|
21
21
|
autoload :IndexField
|
|
22
22
|
autoload :ShowField
|
|
23
|
+
autoload :SessionTrackingConfig
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
class_attribute :default_values, default: {}
|
|
@@ -200,7 +201,9 @@ module Blacklight
|
|
|
200
201
|
ViewConfig,
|
|
201
202
|
default: { top_level_config: :index },
|
|
202
203
|
show: { top_level_config: :show },
|
|
203
|
-
citation: { parent_config: :show }
|
|
204
|
+
citation: { parent_config: :show },
|
|
205
|
+
email_record: { top_level_config: :email },
|
|
206
|
+
sms_record: { top_level_config: :sms }
|
|
204
207
|
)
|
|
205
208
|
|
|
206
209
|
# @!attribute sms
|
|
@@ -279,9 +282,10 @@ module Blacklight
|
|
|
279
282
|
property :raw_endpoint, default: OpenStructWithHashAccess.new(enabled: false)
|
|
280
283
|
|
|
281
284
|
# @!attribute track_search_session
|
|
282
|
-
#
|
|
283
|
-
# @
|
|
284
|
-
|
|
285
|
+
# { storage: false } value: do no tracking
|
|
286
|
+
# @since v8.0.0
|
|
287
|
+
# @return [Blacklight::Configuration::SessionTrackingConfig]
|
|
288
|
+
property :track_search_session, default: Blacklight::Configuration::SessionTrackingConfig.new
|
|
285
289
|
|
|
286
290
|
# @!attribute advanced_search
|
|
287
291
|
# @since v7.15.0
|
data/lib/blacklight/engine.rb
CHANGED
|
@@ -19,15 +19,14 @@ module Blacklight
|
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
# rubocop:disable Lint/ConstantDefinitionInBlock
|
|
24
|
-
PRECOMPILE_ASSETS = %w(favicon.ico blacklight/blacklight.js blacklight/blacklight.js.map blacklight/blacklight.esm.js blacklight/blacklight.esm.js.map).freeze
|
|
25
|
-
# rubocop:enable Lint/ConstantDefinitionInBlock
|
|
22
|
+
PRECOMPILE_ASSETS = %w(favicon.ico blacklight/blacklight.js blacklight/blacklight.js.map blacklight/blacklight.esm.js blacklight/blacklight.esm.js.map).freeze
|
|
26
23
|
|
|
24
|
+
initializer "blacklight.assets.precompile" do |app|
|
|
27
25
|
# When Rails has been generated in API mode, it does not have sprockets available
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
next unless app.config.respond_to?(:assets)
|
|
27
|
+
|
|
28
|
+
app.config.assets.paths << Engine.root.join("app/javascript")
|
|
29
|
+
app.config.assets.precompile += Blacklight::Engine::PRECOMPILE_ASSETS
|
|
31
30
|
end
|
|
32
31
|
|
|
33
32
|
initializer "blacklight.importmap", before: "importmap" do |app|
|
|
@@ -10,6 +10,7 @@ module Blacklight
|
|
|
10
10
|
def call(mapper, _options = {})
|
|
11
11
|
mapper.match '/', action: 'index', as: 'search', via: [:get, :post]
|
|
12
12
|
mapper.get '/advanced', action: 'advanced_search', as: 'advanced_search'
|
|
13
|
+
mapper.get '/page_links', action: 'page_links', as: 'page_links'
|
|
13
14
|
|
|
14
15
|
mapper.post ":id/track", action: 'track', as: 'track'
|
|
15
16
|
mapper.get ":id/raw", action: 'raw', as: 'raw', defaults: { format: 'json' }
|
|
@@ -14,10 +14,15 @@ module Blacklight
|
|
|
14
14
|
def import_javascript_assets
|
|
15
15
|
append_to_file 'config/importmap.rb' do
|
|
16
16
|
<<~CONTENT
|
|
17
|
+
pin "@github/auto-complete-element", to: "https://cdn.skypack.dev/@github/auto-complete-element"
|
|
17
18
|
pin "@popperjs/core", to: "https://ga.jspm.io/npm:@popperjs/core@2.11.6/dist/umd/popper.min.js"
|
|
18
19
|
pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@#{(defined?(Bootstrap) && Bootstrap::VERSION) || '5.2.2'}/dist/js/bootstrap.js"
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
CONTENT
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
append_to_file 'app/assets/config/manifest.js' do
|
|
24
|
+
<<~CONTENT
|
|
25
|
+
//= link blacklight/manifest.js
|
|
21
26
|
CONTENT
|
|
22
27
|
end
|
|
23
28
|
end
|
|
@@ -26,12 +31,8 @@ module Blacklight
|
|
|
26
31
|
append_to_file 'app/javascript/application.js' do
|
|
27
32
|
<<~CONTENT
|
|
28
33
|
import bootstrap from "bootstrap"
|
|
29
|
-
import "
|
|
30
|
-
import
|
|
31
|
-
Blacklight.onLoad(() => {
|
|
32
|
-
const dialog = document.querySelector('dialog')
|
|
33
|
-
dialogPolyfill.registerDialog(dialog)
|
|
34
|
-
})
|
|
34
|
+
import githubAutoCompleteElement from "@github/auto-complete-element"
|
|
35
|
+
import Blacklight from "blacklight"
|
|
35
36
|
CONTENT
|
|
36
37
|
end
|
|
37
38
|
end
|
|
@@ -4,7 +4,15 @@ module Blacklight
|
|
|
4
4
|
module Assets
|
|
5
5
|
class PropshaftGenerator < Rails::Generators::Base
|
|
6
6
|
def add_package
|
|
7
|
-
|
|
7
|
+
if ENV['CI']
|
|
8
|
+
run "yarn add blacklight-frontend:#{Blacklight::Engine.root}"
|
|
9
|
+
else
|
|
10
|
+
run 'yarn add blacklight-frontend'
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def add_third_party_packages
|
|
15
|
+
run 'yarn add @github/auto-complete-element'
|
|
8
16
|
end
|
|
9
17
|
|
|
10
18
|
def add_package_assets
|
|
@@ -16,7 +24,8 @@ module Blacklight
|
|
|
16
24
|
|
|
17
25
|
append_to_file 'app/javascript/application.js' do
|
|
18
26
|
<<~CONTENT
|
|
19
|
-
import Blacklight from "blacklight-frontend
|
|
27
|
+
import Blacklight from "blacklight-frontend";
|
|
28
|
+
import githubAutoCompleteElement from "@github/auto-complete-element";
|
|
20
29
|
CONTENT
|
|
21
30
|
end
|
|
22
31
|
end
|
|
@@ -18,6 +18,7 @@ module Blacklight
|
|
|
18
18
|
return if Rails.version > '7' || Sprockets::VERSION < '4'
|
|
19
19
|
|
|
20
20
|
append_to_file 'app/assets/config/manifest.js', "\n//= link application.js"
|
|
21
|
+
append_to_file 'app/assets/config/manifest.js', "\n//= link blacklight/manifest.js"
|
|
21
22
|
empty_directory 'app/assets/images'
|
|
22
23
|
end
|
|
23
24
|
|
|
@@ -42,6 +43,7 @@ module Blacklight
|
|
|
42
43
|
// Required by Blacklight
|
|
43
44
|
//= require popper
|
|
44
45
|
//= require bootstrap
|
|
46
|
+
//= require blacklight/blacklight
|
|
45
47
|
CONTENT
|
|
46
48
|
end
|
|
47
49
|
end
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'shellwords'
|
|
4
|
+
|
|
3
5
|
module Blacklight
|
|
4
6
|
class AssetsGenerator < Rails::Generators::Base
|
|
5
7
|
class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 5.1'), desc: "Set the generated app's bootstrap version"
|
|
6
8
|
|
|
7
9
|
def run_asset_pipeline_specific_generator
|
|
8
|
-
generated_options = "--bootstrap-version='#{options[:'bootstrap-version']}'" if options[:'bootstrap-version']
|
|
10
|
+
generated_options = "--bootstrap-version='#{Shellwords.escape(options[:'bootstrap-version'])}'" if options[:'bootstrap-version']
|
|
9
11
|
|
|
10
12
|
generator = if defined?(Propshaft)
|
|
11
13
|
'blacklight:assets:propshaft'
|