pages_core 3.7.0 → 3.8.0

Sign up to get free protection for your applications and to get access to all the features.
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
- }