pages_core 3.7.0 → 3.8.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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -2
  3. data/app/assets/builds/pages_core/admin-dist.js +55 -0
  4. data/app/assets/stylesheets/pages/admin/components/image_editor.scss +1 -0
  5. data/app/assets/stylesheets/pages/admin/components/image_grid.scss +33 -5
  6. data/app/assets/stylesheets/pages/admin/components/layout.scss +2 -1
  7. data/app/assets/stylesheets/pages/admin/components/login.scss +6 -0
  8. data/app/assets/stylesheets/pages/admin/components/tabs.scss +5 -0
  9. data/app/assets/stylesheets/pages/admin/components/tag_editor.scss +13 -7
  10. data/app/assets/stylesheets/pages/admin/controllers/pages.scss +13 -5
  11. data/app/assets/stylesheets/pages/admin.scss +0 -1
  12. data/app/controller_dummies/admin/admin_controller.rb +1 -1
  13. data/app/controller_dummies/application_controller.rb +1 -1
  14. data/app/controller_dummies/attachments_controller.rb +1 -1
  15. data/app/controller_dummies/frontend_controller.rb +1 -1
  16. data/app/controller_dummies/images_controller.rb +1 -1
  17. data/app/controller_dummies/page_files_controller.rb +1 -1
  18. data/app/controller_dummies/pages_controller.rb +1 -1
  19. data/app/controller_dummies/sitemaps_controller.rb +1 -1
  20. data/app/controllers/admin/attachments_controller.rb +1 -1
  21. data/app/controllers/admin/images_controller.rb +10 -7
  22. data/app/controllers/concerns/pages_core/authentication.rb +9 -4
  23. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +5 -0
  24. data/app/controllers/pages_core/frontend/pages_controller.rb +5 -2
  25. data/app/controllers/sessions_controller.rb +1 -1
  26. data/app/formatters/pages_core/link_renderer.rb +2 -2
  27. data/app/helpers/application_helper.rb +1 -1
  28. data/app/helpers/frontend_helper.rb +1 -1
  29. data/app/helpers/pages_core/admin/content_tabs_helper.rb +5 -2
  30. data/app/helpers/pages_core/admin/image_uploads_helper.rb +2 -3
  31. data/app/helpers/pages_core/admin/tag_editor_helper.rb +9 -39
  32. data/app/helpers/pages_core/head_tags_helper.rb +11 -20
  33. data/app/helpers/pages_core/open_graph_tags_helper.rb +1 -1
  34. data/app/javascript/admin-dist.js +2 -0
  35. data/app/javascript/components/Attachments/Attachment.jsx +121 -0
  36. data/app/javascript/components/Attachments/AttachmentEditor.jsx +116 -0
  37. data/app/javascript/components/Attachments/Placeholder.jsx +10 -0
  38. data/app/javascript/components/Attachments.jsx +165 -0
  39. data/app/{assets/javascripts/pages/admin/components/date_range_select.jsx → javascript/components/DateRangeSelect.jsx} +16 -5
  40. data/app/javascript/components/EditableImage.jsx +61 -0
  41. data/app/{assets/javascripts/pages/admin/components/file_upload_button.jsx → javascript/components/FileUploadButton.jsx} +11 -1
  42. data/app/{assets/javascripts/pages/admin/components/focal_point.jsx → javascript/components/ImageCropper/FocalPoint.jsx} +12 -1
  43. data/app/javascript/components/ImageCropper/Image.jsx +65 -0
  44. data/app/javascript/components/ImageCropper/Toolbar.jsx +73 -0
  45. data/app/javascript/components/ImageCropper/useCrop.js +199 -0
  46. data/app/javascript/components/ImageCropper.jsx +90 -0
  47. data/app/javascript/components/ImageEditor/Form.jsx +98 -0
  48. data/app/javascript/components/ImageEditor.jsx +62 -0
  49. data/app/javascript/components/ImageGrid/DragElement.jsx +30 -0
  50. data/app/javascript/components/ImageGrid/FilePlaceholder.jsx +9 -0
  51. data/app/javascript/components/ImageGrid/GridImage.jsx +103 -0
  52. data/app/javascript/components/ImageGrid/Placeholder.jsx +23 -0
  53. data/app/javascript/components/ImageGrid.jsx +257 -0
  54. data/app/javascript/components/ImageUploader.jsx +171 -0
  55. data/app/{assets/javascripts/pages/admin/components/modal.jsx → javascript/components/Modal.jsx} +13 -2
  56. data/app/javascript/components/ModalStore.jsx +12 -0
  57. data/app/{assets/javascripts/pages/admin/components/page_dates.jsx → javascript/components/PageDates.jsx} +11 -1
  58. data/app/{assets/javascripts/pages/admin/components/page_files.jsx → javascript/components/PageFiles.jsx} +11 -2
  59. data/app/{assets/javascripts/pages/admin/components/page_images.jsx → javascript/components/PageImages.jsx} +11 -2
  60. data/app/{assets/javascripts/pages/admin/components/page_tree_store.jsx → javascript/components/PageTree.jsx} +127 -137
  61. data/app/{assets/javascripts/pages/admin/components/page_tree.jsx → javascript/components/PageTreeDraggable.jsx} +35 -29
  62. data/app/{assets/javascripts/pages/admin/components/page_tree_node.jsx → javascript/components/PageTreeNode.jsx} +35 -20
  63. data/app/javascript/components/RichTextArea.jsx +213 -0
  64. data/app/javascript/components/RichTextToolbarButton.jsx +20 -0
  65. data/app/javascript/components/TagEditor/AddTagForm.jsx +42 -0
  66. data/app/javascript/components/TagEditor/Tag.jsx +32 -0
  67. data/app/javascript/components/TagEditor.jsx +61 -0
  68. data/app/javascript/components/Toast.jsx +72 -0
  69. data/app/javascript/components/ToastStore.jsx +14 -0
  70. data/app/javascript/components/drag/draggedOrder.js +51 -0
  71. data/app/javascript/components/drag/useDragCollection.js +84 -0
  72. data/app/javascript/components/drag/useDragUploader.js +112 -0
  73. data/app/javascript/components/drag/useDraggable.js +17 -0
  74. data/app/javascript/components/drag.js +6 -0
  75. data/app/javascript/components.js +14 -0
  76. data/app/javascript/controllers/EditPageController.js +20 -0
  77. data/app/javascript/controllers/LoginController.js +29 -0
  78. data/app/javascript/controllers/MainController.js +65 -0
  79. data/app/javascript/controllers/PageOptionsController.js +62 -0
  80. data/app/javascript/features/RichText.jsx +34 -0
  81. data/app/javascript/hooks.js +2 -0
  82. data/app/javascript/index.js +33 -0
  83. data/app/{assets/javascripts/pages/admin/lib/tree.jsx → javascript/lib/Tree.js} +55 -54
  84. data/app/javascript/lib/copyToClipboard.js +13 -0
  85. data/app/javascript/lib/readyHandler.js +22 -0
  86. data/app/javascript/lib/request.js +36 -0
  87. data/app/models/concerns/pages_core/page_model/images.rb +3 -1
  88. data/app/models/concerns/pages_core/page_model/searchable.rb +19 -0
  89. data/app/models/concerns/pages_core/searchable_document.rb +71 -0
  90. data/app/models/concerns/pages_core/taggable.rb +27 -12
  91. data/app/models/page.rb +2 -0
  92. data/app/models/page_exporter.rb +2 -2
  93. data/app/models/page_image.rb +0 -2
  94. data/app/models/role.rb +1 -1
  95. data/app/models/search_document.rb +72 -0
  96. data/app/models/tag.rb +1 -0
  97. data/app/models/user.rb +1 -1
  98. data/app/{serializers/admin/attachment_serializer.rb → resources/admin/attachment_resource.rb} +6 -5
  99. data/app/{serializers/admin/image_serializer.rb → resources/admin/image_resource.rb} +9 -9
  100. data/app/resources/admin/page_file_resource.rb +10 -0
  101. data/app/{serializers/admin/page_image_serializer.rb → resources/admin/page_image_resource.rb} +4 -2
  102. data/app/resources/export/attachment_resource.rb +10 -0
  103. data/app/resources/export/page_image_resource.rb +45 -0
  104. data/app/resources/export/page_resource.rb +42 -0
  105. data/app/{serializers/page_image_serializer.rb → resources/page_image_resource.rb} +8 -16
  106. data/app/resources/page_resource.rb +33 -0
  107. data/app/services/pages_core/destroy_invite_service.rb +2 -2
  108. data/app/services/pages_core/invite_service.rb +2 -2
  109. data/app/views/admin/pages/_edit_content.html.erb +1 -1
  110. data/app/views/admin/pages/_edit_files.html.erb +1 -5
  111. data/app/views/admin/pages/_edit_images.html.erb +1 -5
  112. data/app/views/admin/pages/_edit_options.html.erb +74 -55
  113. data/app/views/admin/pages/_form.html.erb +19 -0
  114. data/app/views/admin/pages/edit.html.erb +35 -61
  115. data/app/views/admin/pages/index.html.erb +0 -1
  116. data/app/views/admin/pages/new.html.erb +32 -32
  117. data/app/views/admin/users/_access_control.html.erb +5 -1
  118. data/app/views/admin/users/login.html.erb +12 -4
  119. data/app/views/feeds/pages.rss.builder +1 -2
  120. data/app/views/layouts/admin/_header.html.erb +1 -1
  121. data/app/views/layouts/admin/_page_header.html.erb +33 -0
  122. data/app/views/layouts/admin.html.erb +23 -42
  123. data/app/views/pages_core/_google_analytics.html.erb +8 -0
  124. data/db/migrate/20180625154059_enable_search_extensions.rb +10 -0
  125. data/db/migrate/20210209151400_create_search_configurations.rb +35 -0
  126. data/db/migrate/20210210235200_create_search_documents.rb +74 -0
  127. data/lib/pages_core/engine.rb +1 -5
  128. data/lib/pages_core/templates/block_configuration.rb +1 -1
  129. data/lib/pages_core/templates/configuration_handler.rb +1 -1
  130. data/lib/pages_core/version.rb +1 -1
  131. data/lib/pages_core.rb +3 -5
  132. data/lib/rails/generators/pages_core/frontend/frontend_generator.rb +0 -7
  133. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +2 -2
  134. metadata +101 -115
  135. data/app/assets/javascripts/pages/admin/components/attachment.jsx +0 -130
  136. data/app/assets/javascripts/pages/admin/components/attachment_editor.jsx +0 -131
  137. data/app/assets/javascripts/pages/admin/components/attachments.jsx +0 -211
  138. data/app/assets/javascripts/pages/admin/components/drag_uploader.jsx +0 -174
  139. data/app/assets/javascripts/pages/admin/components/editable_image.jsx +0 -57
  140. data/app/assets/javascripts/pages/admin/components/grid_image.jsx +0 -124
  141. data/app/assets/javascripts/pages/admin/components/image_editor.jsx +0 -496
  142. data/app/assets/javascripts/pages/admin/components/image_grid.jsx +0 -306
  143. data/app/assets/javascripts/pages/admin/components/image_uploader.jsx +0 -176
  144. data/app/assets/javascripts/pages/admin/components/modal_store.jsx +0 -20
  145. data/app/assets/javascripts/pages/admin/components/rich_text_area.jsx +0 -64
  146. data/app/assets/javascripts/pages/admin/components/rich_text_toolbar.jsx +0 -91
  147. data/app/assets/javascripts/pages/admin/components/toast.jsx +0 -34
  148. data/app/assets/javascripts/pages/admin/components/toast_store.jsx +0 -52
  149. data/app/assets/javascripts/pages/admin/components.jsx +0 -2
  150. data/app/assets/javascripts/pages/admin/features/content_tabs.jsx +0 -72
  151. data/app/assets/javascripts/pages/admin/features/edit_page.jsx +0 -97
  152. data/app/assets/javascripts/pages/admin/features/rich_text.jsx +0 -14
  153. data/app/assets/javascripts/pages/admin/features/tag_editor.jsx +0 -160
  154. data/app/assets/javascripts/pages/admin.jsx +0 -17
  155. data/app/assets/javascripts/pages/login_form.jsx +0 -21
  156. data/app/serializers/admin/page_file_serializer.rb +0 -8
  157. data/app/serializers/page_export_serializer.rb +0 -32
  158. data/app/serializers/page_file_export_serializer.rb +0 -6
  159. data/app/serializers/page_image_export_serializer.rb +0 -42
  160. data/app/serializers/page_serializer.rb +0 -23
  161. data/app/views/layouts/admin/_analytics.html.erb +0 -16
  162. data/lib/rails/generators/pages_core/frontend/templates/application.js.erb +0 -15
  163. data/vendor/assets/javascripts/ReactCrop.min.js +0 -1
  164. data/vendor/assets/javascripts/reflux.min.js +0 -1
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pages_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.0
4
+ version: 3.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-10 00:00:00.000000000 Z
11
+ date: 2021-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -142,14 +142,14 @@ dependencies:
142
142
  requirements:
143
143
  - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: '5.0'
145
+ version: '6.0'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: '5.0'
152
+ version: '6.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: actionpack-page_caching
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -165,19 +165,19 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: 1.1.0
167
167
  - !ruby/object:Gem::Dependency
168
- name: active_model_serializers
168
+ name: alba
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 0.10.12
173
+ version: 1.3.0
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 0.10.12
180
+ version: 1.3.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: bcrypt
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -224,14 +224,14 @@ dependencies:
224
224
  name: dynamic_image
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - "~>"
227
+ - - ">="
228
228
  - !ruby/object:Gem::Version
229
229
  version: '2.0'
230
230
  type: :runtime
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
- - - "~>"
234
+ - - ">="
235
235
  - !ruby/object:Gem::Version
236
236
  version: '2.0'
237
237
  - !ruby/object:Gem::Dependency
@@ -262,6 +262,20 @@ dependencies:
262
262
  - - ">="
263
263
  - !ruby/object:Gem::Version
264
264
  version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: pg_search
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :runtime
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
265
279
  - !ruby/object:Gem::Dependency
266
280
  name: progress_bar
267
281
  requirement: !ruby/object:Gem::Requirement
@@ -322,16 +336,16 @@ dependencies:
322
336
  name: will_paginate
323
337
  requirement: !ruby/object:Gem::Requirement
324
338
  requirements:
325
- - - "~>"
339
+ - - ">="
326
340
  - !ruby/object:Gem::Version
327
- version: 3.1.0
341
+ version: '0'
328
342
  type: :runtime
329
343
  prerelease: false
330
344
  version_requirements: !ruby/object:Gem::Requirement
331
345
  requirements:
332
- - - "~>"
346
+ - - ">="
333
347
  - !ruby/object:Gem::Version
334
- version: 3.1.0
348
+ version: '0'
335
349
  - !ruby/object:Gem::Dependency
336
350
  name: rails-i18n
337
351
  requirement: !ruby/object:Gem::Requirement
@@ -346,20 +360,6 @@ dependencies:
346
360
  - - ">="
347
361
  - !ruby/object:Gem::Version
348
362
  version: 5.0.0
349
- - !ruby/object:Gem::Dependency
350
- name: coffee-rails
351
- requirement: !ruby/object:Gem::Requirement
352
- requirements:
353
- - - "~>"
354
- - !ruby/object:Gem::Version
355
- version: '4.2'
356
- type: :runtime
357
- prerelease: false
358
- version_requirements: !ruby/object:Gem::Requirement
359
- requirements:
360
- - - "~>"
361
- - !ruby/object:Gem::Version
362
- version: '4.2'
363
363
  - !ruby/object:Gem::Dependency
364
364
  name: jbuilder
365
365
  requirement: !ruby/object:Gem::Requirement
@@ -374,20 +374,6 @@ dependencies:
374
374
  - - "~>"
375
375
  - !ruby/object:Gem::Version
376
376
  version: '2.5'
377
- - !ruby/object:Gem::Dependency
378
- name: jquery-rails
379
- requirement: !ruby/object:Gem::Requirement
380
- requirements:
381
- - - ">="
382
- - !ruby/object:Gem::Version
383
- version: '0'
384
- type: :runtime
385
- prerelease: false
386
- version_requirements: !ruby/object:Gem::Requirement
387
- requirements:
388
- - - ">="
389
- - !ruby/object:Gem::Version
390
- version: '0'
391
377
  - !ruby/object:Gem::Dependency
392
378
  name: sass-rails
393
379
  requirement: !ruby/object:Gem::Requirement
@@ -402,20 +388,6 @@ dependencies:
402
388
  - - ">="
403
389
  - !ruby/object:Gem::Version
404
390
  version: '5.0'
405
- - !ruby/object:Gem::Dependency
406
- name: uglifier
407
- requirement: !ruby/object:Gem::Requirement
408
- requirements:
409
- - - ">="
410
- - !ruby/object:Gem::Version
411
- version: 1.3.0
412
- type: :runtime
413
- prerelease: false
414
- version_requirements: !ruby/object:Gem::Requirement
415
- requirements:
416
- - - ">="
417
- - !ruby/object:Gem::Version
418
- version: 1.3.0
419
391
  - !ruby/object:Gem::Dependency
420
392
  name: font-awesome-rails
421
393
  requirement: !ruby/object:Gem::Requirement
@@ -430,20 +402,6 @@ dependencies:
430
402
  - - "~>"
431
403
  - !ruby/object:Gem::Version
432
404
  version: '4.7'
433
- - !ruby/object:Gem::Dependency
434
- name: jquery-ui-rails
435
- requirement: !ruby/object:Gem::Requirement
436
- requirements:
437
- - - "~>"
438
- - !ruby/object:Gem::Version
439
- version: 6.0.0
440
- type: :runtime
441
- prerelease: false
442
- version_requirements: !ruby/object:Gem::Requirement
443
- requirements:
444
- - - "~>"
445
- - !ruby/object:Gem::Version
446
- version: 6.0.0
447
405
  - !ruby/object:Gem::Dependency
448
406
  name: react-rails
449
407
  requirement: !ruby/object:Gem::Requirement
@@ -537,6 +495,7 @@ extra_rdoc_files: []
537
495
  files:
538
496
  - README.md
539
497
  - Rakefile
498
+ - app/assets/builds/pages_core/admin-dist.js
540
499
  - app/assets/images/pages/admin/drag-icon.png
541
500
  - app/assets/images/pages/admin/icon.png
542
501
  - app/assets/images/pages/admin/image-editor-bg.png
@@ -549,38 +508,6 @@ files:
549
508
  - app/assets/images/pages/admin/warning-icon.gif
550
509
  - app/assets/images/pages/favicon.gif
551
510
  - app/assets/images/pages/feed-icon-14x14.png
552
- - app/assets/javascripts/pages/admin.jsx
553
- - app/assets/javascripts/pages/admin/components.jsx
554
- - app/assets/javascripts/pages/admin/components/attachment.jsx
555
- - app/assets/javascripts/pages/admin/components/attachment_editor.jsx
556
- - app/assets/javascripts/pages/admin/components/attachments.jsx
557
- - app/assets/javascripts/pages/admin/components/date_range_select.jsx
558
- - app/assets/javascripts/pages/admin/components/drag_uploader.jsx
559
- - app/assets/javascripts/pages/admin/components/editable_image.jsx
560
- - app/assets/javascripts/pages/admin/components/file_upload_button.jsx
561
- - app/assets/javascripts/pages/admin/components/focal_point.jsx
562
- - app/assets/javascripts/pages/admin/components/grid_image.jsx
563
- - app/assets/javascripts/pages/admin/components/image_editor.jsx
564
- - app/assets/javascripts/pages/admin/components/image_grid.jsx
565
- - app/assets/javascripts/pages/admin/components/image_uploader.jsx
566
- - app/assets/javascripts/pages/admin/components/modal.jsx
567
- - app/assets/javascripts/pages/admin/components/modal_store.jsx
568
- - app/assets/javascripts/pages/admin/components/page_dates.jsx
569
- - app/assets/javascripts/pages/admin/components/page_files.jsx
570
- - app/assets/javascripts/pages/admin/components/page_images.jsx
571
- - app/assets/javascripts/pages/admin/components/page_tree.jsx
572
- - app/assets/javascripts/pages/admin/components/page_tree_node.jsx
573
- - app/assets/javascripts/pages/admin/components/page_tree_store.jsx
574
- - app/assets/javascripts/pages/admin/components/rich_text_area.jsx
575
- - app/assets/javascripts/pages/admin/components/rich_text_toolbar.jsx
576
- - app/assets/javascripts/pages/admin/components/toast.jsx
577
- - app/assets/javascripts/pages/admin/components/toast_store.jsx
578
- - app/assets/javascripts/pages/admin/features/content_tabs.jsx
579
- - app/assets/javascripts/pages/admin/features/edit_page.jsx
580
- - app/assets/javascripts/pages/admin/features/rich_text.jsx
581
- - app/assets/javascripts/pages/admin/features/tag_editor.jsx
582
- - app/assets/javascripts/pages/admin/lib/tree.jsx
583
- - app/assets/javascripts/pages/login_form.jsx
584
511
  - app/assets/stylesheets/pages/admin.scss
585
512
  - app/assets/stylesheets/pages/admin/components/archive.scss
586
513
  - app/assets/stylesheets/pages/admin/components/attachments.scss
@@ -598,6 +525,7 @@ files:
598
525
  - app/assets/stylesheets/pages/admin/components/page_tree.scss
599
526
  - app/assets/stylesheets/pages/admin/components/pagination.scss
600
527
  - app/assets/stylesheets/pages/admin/components/sidebar.scss
528
+ - app/assets/stylesheets/pages/admin/components/tabs.scss
601
529
  - app/assets/stylesheets/pages/admin/components/tag_editor.scss
602
530
  - app/assets/stylesheets/pages/admin/components/textarea.scss
603
531
  - app/assets/stylesheets/pages/admin/components/toast.scss
@@ -670,6 +598,59 @@ files:
670
598
  - app/helpers/pages_core/meta_tags_helper.rb
671
599
  - app/helpers/pages_core/open_graph_tags_helper.rb
672
600
  - app/helpers/pages_core/page_path_helper.rb
601
+ - app/javascript/admin-dist.js
602
+ - app/javascript/components.js
603
+ - app/javascript/components/Attachments.jsx
604
+ - app/javascript/components/Attachments/Attachment.jsx
605
+ - app/javascript/components/Attachments/AttachmentEditor.jsx
606
+ - app/javascript/components/Attachments/Placeholder.jsx
607
+ - app/javascript/components/DateRangeSelect.jsx
608
+ - app/javascript/components/EditableImage.jsx
609
+ - app/javascript/components/FileUploadButton.jsx
610
+ - app/javascript/components/ImageCropper.jsx
611
+ - app/javascript/components/ImageCropper/FocalPoint.jsx
612
+ - app/javascript/components/ImageCropper/Image.jsx
613
+ - app/javascript/components/ImageCropper/Toolbar.jsx
614
+ - app/javascript/components/ImageCropper/useCrop.js
615
+ - app/javascript/components/ImageEditor.jsx
616
+ - app/javascript/components/ImageEditor/Form.jsx
617
+ - app/javascript/components/ImageGrid.jsx
618
+ - app/javascript/components/ImageGrid/DragElement.jsx
619
+ - app/javascript/components/ImageGrid/FilePlaceholder.jsx
620
+ - app/javascript/components/ImageGrid/GridImage.jsx
621
+ - app/javascript/components/ImageGrid/Placeholder.jsx
622
+ - app/javascript/components/ImageUploader.jsx
623
+ - app/javascript/components/Modal.jsx
624
+ - app/javascript/components/ModalStore.jsx
625
+ - app/javascript/components/PageDates.jsx
626
+ - app/javascript/components/PageFiles.jsx
627
+ - app/javascript/components/PageImages.jsx
628
+ - app/javascript/components/PageTree.jsx
629
+ - app/javascript/components/PageTreeDraggable.jsx
630
+ - app/javascript/components/PageTreeNode.jsx
631
+ - app/javascript/components/RichTextArea.jsx
632
+ - app/javascript/components/RichTextToolbarButton.jsx
633
+ - app/javascript/components/TagEditor.jsx
634
+ - app/javascript/components/TagEditor/AddTagForm.jsx
635
+ - app/javascript/components/TagEditor/Tag.jsx
636
+ - app/javascript/components/Toast.jsx
637
+ - app/javascript/components/ToastStore.jsx
638
+ - app/javascript/components/drag.js
639
+ - app/javascript/components/drag/draggedOrder.js
640
+ - app/javascript/components/drag/useDragCollection.js
641
+ - app/javascript/components/drag/useDragUploader.js
642
+ - app/javascript/components/drag/useDraggable.js
643
+ - app/javascript/controllers/EditPageController.js
644
+ - app/javascript/controllers/LoginController.js
645
+ - app/javascript/controllers/MainController.js
646
+ - app/javascript/controllers/PageOptionsController.js
647
+ - app/javascript/features/RichText.jsx
648
+ - app/javascript/hooks.js
649
+ - app/javascript/index.js
650
+ - app/javascript/lib/Tree.js
651
+ - app/javascript/lib/copyToClipboard.js
652
+ - app/javascript/lib/readyHandler.js
653
+ - app/javascript/lib/request.js
673
654
  - app/jobs/pages_core/autopublish_job.rb
674
655
  - app/jobs/pages_core/sweep_cache_job.rb
675
656
  - app/mailers/admin_mailer.rb
@@ -685,10 +666,12 @@ files:
685
666
  - app/models/concerns/pages_core/page_model/localizable.rb
686
667
  - app/models/concerns/pages_core/page_model/pathable.rb
687
668
  - app/models/concerns/pages_core/page_model/redirectable.rb
669
+ - app/models/concerns/pages_core/page_model/searchable.rb
688
670
  - app/models/concerns/pages_core/page_model/sortable.rb
689
671
  - app/models/concerns/pages_core/page_model/status.rb
690
672
  - app/models/concerns/pages_core/page_model/templateable.rb
691
673
  - app/models/concerns/pages_core/page_model/tree.rb
674
+ - app/models/concerns/pages_core/searchable_document.rb
692
675
  - app/models/concerns/pages_core/sweepable.rb
693
676
  - app/models/concerns/pages_core/taggable.rb
694
677
  - app/models/image.rb
@@ -703,6 +686,7 @@ files:
703
686
  - app/models/page_path.rb
704
687
  - app/models/password_reset_token.rb
705
688
  - app/models/role.rb
689
+ - app/models/search_document.rb
706
690
  - app/models/tag.rb
707
691
  - app/models/tagging.rb
708
692
  - app/models/user.rb
@@ -712,15 +696,15 @@ files:
712
696
  - app/policies/page_policy.rb
713
697
  - app/policies/policy.rb
714
698
  - app/policies/user_policy.rb
715
- - app/serializers/admin/attachment_serializer.rb
716
- - app/serializers/admin/image_serializer.rb
717
- - app/serializers/admin/page_file_serializer.rb
718
- - app/serializers/admin/page_image_serializer.rb
719
- - app/serializers/page_export_serializer.rb
720
- - app/serializers/page_file_export_serializer.rb
721
- - app/serializers/page_image_export_serializer.rb
722
- - app/serializers/page_image_serializer.rb
723
- - app/serializers/page_serializer.rb
699
+ - app/resources/admin/attachment_resource.rb
700
+ - app/resources/admin/image_resource.rb
701
+ - app/resources/admin/page_file_resource.rb
702
+ - app/resources/admin/page_image_resource.rb
703
+ - app/resources/export/attachment_resource.rb
704
+ - app/resources/export/page_image_resource.rb
705
+ - app/resources/export/page_resource.rb
706
+ - app/resources/page_image_resource.rb
707
+ - app/resources/page_resource.rb
724
708
  - app/services/pages_core/create_user_service.rb
725
709
  - app/services/pages_core/destroy_invite_service.rb
726
710
  - app/services/pages_core/invite_service.rb
@@ -732,6 +716,7 @@ files:
732
716
  - app/views/admin/pages/_edit_images.html.erb
733
717
  - app/views/admin/pages/_edit_metadata.html.erb
734
718
  - app/views/admin/pages/_edit_options.html.erb
719
+ - app/views/admin/pages/_form.html.erb
735
720
  - app/views/admin/pages/_list_item.html.erb
736
721
  - app/views/admin/pages/deleted.html.erb
737
722
  - app/views/admin/pages/edit.html.erb
@@ -759,13 +744,17 @@ files:
759
744
  - app/views/errors/_generic_help.html.erb
760
745
  - app/views/feeds/pages.rss.builder
761
746
  - app/views/layouts/admin.html.erb
762
- - app/views/layouts/admin/_analytics.html.erb
763
747
  - app/views/layouts/admin/_header.html.erb
748
+ - app/views/layouts/admin/_page_header.html.erb
764
749
  - app/views/layouts/errors.html.erb
750
+ - app/views/pages_core/_google_analytics.html.erb
765
751
  - app/views/sitemaps/show.xml.builder
766
752
  - config/locales/en.yml
767
753
  - config/routes.rb
768
754
  - db/migrate/20111219033112_create_pages_tables.rb
755
+ - db/migrate/20180625154059_enable_search_extensions.rb
756
+ - db/migrate/20210209151400_create_search_configurations.rb
757
+ - db/migrate/20210210235200_create_search_documents.rb
769
758
  - lib/pages_core.rb
770
759
  - lib/pages_core/admin_menu_item.rb
771
760
  - lib/pages_core/archive_finder.rb
@@ -795,7 +784,6 @@ files:
795
784
  - lib/pages_core/templates/template_configuration.rb
796
785
  - lib/pages_core/version.rb
797
786
  - lib/rails/generators/pages_core/frontend/frontend_generator.rb
798
- - lib/rails/generators/pages_core/frontend/templates/application.js.erb
799
787
  - lib/rails/generators/pages_core/frontend/templates/application.scss.erb
800
788
  - lib/rails/generators/pages_core/frontend/templates/base.scss.erb
801
789
  - lib/rails/generators/pages_core/frontend/templates/breakpoints.scss.erb
@@ -826,8 +814,6 @@ files:
826
814
  - lib/tasks/pages/export.rake
827
815
  - lib/tasks/pages/page_paths.rake
828
816
  - template.rb
829
- - vendor/assets/javascripts/ReactCrop.min.js
830
- - vendor/assets/javascripts/reflux.min.js
831
817
  - vendor/assets/stylesheets/ReactCrop.css
832
818
  homepage: ''
833
819
  licenses: []
@@ -847,7 +833,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
847
833
  - !ruby/object:Gem::Version
848
834
  version: '0'
849
835
  requirements: []
850
- rubygems_version: 3.1.4
836
+ rubygems_version: 3.2.22
851
837
  signing_key:
852
838
  specification_version: 4
853
839
  summary: Pages Core
@@ -1,130 +0,0 @@
1
- class Attachment extends React.Component {
2
- constructor(props) {
3
- super(props);
4
- this.copyEmbed = this.copyEmbed.bind(this);
5
- this.editAttachment = this.editAttachment.bind(this);
6
- this.deleteRecord = this.deleteRecord.bind(this);
7
- this.dragStart = this.dragStart.bind(this);
8
- }
9
-
10
- copyEmbed(evt) {
11
- let attachment = this.props.record.attachment;
12
- evt.preventDefault();
13
- const el = document.createElement("textarea");
14
- el.value = `[attachment:${attachment.id}]`;
15
- document.body.appendChild(el);
16
- el.select();
17
- document.execCommand("copy");
18
- document.body.removeChild(el);
19
- ToastActions.notice("Embed code copied to clipboard");
20
- }
21
-
22
- deleteRecord(evt) {
23
- evt.preventDefault();
24
- if (this.props.deleteRecord) {
25
- this.props.deleteRecord(this.props.record);
26
- }
27
- }
28
-
29
- dragStart(evt) {
30
- evt.preventDefault();
31
- evt.stopPropagation();
32
- if (this.props.startDrag) {
33
- this.props.startDrag(evt, this.props.record);
34
- }
35
- }
36
-
37
- description() {
38
- let attachment = this.props.record.attachment;
39
- if (attachment.description && attachment.description[this.props.locale]) {
40
- return attachment.description[this.props.locale];
41
- }
42
- return null;
43
- }
44
-
45
- name() {
46
- let attachment = this.props.record.attachment;
47
- if (attachment.name && attachment.name[this.props.locale]) {
48
- return attachment.name[this.props.locale];
49
- }
50
- return null;
51
- }
52
-
53
- editAttachment(evt) {
54
- evt.preventDefault();
55
- ModalActions.open(
56
- <AttachmentEditor attachment={this.props.record.attachment}
57
- locale={this.props.locale}
58
- locales={this.props.locales}
59
- csrf_token={this.props.csrf_token}
60
- onUpdate={this.props.onUpdate} />
61
- );
62
- }
63
-
64
- renderAttachment() {
65
- let { attachment, uploading } = this.props.record;
66
-
67
- let icon = uploading ? "cloud-upload" : "paperclip";
68
-
69
- return(
70
- <div className="attachment-info">
71
- <h3>
72
- <i className={`fa fa-${icon} icon`} />
73
- {this.name() || <em>Untitled</em>}<br />
74
- </h3>
75
- {!uploading &&
76
- <a href={attachment.url}
77
- target="_blank">{attachment.filename}</a>}
78
- {!uploading && this.description() && <p>{this.description()}</p>}
79
- </div>
80
- );
81
- }
82
-
83
- render() {
84
- let { attributeName, record } = this.props;
85
- let uploading = record.uploading;
86
- let attachment = record.attachment;
87
- let classes = ["attachment"];
88
- if (this.props.placeholder) {
89
- classes.push("placeholder");
90
- }
91
- if (this.props.record.uploading) {
92
- classes.push("uploading");
93
- }
94
- return (
95
- <div className={classes.join(" ")}
96
- onDragStart={this.dragStart}
97
- ref={this.props.record.ref}
98
- draggable>
99
- <input name={`${attributeName}[id]`}
100
- type="hidden" value={record.id || ""} />
101
- <input name={`${attributeName}[attachment_id]`}
102
- type="hidden" value={(attachment && attachment.id) || ""} />
103
- <input name={`${attributeName}[position]`}
104
- type="hidden" value={this.props.position} />
105
- {this.props.enablePrimary && (
106
- <input name={`${attributeName}[primary]`}
107
- type="hidden" value={this.props.primary} />
108
- )}
109
- {!uploading &&
110
- <div className="actions">
111
- <button onClick={this.editAttachment}>
112
- Edit
113
- </button>
114
- {this.props.showEmbed && (
115
- <button onClick={this.copyEmbed}>
116
- Embed
117
- </button>
118
- )}
119
- {this.props.deleteRecord && (
120
- <button onClick={this.deleteRecord}>
121
- Remove
122
- </button>
123
- )}
124
- </div>
125
- }
126
- {attachment && this.renderAttachment()}
127
- </div>
128
- );
129
- }
130
- }
@@ -1,131 +0,0 @@
1
- class AttachmentEditor extends React.Component {
2
- constructor(props) {
3
- let attachment = props.attachment;
4
-
5
- super(props);
6
-
7
- this.state = {
8
- locale: this.props.locale,
9
- name: attachment.name || {},
10
- description: attachment.description || {}
11
- };
12
-
13
- this.copyEmbedCode = this.copyEmbedCode.bind(this);
14
- this.save = this.save.bind(this);
15
- }
16
-
17
- copyEmbedCode(evt) {
18
- evt.preventDefault();
19
- const el = document.createElement("textarea");
20
- el.value = `[attachment:${this.props.attachment.id}]`;
21
- document.body.appendChild(el);
22
- el.select();
23
- document.execCommand("copy");
24
- document.body.removeChild(el);
25
- ToastActions.notice("Embed code copied to clipboard");
26
- }
27
-
28
- copySupported() {
29
- return document.queryCommandSupported &&
30
- document.queryCommandSupported("copy");
31
- }
32
-
33
- render() {
34
- let { locale, name, description } = this.state;
35
- let locales = this.props.locales;
36
- let attachment = this.props.attachment;
37
- return (
38
- <div className="attachment-editor">
39
- <form>
40
- {locales && Object.keys(locales).length > 1 && (
41
- <div className="field">
42
- <label>
43
- Locale
44
- </label>
45
- <select name="locale"
46
- onChange={e => this.setState({locale: e.target.value})}>
47
- {Object.keys(locales).map(key => (
48
- <option key={`locale-${key}`} value={key}>
49
- {locales[key]}
50
- </option>
51
- ))}
52
- </select>
53
- </div>
54
- )}
55
- <div className="field">
56
- <label>Name</label>
57
- <input type="text"
58
- className="name"
59
- value={name[locale] || ""}
60
- onChange={e => this.updateLocalized("name",
61
- e.target.value)} />
62
- </div>
63
- <div className="field">
64
- <label>Description</label>
65
- <textarea className="description"
66
- value={description[locale] || ""}
67
- onChange={e => this.updateLocalized("description",
68
- e.target.value)} />
69
- </div>
70
- <div className="field embed-code">
71
- <label>
72
- Embed code
73
- </label>
74
- <input type="text"
75
- value={`[attachment:${attachment.id}]`}
76
- disabled={true} />
77
- {this.copySupported() && (
78
- <button onClick={this.copyEmbedCode}>
79
- Copy
80
- </button>
81
- )}
82
- </div>
83
- <div className="field">
84
- <label>File</label>
85
- <a href={attachment.url}
86
- target="_blank">{attachment.filename}</a>
87
- </div>
88
- <div className="buttons">
89
- <button onClick={this.save}>
90
- Save
91
- </button>
92
- <button onClick={() => ModalActions.close()}>
93
- Cancel
94
- </button>
95
- </div>
96
- </form>
97
- </div>
98
- );
99
- }
100
-
101
- save(evt) {
102
- evt.preventDefault();
103
- evt.stopPropagation();
104
-
105
- let data = { name: this.state.name,
106
- description: this.state.description };
107
-
108
- var xhr = new XMLHttpRequest();
109
- xhr.open("PUT", `/admin/attachments/${this.props.attachment.id}`, true);
110
- xhr.setRequestHeader("Content-Type","application/json; charset=utf-8");
111
- xhr.setRequestHeader("X-CSRF-Token", this.props.csrf_token);
112
- xhr.onload = function () {
113
- if (xhr.readyState == 4 && xhr.status == "200") {
114
- // Success
115
- }
116
- };
117
- xhr.send(JSON.stringify({attachment: data}));
118
-
119
- if (this.props.onUpdate) {
120
- this.props.onUpdate(data);
121
- }
122
- ModalActions.close();
123
- }
124
-
125
- updateLocalized(name, value) {
126
- let locale = this.state.locale;
127
- this.setState({
128
- [name]: { ...this.state[name], [locale]: value }
129
- });
130
- }
131
- }