geoblacklight_admin 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +27 -3
  3. data/Rakefile +30 -12
  4. data/app/assets/javascripts/geoblacklight_admin.js +1 -0
  5. data/app/assets/stylesheets/geoblacklight_admin/_core.scss +5 -0
  6. data/app/assets/stylesheets/geoblacklight_admin/modules/_chosen.scss +425 -0
  7. data/app/controllers/admin/admin_controller.rb +4 -2
  8. data/app/controllers/admin/advanced_search_controller.rb +123 -103
  9. data/app/controllers/admin/api_controller.rb +123 -108
  10. data/app/controllers/admin/bookmarks_controller.rb +4 -4
  11. data/app/controllers/admin/bulk_actions_controller.rb +9 -4
  12. data/app/controllers/admin/concerns/upload_util.rb +2 -0
  13. data/app/controllers/admin/document_accesses_controller.rb +10 -4
  14. data/app/controllers/admin/document_assets_controller.rb +14 -11
  15. data/app/controllers/admin/document_downloads_controller.rb +12 -10
  16. data/app/controllers/admin/documents_controller.rb +16 -8
  17. data/app/controllers/admin/elements_controller.rb +6 -5
  18. data/app/controllers/admin/form_elements_controller.rb +4 -4
  19. data/app/controllers/admin/ids_controller.rb +107 -87
  20. data/app/controllers/admin/import_documents_controller.rb +1 -1
  21. data/app/controllers/admin/imports_controller.rb +7 -3
  22. data/app/controllers/admin/mappings_controller.rb +6 -4
  23. data/app/controllers/admin/notifications_controller.rb +1 -1
  24. data/app/controllers/admin/search_controller.rb +1 -1
  25. data/app/controllers/admin/users_controller.rb +1 -1
  26. data/app/helpers/form_input_helper.rb +4 -4
  27. data/app/helpers/geoblacklight_admin_helper.rb +1 -1
  28. data/app/jobs/export_job.rb +2 -1
  29. data/app/models/admin/bookmark.rb +18 -0
  30. data/app/models/api_search_builder.rb +3 -1
  31. data/app/models/document/bbox_validator.rb +9 -5
  32. data/app/models/document/date_range_validator.rb +13 -10
  33. data/app/models/document/geom_validator.rb +4 -2
  34. data/app/models/document.rb +15 -7
  35. data/app/models/element.rb +9 -7
  36. data/app/models/form_control.rb +2 -0
  37. data/app/models/form_element.rb +2 -0
  38. data/app/models/form_feature.rb +2 -0
  39. data/app/models/form_group.rb +2 -0
  40. data/app/models/form_header.rb +2 -0
  41. data/app/models/geoblacklight_admin/schema.rb +5 -2
  42. data/app/models/geoblacklight_admin.rb +2 -0
  43. data/app/models/import/csv_duplicates_validator.rb +2 -1
  44. data/app/models/import/csv_header_validator.rb +2 -1
  45. data/app/models/import.rb +4 -7
  46. data/app/models/user.rb +1 -1
  47. data/app/services/export_csv_service.rb +5 -1
  48. data/app/views/admin/advanced_search/facets.json.jbuilder +9 -8
  49. data/app/views/admin/advanced_search/index.json.jbuilder +8 -7
  50. data/app/views/admin/api/_field.json.jbuilder +1 -1
  51. data/app/views/admin/api/fetch.json.jbuilder +8 -7
  52. data/app/views/admin/api/index.json.jbuilder +8 -7
  53. data/app/views/admin/bookmarks/index.html.erb +2 -2
  54. data/app/views/admin/bulk_actions/index.html.erb +3 -3
  55. data/app/views/admin/bulk_actions/show.html.erb +1 -1
  56. data/app/views/admin/document_accesses/_form.html.erb +1 -1
  57. data/app/views/admin/document_accesses/destroy_all.html.erb +2 -2
  58. data/app/views/admin/document_accesses/edit.html.erb +1 -1
  59. data/app/views/admin/document_accesses/import.html.erb +2 -2
  60. data/app/views/admin/document_accesses/index.html.erb +9 -9
  61. data/app/views/admin/document_accesses/new.html.erb +1 -1
  62. data/app/views/admin/document_downloads/_form.html.erb +1 -1
  63. data/app/views/admin/document_downloads/destroy_all.html.erb +1 -1
  64. data/app/views/admin/document_downloads/edit.html.erb +2 -3
  65. data/app/views/admin/document_downloads/import.html.erb +1 -1
  66. data/app/views/admin/document_downloads/index.html.erb +9 -9
  67. data/app/views/admin/document_downloads/new.html.erb +1 -1
  68. data/app/views/admin/document_downloads/show.html.erb +2 -2
  69. data/app/views/admin/documents/_document_bookmark.html.erb +1 -1
  70. data/app/views/admin/documents/_form_nav.html.erb +1 -1
  71. data/app/views/admin/documents/_json_btaa_aardvark.jbuilder +1 -3
  72. data/app/views/admin/documents/edit.html.erb +1 -1
  73. data/app/views/admin/documents/features/_multiple_download_links.html.erb +2 -2
  74. data/app/views/admin/documents/index.html.erb +2 -4
  75. data/app/views/admin/documents/versions.html.erb +1 -1
  76. data/app/views/admin/elements/_element.json.jbuilder +4 -1
  77. data/app/views/admin/elements/_form.html.erb +1 -1
  78. data/app/views/admin/elements/edit.html.erb +2 -2
  79. data/app/views/admin/elements/index.html.erb +3 -3
  80. data/app/views/admin/elements/index.json.jbuilder +2 -0
  81. data/app/views/admin/elements/new.html.erb +1 -1
  82. data/app/views/admin/elements/show.html.erb +6 -6
  83. data/app/views/admin/elements/show.json.jbuilder +2 -0
  84. data/app/views/admin/form_elements/_form.html.erb +1 -1
  85. data/app/views/admin/form_elements/_form_element.json.jbuilder +2 -0
  86. data/app/views/admin/form_elements/edit.html.erb +2 -2
  87. data/app/views/admin/form_elements/index.html.erb +1 -1
  88. data/app/views/admin/form_elements/index.json.jbuilder +2 -0
  89. data/app/views/admin/form_elements/new.html.erb +1 -1
  90. data/app/views/admin/form_elements/show.html.erb +2 -2
  91. data/app/views/admin/form_elements/show.json.jbuilder +2 -0
  92. data/app/views/admin/ids/fetch.json.jbuilder +8 -7
  93. data/app/views/admin/ids/index.json.jbuilder +3 -2
  94. data/app/views/admin/import_documents/show.html.haml +1 -1
  95. data/app/views/admin/imports/_import.json.jbuilder +2 -1
  96. data/app/views/admin/imports/_show_failed_tab.html.erb +2 -2
  97. data/app/views/admin/imports/_show_success_tab.html.erb +1 -1
  98. data/app/views/admin/imports/edit.html.erb +3 -3
  99. data/app/views/admin/imports/index.html.erb +3 -3
  100. data/app/views/admin/layouts/application.html.erb +4 -4
  101. data/app/views/admin/mappings/_form.html.erb +1 -1
  102. data/app/views/admin/mappings/_mapping.json.jbuilder +2 -1
  103. data/app/views/admin/mappings/edit.html.erb +2 -2
  104. data/app/views/admin/mappings/new.html.erb +1 -1
  105. data/app/views/admin/mappings/show.html.erb +2 -2
  106. data/app/views/admin/notifications/index.html.erb +3 -3
  107. data/app/views/admin/search/index.html.erb +2 -2
  108. data/app/views/admin/shared/_navbar.html.erb +8 -3
  109. data/app/views/catalog/_show_gbl_admin.html.erb +3 -0
  110. data/config/routes.rb +37 -33
  111. data/db/migrate/20230316183001_add_geoblacklight_admin_gem.rb +408 -0
  112. data/db/seeds.rb +7 -5
  113. data/lib/generators/geoblacklight_admin/config_generator.rb +43 -31
  114. data/lib/generators/geoblacklight_admin/install_generator.rb +2 -3
  115. data/lib/generators/geoblacklight_admin/jobs_generator.rb +3 -2
  116. data/lib/generators/geoblacklight_admin/models_generator.rb +0 -1
  117. data/lib/generators/geoblacklight_admin/templates/_show_sidebar.html.erb +19 -0
  118. data/lib/generators/geoblacklight_admin/templates/_user_util_links.html.erb +1 -1
  119. data/lib/generators/geoblacklight_admin/templates/config/database.yml +9 -5
  120. data/lib/generators/geoblacklight_admin/templates/config/initializers/geoblacklight_admin.rb +1 -2
  121. data/lib/generators/geoblacklight_admin/templates/config/initializers/pagy.rb +150 -68
  122. data/lib/generators/geoblacklight_admin/templates/config/settings.yml +241 -0
  123. data/lib/generators/geoblacklight_admin/templates/package.json +1 -0
  124. data/lib/generators/geoblacklight_admin/views_generator.rb +0 -1
  125. data/lib/geoblacklight_admin/engine.rb +5 -6
  126. data/lib/geoblacklight_admin/version.rb +1 -1
  127. data/lib/geoblacklight_admin.rb +1 -1
  128. data/lib/tasks/geoblacklight_admin.rake +10 -6
  129. metadata +79 -48
  130. data/.editorconfig +0 -18
  131. data/.gitignore +0 -75
  132. data/.standard.yml +0 -4
  133. data/Gemfile +0 -59
  134. data/LICENSE +0 -21
  135. data/app/assets/images/.keep +0 -0
  136. data/app/controllers/admin/concerns/.keep +0 -0
  137. data/app/models/bookmark.rb +0 -17
  138. data/app/models/concerns/.keep +0 -0
  139. data/db/migrate/20230316183001_add_geoblacklight_admin.rb +0 -399
  140. data/geoblacklight_admin.gemspec +0 -67
  141. data/lib/generators/geoblacklight_admin/templates/.env.development.example +0 -28
  142. data/lib/generators/geoblacklight_admin/templates/.solr_wrapper.yml +0 -7
  143. data/lib/generators/geoblacklight_admin/templates/solr/snapshots/.keep +0 -0
  144. data/lib/tasks/.keep +0 -0
  145. data/spec/test_app_templates/lib/generators/test_app_generator.rb +0 -35
  146. data/template.rb +0 -16
@@ -8,17 +8,20 @@ module GeoblacklightAdmin
8
8
 
9
9
  desc <<-DESCRIPTION
10
10
  This generator makes the following changes to your application:
11
- 1. Copies GBL Admin initializer file to host config
11
+ 1. Copies GBL Admin initializer file to host config#{" "}
12
12
  2. Copies Kithe initializer file to host config
13
13
  3. Copies Pagy initializer file to host config
14
14
  4. Copies Statesman initializer file to host config
15
15
  5. Copies PG database.yml connection to host config
16
- 6. Copies .env.development to host
16
+ 5. Copies settings.yml to host config
17
+ 6. Copies .env.development and .env.test to host
18
+ 6. Copies JSON Schema to host
17
19
  7. Copies solr/* to host
18
20
  8. Sets Routes
19
21
  9. Sets Gems
20
22
  10.Sets MimeTypes
21
23
  11.Sets DB Seeds
24
+ 11.Sets ActiveStorage
22
25
  12.Sets Pagy Backend
23
26
 
24
27
  DESCRIPTION
@@ -43,8 +46,13 @@ module GeoblacklightAdmin
43
46
  copy_file "config/database.yml", "config/database.yml", force: true
44
47
  end
45
48
 
49
+ def create_settings_yml
50
+ copy_file "config/settings.yml", "config/settings.yml", force: true
51
+ end
52
+
46
53
  def create_dotenv
47
54
  copy_file ".env.development.example", ".env.development"
55
+ copy_file ".env.development.example", ".env.test"
48
56
  end
49
57
 
50
58
  def copy_json_schema
@@ -52,7 +60,7 @@ module GeoblacklightAdmin
52
60
  end
53
61
 
54
62
  def copy_solr
55
- directory 'solr', 'solr', force: true
63
+ directory "solr", "solr", force: true
56
64
  end
57
65
 
58
66
  def create_solr_yml
@@ -88,14 +96,14 @@ module GeoblacklightAdmin
88
96
  patch :run, on: :member
89
97
  patch :revert, on: :member
90
98
  end
91
-
99
+
92
100
  # Imports
93
101
  resources :imports do
94
102
  resources :mappings
95
103
  resources :import_documents, only: [:show]
96
104
  patch :run, on: :member
97
105
  end
98
-
106
+
99
107
  # Elements
100
108
  resources :elements do
101
109
  post :sort, on: :collection
@@ -109,7 +117,7 @@ module GeoblacklightAdmin
109
117
  resources :form_group, path: :form_elements, controller: :form_elements
110
118
  resources :form_control, path: :form_elements, controller: :form_elements
111
119
  resources :form_feature, path: :form_elements, controller: :form_elements
112
-
120
+
113
121
  # Notifications
114
122
  resources :notifications do
115
123
  put "batch", on: :collection
@@ -121,7 +129,7 @@ module GeoblacklightAdmin
121
129
  # Bookmarks
122
130
  resources :bookmarks
123
131
  delete "/bookmarks", to: "bookmarks#destroy", as: :bookmarks_destroy_by_fkeys
124
-
132
+ #{" "}
125
133
  # AdvancedSearch controller
126
134
  get '/advanced_search' => 'advanced_search#index', constraints: lambda { |req| req.format == :json }
127
135
  get '/advanced_search/facets' => 'advanced_search#facets', constraints: lambda { |req| req.format == :json }
@@ -136,84 +144,84 @@ module GeoblacklightAdmin
136
144
  # Documents
137
145
  resources :documents do
138
146
  get "versions"
139
-
147
+ #{" "}
140
148
  # DocumentAccesses
141
149
  resources :document_accesses, path: "access" do
142
150
  collection do
143
151
  get "import"
144
152
  post "import"
145
-
153
+
146
154
  get "destroy_all"
147
155
  post "destroy_all"
148
156
  end
149
157
  end
150
-
158
+ #{" "}
151
159
  # DocumentDownloads
152
160
  resources :document_downloads, path: "downloads" do
153
161
  collection do
154
162
  get "import"
155
163
  post "import"
156
-
164
+
157
165
  get "destroy_all"
158
166
  post "destroy_all"
159
167
  end
160
168
  end
161
-
169
+ #{" "}
162
170
  # Document Assets
163
171
  resources :document_assets, path: "assets" do
164
172
  collection do
165
173
  get "display_attach_form"
166
174
  post "attach_files"
167
-
175
+
168
176
  get "destroy_all"
169
177
  post "destroy_all"
170
178
  end
171
179
  end
172
-
180
+
173
181
  collection do
174
182
  get "fetch"
175
183
  end
176
184
  end
177
-
185
+ #{" "}
178
186
  # Document Accesses
179
187
  resources :document_accesses, path: "access" do
180
188
  collection do
181
189
  get "import"
182
190
  post "import"
183
-
191
+
184
192
  get "destroy_all"
185
193
  post "destroy_all"
186
194
  end
187
195
  end
188
-
196
+
189
197
  # Document Downloads
190
198
  resources :document_downloads, path: "downloads" do
191
199
  collection do
192
200
  get "import"
193
201
  post "import"
194
-
202
+
195
203
  get "destroy_all"
196
204
  post "destroy_all"
197
205
  end
198
206
  end
199
-
207
+
200
208
  # Document Assets
201
209
  resources :document_assets, path: "assets" do
202
210
  collection do
203
211
  get "display_attach_form"
204
212
  post "attach_files"
205
-
213
+
206
214
  get "destroy_all"
207
215
  post "destroy_all"
208
216
  end
209
217
  end
210
-
218
+
211
219
  get "/documents/:id/ingest", to: "document_assets#display_attach_form", as: "asset_ingest"
212
220
  post "/documents/:id/ingest", to: "document_assets#attach_files"
213
221
  #mount Kithe::AssetUploader.upload_endpoint(:cache) => "/direct_upload", :as => :direct_app_upload
214
-
222
+
215
223
  resources :collections, except: [:show]
216
-
224
+
217
225
  # Note "assets" is Rails reserved word for routing, oops. So we use
218
226
  # asset_files.
219
227
  resources :assets, path: "asset_files", except: [:new, :create] do
@@ -221,11 +229,11 @@ module GeoblacklightAdmin
221
229
  put "convert_to_child_work"
222
230
  end
223
231
  end
224
-
232
+
225
233
  # @TODO
226
234
  # mount Qa::Engine => "/authorities"
227
235
  mount ActionCable.server => "/cable"
228
-
236
+
229
237
  # @TODO
230
238
  # authenticate :user, ->(user) { user } do
231
239
  # mount Blazer::Engine, at: "blazer"
@@ -243,16 +251,16 @@ module GeoblacklightAdmin
243
251
  gem 'active_storage_validations', '~> 1.0'
244
252
  gem 'amazing_print'
245
253
  gem 'blacklight_advanced_search'
246
- gem 'bootstrap', '~> 4.0'
254
+ # gem 'bootstrap', '~> 4.0' (upstream)
247
255
  gem 'cocoon', '~> 1.2'
248
- # gem 'devise', '~> 4.7'
256
+ # gem 'devise', '~> 4.7' (upstream)
249
257
  gem 'devise-bootstrap-views', '~> 1.0'
250
258
  gem 'devise_invitable', '~> 2.0'
251
259
  gem 'dotenv-rails'
252
260
  gem 'haml', '~> 5.2'
253
261
  gem 'httparty'
254
262
  gem 'inline_svg'
255
- # gem 'jquery-rails', '~> 4.4'
263
+ # gem 'jquery-rails', '~> 4.4' (upstream)
256
264
  gem 'kithe', '~> 2.0'
257
265
  gem 'noticed'
258
266
  gem 'pagy'
@@ -282,7 +290,7 @@ Mime::Type.register "text/csv", :csv_document_access_links
282
290
 
283
291
  def set_seeds
284
292
  append_to_file "db/seeds.rb" do
285
- 'GeoblacklightAdmin::Engine.load_seed'
293
+ "GeoblacklightAdmin::Engine.load_seed"
286
294
  end
287
295
  end
288
296
 
@@ -294,7 +302,7 @@ Mime::Type.register "text/csv", :csv_document_access_links
294
302
 
295
303
  def add_activestorage
296
304
  append_to_file "app/assets/javascripts/application.js" do
297
- "
305
+ "
298
306
 
299
307
  // Required by GBL Admin
300
308
  //= require activestorage"
@@ -305,12 +313,16 @@ Mime::Type.register "text/csv", :csv_document_access_links
305
313
  copy_file "_user_util_links.html.erb", "app/views/shared/_user_util_links.html.erb"
306
314
  end
307
315
 
316
+ def add_show_sidebar
317
+ copy_file "_show_sidebar.html.erb", "app/views/catalog/_show_sidebar.html.erb"
318
+ end
319
+
308
320
  # @TODO
309
321
  # I'm certain this is not the best way to inject our JS behaviors into the root app
310
322
  # But for now, this will do...
311
323
  # Long term I hope to avoid webpack here altogether.
312
324
  def copy_app_javascript
313
- directory 'javascript', 'app/javascript', force: true
325
+ directory "javascript", "app/javascript", force: true
314
326
  end
315
327
 
316
328
  def add_package_json
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rails/generators"
2
4
 
3
5
  module GeoblacklightAdmin
@@ -6,9 +8,6 @@ module GeoblacklightAdmin
6
8
 
7
9
  desc "Install GeoblacklightAdmin"
8
10
 
9
- def add_settings_vars
10
- end
11
-
12
11
  def bundle_install
13
12
  Bundler.with_unbundled_env do
14
13
  run "bundle install"
@@ -2,7 +2,8 @@
2
2
 
3
3
  require "rails/generators"
4
4
 
5
- module GeoblacklightAdmin class JobsGenerator < Rails::Generators::Base
5
+ module GeoblacklightAdmin
6
+ class JobsGenerator < Rails::Generators::Base
6
7
  source_root File.expand_path("templates", __dir__)
7
8
 
8
9
  desc <<-DESCRIPTION
@@ -11,7 +12,7 @@ module GeoblacklightAdmin class JobsGenerator < Rails::Generators::Base
11
12
  DESCRIPTION
12
13
 
13
14
  def config_development_jobs_queue_adapter
14
- job_config = <<-"JOBS"
15
+ job_config = <<-JOBS
15
16
  config.active_job.queue_adapter = :inline
16
17
  JOBS
17
18
 
@@ -18,6 +18,5 @@ module GeoblacklightAdmin
18
18
  def copy_migrations
19
19
  rake "geoblacklight_admin:install:migrations"
20
20
  end
21
-
22
21
  end
23
22
  end
@@ -0,0 +1,19 @@
1
+ <div class="gbl-admin">
2
+ <%= render :partial => "show_gbl_admin" %>
3
+ </div>
4
+
5
+ <%= render :partial => 'show_tools', locals: { document: @document } %>
6
+
7
+ <div class="sidebar-buttons">
8
+ <%= render :partial => "show_web_services" %>
9
+ <%= render :partial => "show_downloads" %>
10
+ </div>
11
+
12
+ <% unless @document.more_like_this.empty? %>
13
+ <div class="card">
14
+ <div class="card-header">More Like This</div>
15
+ <div class="card-body">
16
+ <%= render :collection => @document.more_like_this, :partial => 'show_more_like_this', :as => :document %>
17
+ </div>
18
+ </div>
19
+ <% end %>
@@ -8,7 +8,7 @@
8
8
 
9
9
  <% if current_user.admin? %>
10
10
  <li class="nav-item">
11
- <%= link_to "GBL Admin", admin_documents_path, {class: 'nav-link'} %>
11
+ <%= link_to "GBLAdmin", admin_documents_path, {class: 'nav-link'} %>
12
12
  </li>
13
13
  <% end %>
14
14
 
@@ -1,18 +1,22 @@
1
1
  default: &default
2
2
  adapter: postgresql
3
3
  encoding: unicode
4
- host: <%= ENV['GBL_ADMIN_DB_HOST'] || '127.0.0.1' %>
5
- port: <%= ENV['GBL_ADMIN_DB_PORT'] || '5432' %>
6
- database: <%= ENV['GBL_ADMIN_DB_DATABASE'] || 'geoblacklight_development' %>
7
- username: <%= ENV['GBL_ADMIN_DB_USER'] %>
8
- password: <%= ENV['GBL_ADMIN_DB_PASSWORD'] %>
4
+ host: <%= ENV['POSTGRES_HOST'] || '127.0.0.1' %>
5
+ port: <%= ENV['POSTGRES_PORT'] || '5432' %>
6
+ username: <%= ENV['POSTGRES_USER'] || 'postgres' %>
7
+ password: <%= ENV['POSTGRES_PASSWORD'] || 'postgres' %>
9
8
  pool: 5
10
9
 
11
10
  test:
11
+ database: <%= ENV['POSTGRES_DB'] || 'geoblacklight_test' %>
12
12
  <<: *default
13
13
 
14
+
14
15
  development:
16
+ database: <%= ENV['POSTGRES_DB'] || 'geoblacklight_development' %>
15
17
  <<: *default
16
18
 
19
+
17
20
  production:
21
+ database: <%= ENV['POSTGRES_DB'] || 'geoblacklight_production' %>
18
22
  <<: *default
@@ -13,8 +13,7 @@ GEOMG_SCHEMA = HashWithIndifferentAccess.new(
13
13
  # GEOMG_SCHEMA_TIMESTAMP
14
14
  # This constant hold the Time of the last changes to the Element table.
15
15
  # If the timestamp changes, the rails server and sidekiq will need to be restarted.
16
- if File.exist?(Rails.root.join("tmp/schema_timestamp.txt").to_s)
17
- else
16
+ unless File.exist?(Rails.root.join("tmp/schema_timestamp.txt").to_s)
18
17
  File.write(Rails.root.join("tmp/schema_timestamp.txt").to_s, Time.now.to_s)
19
18
  end
20
19
  GEOMG_SCHEMA_TIMESTAMP = File.read(Rails.root.join("tmp/schema_timestamp.txt").to_s)