geoblacklight_admin 0.0.1 → 0.1.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.
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
@@ -1,4 +1,4 @@
1
- <%- @page_title = "GEOMG - Imports" %>
1
+ <%- @page_title = "GBL♦Admin - Imports" %>
2
2
 
3
3
  <h1 style="width:100%;">
4
4
  Imports
@@ -7,7 +7,7 @@
7
7
 
8
8
  <h6>
9
9
  <span class='float-left mt-3'>
10
- <%== pagy_info(@pagy, 'imports'.pluralize(@pagy.count)) %>
10
+ <%== pagy_info(@pagy) %>
11
11
  </span>
12
12
  <span class='float-right'>
13
13
  <%== pagy_bootstrap_nav(@pagy) %>
@@ -46,7 +46,7 @@
46
46
 
47
47
  <h6>
48
48
  <span class='float-left mt-3'>
49
- <%== pagy_info(@pagy, 'imports'.pluralize(@pagy.count)) %>
49
+ <%== pagy_info(@pagy) %>
50
50
  </span>
51
51
  <span class='float-right'>
52
52
  <%== pagy_bootstrap_nav(@pagy) %>
@@ -1,13 +1,13 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title><%= @page_title || 'GBL Admin' %></title>
4
+ <title><%= @page_title || 'GBLAdmin' %></title>
5
5
  <%= csrf_meta_tags %>
6
6
  <%= csp_meta_tag %>
7
7
 
8
- <%= stylesheet_link_tag 'application', media: 'all' %>
9
- <%= javascript_include_tag "geoblacklight_admin" %>
10
- <%= javascript_pack_tag 'application' %>
8
+ <%= stylesheet_link_tag "application", media: "all" %>
9
+ <%= javascript_include_tag "geoblacklight_admin", "data-turbolinks-track": "reload" %>
10
+ <%= javascript_pack_tag "application", "data-turbolinks-track": "reload" %>
11
11
 
12
12
  <script src="https://unpkg.com/@popperjs/core@2"></script>
13
13
  <script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
@@ -1,5 +1,5 @@
1
1
 
2
- <%= simple_form_for([@import.becomes(Import), @mapping]) do |f| %>
2
+ <%= simple_form_for([:admin, @import.becomes(Import), @mapping]) do |f| %>
3
3
  <%= f.error_notification %>
4
4
  <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
5
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- json.extract! mapping, :id, :source_header, :destination_field, :delimited, :transformation_method, :import_id, :created_at, :updated_at
3
+ json.extract! mapping, :id, :source_header, :destination_field, :delimited, :transformation_method, :import_id,
4
+ :created_at, :updated_at
4
5
  json.url mapping_url(mapping, format: :json)
@@ -2,5 +2,5 @@
2
2
 
3
3
  <%= render 'form', mapping: @mapping %>
4
4
 
5
- <%= link_to 'Show', import_mapping_path(@import, @mapping) %> |
6
- <%= link_to 'Back', import_mappings_path(@import) %>
5
+ <%= link_to 'Show', admin_import_mapping_path(@import, @mapping) %> |
6
+ <%= link_to 'Back', admin_import_mappings_path(@import) %>
@@ -2,4 +2,4 @@
2
2
 
3
3
  <%= render 'form', mapping: @mapping %>
4
4
 
5
- <%= link_to 'Back', import_mappings_path(@import) %>
5
+ <%= link_to 'Back', admin_import_mappings_path(@import) %>
@@ -23,5 +23,5 @@
23
23
  <%= @mapping.import_id %>
24
24
  </p>
25
25
 
26
- <%= link_to 'Edit', edit_import_mapping_path(@import, @mapping) %> |
27
- <%= link_to 'Back', import_mappings_path(@import) %>
26
+ <%= link_to 'Edit', edit_admin_import_mapping_path(@import, @mapping) %> |
27
+ <%= link_to 'Back', admin_import_mappings_path(@import) %>
@@ -1,4 +1,4 @@
1
- <%- @page_title = "GEOMG - Notifications" %>
1
+ <%- @page_title = "GBL♦Admin - Notifications" %>
2
2
 
3
3
  <h1 style="width:100%;">
4
4
  <%= t('dictionary.notifications') %>
@@ -9,7 +9,7 @@
9
9
  <% if @pagy %>
10
10
  <h6>
11
11
  <span class='float-left mt-3'>
12
- <%== pagy_info(@pagy, 'downloads'.pluralize(@pagy.count)) %>
12
+ <%== pagy_info(@pagy) %>
13
13
  </span>
14
14
  <span class='float-right'>
15
15
  <%== pagy_bootstrap_nav(@pagy) %>
@@ -42,7 +42,7 @@
42
42
  <% if @pagy %>
43
43
  <h6>
44
44
  <span class='float-left mt-3'>
45
- <%== pagy_info(@pagy, 'downloads'.pluralize(@pagy.count)) %>
45
+ <%== pagy_info(@pagy) %>
46
46
  </span>
47
47
  <span class='float-right'>
48
48
  <%== pagy_bootstrap_nav(@pagy) %>
@@ -1,4 +1,4 @@
1
- <%- @page_title= "Search" %>
1
+ <%- @page_title= "GBL♦Admin - Search" %>
2
2
 
3
3
  <h1 style="width:100%; margin-bottom:2rem;">
4
4
  Advanced Search
@@ -6,7 +6,7 @@
6
6
 
7
7
  <div class="row">
8
8
  <div id="search-form" class="col-8">
9
- <%= form_tag(documents_path, { method: :get, class: "my-2 my-lg-0" }) do %>
9
+ <%= form_tag(admin_documents_path, { method: :get, class: "my-2 my-lg-0" }) do %>
10
10
  <input name="q" autofocus class="form-control mr-sm-8" type="search" placeholder="Search documents" aria-label="Search" value="<%= params[:q] ? params[:q] : ''%>">
11
11
 
12
12
  <div id="facet-limits" class="col-md-12 mt-4">
@@ -1,6 +1,6 @@
1
1
  <nav class="navbar fixed-top navbar-expand-lg navbar-light bg-light">
2
- <a class="navbar-brand" href="<%=root_url%>">
3
- <strong>G&middot;E&middot;O&middot;M&middot;G</strong>
2
+ <a class="navbar-brand gbl-admin" href="<%=admin_documents_url%>">
3
+ <strong>GBL♦Admin</strong>
4
4
  </a>
5
5
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
6
6
  <span class="navbar-toggler-icon"></span>
@@ -24,7 +24,7 @@
24
24
  <span class="sr-only">Toggle Dropdown</span>
25
25
  </button>
26
26
  <div class="dropdown-menu">
27
- <%= link_to "Advanced", admin_advanced_search_path, { class: 'dropdown-item' } %>
27
+ <%= link_to "Advanced", admin_search_path, { class: 'dropdown-item' } %>
28
28
  </div>
29
29
  </div>
30
30
  </div>
@@ -32,6 +32,11 @@
32
32
 
33
33
  <div class="collapse navbar-collapse" id="navbarSupportedContent">
34
34
  <ul class="navbar-nav flex-row ml-md-auto d-none d-md-flex">
35
+ <li class="nav-item">
36
+ <%= link_to root_url, { class: 'nav-link' } do %>
37
+ GeoBlacklight Home
38
+ <% end %>
39
+ </li>
35
40
  <% if user_signed_in? %>
36
41
  <li class="nav-item">
37
42
  <%= link_to admin_notifications_url, { class: 'nav-link' } do %>
@@ -0,0 +1,3 @@
1
+ <%- if current_user && current_user.admin? %>
2
+ <%= link_to "GBL♦Admin | Edit Record", edit_admin_document_path(@document), { class: "btn btn-warning btn-block" } %>
3
+ <%- end %>
data/config/routes.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  GeoblacklightAdmin::Engine.routes.draw do
2
4
  # GBL‡ADMIN
3
5
  resources :bulk_actions do
@@ -23,14 +25,14 @@ GeoblacklightAdmin::Engine.routes.draw do
23
25
  patch :run, on: :member
24
26
  patch :revert, on: :member
25
27
  end
26
-
28
+
27
29
  # Imports
28
30
  resources :imports do
29
31
  resources :mappings
30
32
  resources :import_documents, only: [:show]
31
33
  patch :run, on: :member
32
34
  end
33
-
35
+
34
36
  # Elements
35
37
  resources :elements do
36
38
  post :sort, on: :collection
@@ -44,7 +46,7 @@ GeoblacklightAdmin::Engine.routes.draw do
44
46
  resources :form_group, path: :form_elements, controller: :form_elements
45
47
  resources :form_control, path: :form_elements, controller: :form_elements
46
48
  resources :form_feature, path: :form_elements, controller: :form_elements
47
-
49
+
48
50
  # Notifications
49
51
  resources :notifications do
50
52
  put "batch", on: :collection
@@ -56,107 +58,109 @@ GeoblacklightAdmin::Engine.routes.draw do
56
58
  # Bookmarks
57
59
  resources :bookmarks
58
60
  delete "/bookmarks", to: "bookmarks#destroy", as: :bookmarks_destroy_by_fkeys
59
-
61
+
60
62
  # AdvancedSearch controller
61
- get '/advanced_search' => 'advanced_search#index', constraints: lambda { |req| req.format == :json }
62
- get '/advanced_search/facets' => 'advanced_search#facets', constraints: lambda { |req| req.format == :json }
63
- get '/advanced_search/facet/:id' => 'advanced_search#facet', constraints: lambda { |req| req.format == :json }, as: 'advanced_search_facet'
63
+ get "/advanced_search" => "advanced_search#index", :constraints => ->(req) { req.format == :json }
64
+ get "/advanced_search/facets" => "advanced_search#facets", :constraints => ->(req) { req.format == :json }
65
+ get "/advanced_search/facet/:id" => "advanced_search#facet", :constraints => lambda { |req|
66
+ req.format == :json
67
+ }, :as => "advanced_search_facet"
64
68
 
65
69
  # Ids controller
66
- get '/api/ids' => 'ids#index', constraints: lambda { |req| req.format == :json }
67
- get '/api' => 'api#index', constraints: lambda { |req| req.format == :json }
68
- get '/api/fetch' => 'api#fetch', constraints: lambda { |req| req.format == :json }
69
- get '/api/facet/:id' => 'api#facet', constraints: lambda { |req| req.format == :json }
70
+ get "/api/ids" => "ids#index", :constraints => ->(req) { req.format == :json }
71
+ get "/api" => "api#index", :constraints => ->(req) { req.format == :json }
72
+ get "/api/fetch" => "api#fetch", :constraints => ->(req) { req.format == :json }
73
+ get "/api/facet/:id" => "api#facet", :constraints => ->(req) { req.format == :json }
70
74
 
71
75
  resources :documents do
72
76
  get "versions"
73
-
77
+
74
78
  resources :document_accesses, path: "access" do
75
79
  collection do
76
80
  get "import"
77
81
  post "import"
78
-
82
+
79
83
  get "destroy_all"
80
84
  post "destroy_all"
81
85
  end
82
86
  end
83
-
87
+
84
88
  resources :document_downloads, path: "downloads" do
85
89
  collection do
86
90
  get "import"
87
91
  post "import"
88
-
92
+
89
93
  get "destroy_all"
90
94
  post "destroy_all"
91
95
  end
92
96
  end
93
-
97
+
94
98
  resources :document_assets, path: "assets" do
95
99
  collection do
96
100
  get "display_attach_form"
97
101
  post "attach_files"
98
-
102
+
99
103
  get "destroy_all"
100
104
  post "destroy_all"
101
105
  end
102
106
  end
103
-
107
+
104
108
  collection do
105
109
  get "fetch"
106
110
  end
107
111
  end
108
-
112
+
109
113
  resources :document_accesses, path: "access" do
110
114
  collection do
111
115
  get "import"
112
116
  post "import"
113
-
117
+
114
118
  get "destroy_all"
115
119
  post "destroy_all"
116
120
  end
117
121
  end
118
-
122
+
119
123
  resources :document_downloads, path: "downloads" do
120
124
  collection do
121
125
  get "import"
122
126
  post "import"
123
-
127
+
124
128
  get "destroy_all"
125
129
  post "destroy_all"
126
130
  end
127
131
  end
128
-
132
+
129
133
  resources :document_assets, path: "assets" do
130
134
  collection do
131
135
  get "display_attach_form"
132
136
  post "attach_files"
133
-
137
+
134
138
  get "destroy_all"
135
139
  post "destroy_all"
136
140
  end
137
141
  end
138
-
142
+
139
143
  get "/documents/:id/ingest", to: "document_assets#display_attach_form", as: "asset_ingest"
140
144
  post "/documents/:id/ingest", to: "document_assets#attach_files"
141
- #mount Kithe::AssetUploader.upload_endpoint(:cache) => "/direct_upload", :as => :direct_app_upload
142
-
145
+ # mount Kithe::AssetUploader.upload_endpoint(:cache) => "/direct_upload", :as => :direct_app_upload
146
+
143
147
  resources :collections, except: [:show]
144
-
148
+
145
149
  # Note "assets" is Rails reserved word for routing, oops. So we use
146
150
  # asset_files.
147
- resources :assets, path: "asset_files", except: [:new, :create] do
151
+ resources :assets, path: "asset_files", except: %i[new create] do
148
152
  member do
149
153
  put "convert_to_child_work"
150
154
  end
151
155
  end
152
-
156
+
153
157
  # @TODO
154
158
  # mount Qa::Engine => "/authorities"
155
159
  mount ActionCable.server => "/cable"
156
-
160
+
157
161
  # @TODO
158
162
  # authenticate :user, ->(user) { user } do
159
- # mount Blazer::Engine, at: "blazer"
163
+ # mount Blazer::Engine, at: "blazer"
160
164
  # end
161
165
  end
162
- end
166
+ end