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
@@ -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