pages_core 3.6.2 → 3.7.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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -1
  3. data/Rakefile +3 -1
  4. data/app/assets/javascripts/pages/admin/components/grid_image.jsx +1 -1
  5. data/app/assets/javascripts/pages/admin/components/image_editor.jsx +5 -5
  6. data/app/assets/javascripts/pages/admin/components/image_grid.jsx +10 -5
  7. data/app/assets/javascripts/pages/admin/components/image_uploader.jsx +10 -5
  8. data/app/assets/javascripts/pages/admin/components/page_tree.jsx +9 -9
  9. data/app/assets/javascripts/pages/admin/components/page_tree_node.jsx +11 -11
  10. data/app/assets/javascripts/pages/admin/components/rich_text_area.jsx +5 -4
  11. data/app/assets/javascripts/pages/admin/components/rich_text_toolbar.jsx +54 -21
  12. data/app/assets/javascripts/pages/admin/components/toast.jsx +0 -3
  13. data/app/assets/javascripts/pages/admin/components/toast_store.jsx +1 -1
  14. data/app/assets/javascripts/pages/admin/features/edit_page.jsx +3 -3
  15. data/app/assets/javascripts/pages/admin/features/rich_text.jsx +1 -1
  16. data/app/assets/javascripts/pages/admin/features/tag_editor.jsx +28 -28
  17. data/app/assets/javascripts/pages/admin/lib/tree.jsx +9 -9
  18. data/app/assets/javascripts/pages/login_form.jsx +8 -8
  19. data/app/assets/stylesheets/pages/admin/components/forms.scss +20 -0
  20. data/app/assets/stylesheets/pages/errors.css +2 -0
  21. data/app/controller_dummies/admin/admin_controller.rb +2 -0
  22. data/app/controller_dummies/application_controller.rb +2 -0
  23. data/app/controller_dummies/attachments_controller.rb +2 -0
  24. data/app/controller_dummies/frontend_controller.rb +2 -0
  25. data/app/controller_dummies/images_controller.rb +2 -0
  26. data/app/controller_dummies/page_files_controller.rb +2 -0
  27. data/app/controller_dummies/pages_controller.rb +2 -0
  28. data/app/controller_dummies/sitemaps_controller.rb +2 -0
  29. data/app/controllers/admin/attachments_controller.rb +4 -2
  30. data/app/controllers/admin/categories_controller.rb +2 -0
  31. data/app/controllers/admin/images_controller.rb +10 -5
  32. data/app/controllers/admin/invites_controller.rb +4 -1
  33. data/app/controllers/admin/pages_controller.rb +7 -19
  34. data/app/controllers/admin/password_resets_controller.rb +9 -5
  35. data/app/controllers/admin/users_controller.rb +10 -4
  36. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +13 -11
  37. data/app/controllers/concerns/pages_core/admin/persistent_params.rb +75 -0
  38. data/app/controllers/concerns/pages_core/authentication.rb +4 -1
  39. data/app/controllers/concerns/pages_core/error_renderer.rb +3 -0
  40. data/app/controllers/concerns/pages_core/error_reporting.rb +36 -0
  41. data/app/controllers/concerns/pages_core/policies_helper.rb +4 -1
  42. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +3 -0
  43. data/app/controllers/concerns/pages_core/process_titler.rb +2 -0
  44. data/app/controllers/concerns/pages_core/rss_controller.rb +2 -0
  45. data/app/controllers/concerns/pages_core/static_cache_controller.rb +48 -0
  46. data/app/controllers/errors_controller.rb +5 -53
  47. data/app/controllers/pages_core/admin_controller.rb +7 -67
  48. data/app/controllers/pages_core/attachments_controller.rb +10 -6
  49. data/app/controllers/pages_core/base_controller.rb +11 -17
  50. data/app/controllers/pages_core/frontend/page_files_controller.rb +6 -2
  51. data/app/controllers/pages_core/frontend/pages_controller.rb +9 -15
  52. data/app/controllers/pages_core/frontend_controller.rb +3 -0
  53. data/app/controllers/pages_core/images_controller.rb +3 -1
  54. data/app/controllers/pages_core/sitemaps_controller.rb +11 -5
  55. data/app/controllers/sessions_controller.rb +2 -0
  56. data/app/formatters/pages_core/html_formatter.rb +13 -63
  57. data/app/formatters/pages_core/image_embedder.rb +79 -0
  58. data/app/formatters/pages_core/link_renderer.rb +2 -0
  59. data/app/helpers/admin/admin_helper.rb +2 -0
  60. data/app/helpers/admin/menu_helper.rb +6 -4
  61. data/app/helpers/admin/pages_helper.rb +4 -57
  62. data/app/helpers/application_helper.rb +2 -0
  63. data/app/helpers/frontend_helper.rb +2 -0
  64. data/app/helpers/pages_core/admin/admin_helper.rb +22 -106
  65. data/app/helpers/pages_core/admin/content_tabs_helper.rb +28 -0
  66. data/app/helpers/pages_core/admin/date_range_helper.rb +55 -0
  67. data/app/helpers/pages_core/admin/form_builder.rb +8 -0
  68. data/app/helpers/pages_core/admin/image_uploads_helper.rb +48 -0
  69. data/app/helpers/pages_core/admin/labelled_field_helper.rb +12 -9
  70. data/app/helpers/pages_core/admin/page_blocks_helper.rb +66 -0
  71. data/app/helpers/pages_core/admin/page_json_helper.rb +23 -0
  72. data/app/helpers/pages_core/admin/tag_editor_helper.rb +11 -9
  73. data/app/helpers/pages_core/application_helper.rb +3 -0
  74. data/app/helpers/pages_core/attachments_helper.rb +31 -27
  75. data/app/helpers/pages_core/form_builder.rb +17 -13
  76. data/app/helpers/pages_core/frontend_helper.rb +3 -3
  77. data/app/helpers/pages_core/head_tags_helper.rb +7 -2
  78. data/app/helpers/pages_core/images_helper.rb +3 -0
  79. data/app/helpers/pages_core/meta_tags_helper.rb +3 -1
  80. data/app/helpers/pages_core/open_graph_tags_helper.rb +7 -5
  81. data/app/helpers/pages_core/page_path_helper.rb +24 -3
  82. data/app/jobs/pages_core/autopublish_job.rb +3 -1
  83. data/app/jobs/pages_core/sweep_cache_job.rb +4 -2
  84. data/app/mailers/admin_mailer.rb +4 -14
  85. data/app/models/attachment.rb +10 -8
  86. data/app/models/autopublisher.rb +3 -0
  87. data/app/models/category.rb +3 -1
  88. data/app/models/concerns/pages_core/has_roles.rb +2 -0
  89. data/app/models/concerns/pages_core/humanizable_param.rb +9 -6
  90. data/app/models/concerns/pages_core/page_model/attachments.rb +2 -0
  91. data/app/models/concerns/pages_core/page_model/autopublishable.rb +2 -0
  92. data/app/models/concerns/pages_core/page_model/dated_page.rb +11 -11
  93. data/app/models/concerns/pages_core/page_model/images.rb +5 -1
  94. data/app/models/concerns/pages_core/page_model/localizable.rb +2 -0
  95. data/app/models/concerns/pages_core/page_model/pathable.rb +26 -25
  96. data/app/models/concerns/pages_core/page_model/redirectable.rb +3 -1
  97. data/app/models/concerns/pages_core/page_model/sortable.rb +6 -5
  98. data/app/models/concerns/pages_core/page_model/status.rb +2 -0
  99. data/app/models/concerns/pages_core/page_model/templateable.rb +7 -2
  100. data/app/models/concerns/pages_core/page_model/tree.rb +27 -20
  101. data/app/models/concerns/pages_core/sweepable.rb +4 -2
  102. data/app/models/concerns/pages_core/taggable.rb +8 -2
  103. data/app/models/image.rb +14 -1
  104. data/app/models/invite.rb +3 -1
  105. data/app/models/invite_role.rb +5 -3
  106. data/app/models/page.rb +4 -3
  107. data/app/models/page_builder.rb +2 -0
  108. data/app/models/page_category.rb +3 -1
  109. data/app/models/page_exporter.rb +22 -9
  110. data/app/models/page_file.rb +3 -1
  111. data/app/models/page_image.rb +3 -1
  112. data/app/models/page_path.rb +13 -5
  113. data/app/models/password_reset_token.rb +3 -1
  114. data/app/models/role.rb +8 -5
  115. data/app/models/tag.rb +8 -6
  116. data/app/models/tagging.rb +4 -2
  117. data/app/models/user.rb +7 -4
  118. data/app/policies/invite_policy.rb +2 -0
  119. data/app/policies/page_file_policy.rb +2 -0
  120. data/app/policies/page_image_policy.rb +2 -0
  121. data/app/policies/page_policy.rb +2 -0
  122. data/app/policies/policy.rb +2 -0
  123. data/app/policies/user_policy.rb +2 -0
  124. data/app/serializers/admin/attachment_serializer.rb +4 -2
  125. data/app/serializers/admin/image_serializer.rb +4 -2
  126. data/app/serializers/admin/page_file_serializer.rb +2 -0
  127. data/app/serializers/admin/page_image_serializer.rb +2 -0
  128. data/app/serializers/page_export_serializer.rb +2 -0
  129. data/app/serializers/page_file_export_serializer.rb +2 -0
  130. data/app/serializers/page_image_export_serializer.rb +2 -0
  131. data/app/serializers/page_image_serializer.rb +2 -0
  132. data/app/serializers/page_serializer.rb +2 -0
  133. data/app/services/pages_core/create_user_service.rb +5 -2
  134. data/app/services/pages_core/destroy_invite_service.rb +25 -0
  135. data/app/services/pages_core/invite_service.rb +2 -0
  136. data/app/views/admin/images/show.json.jbuilder +2 -0
  137. data/app/views/admin/pages/news.html.erb +1 -1
  138. data/app/views/errors/500.html.erb +2 -20
  139. data/app/views/errors/_generic_help.html.erb +1 -1
  140. data/app/views/feeds/pages.rss.builder +2 -0
  141. data/app/views/sitemaps/show.xml.builder +2 -0
  142. data/config/routes.rb +5 -5
  143. data/db/migrate/20111219033112_create_pages_tables.rb +192 -271
  144. data/lib/pages_core.rb +10 -0
  145. data/lib/pages_core/admin_menu_item.rb +3 -0
  146. data/lib/pages_core/archive_finder.rb +12 -16
  147. data/lib/pages_core/attachment_embedder.rb +4 -6
  148. data/lib/pages_core/cache_sweeper.rb +10 -108
  149. data/lib/pages_core/configuration.rb +2 -0
  150. data/lib/pages_core/configuration/base.rb +5 -0
  151. data/lib/pages_core/configuration/pages.rb +4 -2
  152. data/lib/pages_core/digest_verifier.rb +5 -5
  153. data/lib/pages_core/engine.rb +52 -0
  154. data/lib/pages_core/extensions.rb +2 -0
  155. data/lib/pages_core/extensions/string_extensions.rb +3 -1
  156. data/lib/pages_core/page_path_constraint.rb +2 -0
  157. data/lib/pages_core/pages_plugin.rb +3 -1
  158. data/lib/pages_core/plugin.rb +4 -52
  159. data/lib/pages_core/pub_sub.rb +2 -0
  160. data/lib/pages_core/static_cache.rb +26 -0
  161. data/lib/pages_core/static_cache/null_handler.rb +17 -0
  162. data/lib/pages_core/static_cache/page_cache_handler.rb +56 -0
  163. data/lib/pages_core/static_cache/varnish_handler.rb +55 -0
  164. data/lib/pages_core/templates.rb +5 -3
  165. data/lib/pages_core/templates/block_configuration.rb +3 -0
  166. data/lib/pages_core/templates/configuration.rb +5 -1
  167. data/lib/pages_core/templates/configuration_handler.rb +4 -2
  168. data/lib/pages_core/templates/configuration_proxy.rb +2 -0
  169. data/lib/pages_core/templates/controller_actions.rb +2 -0
  170. data/lib/pages_core/templates/template_configuration.rb +18 -13
  171. data/lib/pages_core/version.rb +3 -1
  172. data/lib/rails/generators/pages_core/frontend/frontend_generator.rb +2 -0
  173. data/lib/rails/generators/pages_core/install/install_generator.rb +3 -7
  174. data/lib/rails/generators/pages_core/install/templates/active_job_initializer.rb +2 -0
  175. data/lib/rails/generators/pages_core/install/templates/application_controller.rb +2 -0
  176. data/lib/rails/generators/pages_core/install/templates/application_helper.rb +2 -0
  177. data/lib/rails/generators/pages_core/install/templates/delayed_job +1 -0
  178. data/lib/rails/generators/pages_core/install/templates/delayed_job_initializer.rb +17 -0
  179. data/lib/rails/generators/pages_core/install/templates/frontend_controller.rb +2 -0
  180. data/lib/rails/generators/pages_core/install/templates/frontend_helper.rb +2 -0
  181. data/lib/rails/generators/pages_core/install/templates/gitignore.erb +12 -1
  182. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +2 -0
  183. data/lib/rails/generators/pages_core/install/templates/pages_controller.rb +2 -0
  184. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +2 -6
  185. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +18 -14
  186. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +3 -8
  187. data/lib/rails/generators/pages_core/rspec/templates/mailer_macros.rb +2 -0
  188. data/lib/rails/generators/pages_core/rspec/templates/page_templates_spec.rb +26 -0
  189. data/lib/rails/generators/pages_core/rspec/templates/rails_helper.rb +91 -0
  190. data/lib/rails/generators/pages_core/rspec/templates/spec_helper.rb +89 -36
  191. data/lib/tasks/pages.rake +3 -2
  192. data/lib/tasks/pages/cache.rake +8 -5
  193. data/lib/tasks/pages/export.rake +3 -1
  194. data/lib/tasks/pages/page_paths.rake +2 -0
  195. data/template.rb +2 -0
  196. metadata +127 -77
  197. data/app/controllers/concerns/pages_core/domain_based_cache.rb +0 -26
  198. data/app/views/admin_mailer/error_report.html.erb +0 -70
  199. data/app/views/errors/500_critical.html.erb +0 -7
  200. data/app/views/errors/report.html.erb +0 -4
  201. data/config/removed_migrations.yml +0 -60
  202. data/db/migrate/20120627033112_rename_textbits.rb +0 -17
  203. data/db/migrate/20121010055412_drop_removed_tables.rb +0 -81
  204. data/db/migrate/20130130053932_add_queue_to_delayed_jobs.rb +0 -9
  205. data/db/migrate/20130303053932_remove_filter_from_localizations.rb +0 -9
  206. data/db/migrate/20130303160632_remove_imagesets.rb +0 -22
  207. data/db/migrate/20130303161732_remove_sms_subscribers.rb +0 -14
  208. data/db/migrate/20130823133208_update_page_redirect_to.rb +0 -10
  209. data/db/migrate/20140203183900_create_roles.rb +0 -66
  210. data/db/migrate/20140414150500_change_locale_names.rb +0 -11
  211. data/db/migrate/20140604142100_remove_openid_url.rb +0 -9
  212. data/db/migrate/20140920231700_convert_images_to_dis.rb +0 -81
  213. data/db/migrate/20140922124600_convert_page_files_to_dis.rb +0 -50
  214. data/db/migrate/20141004003100_create_password_reset_tokens.rb +0 -10
  215. data/db/migrate/20141006181300_remove_user_cruft.rb +0 -11
  216. data/db/migrate/20141007173000_create_invites.rb +0 -16
  217. data/db/migrate/20150204130800_update_delayed_job_table.rb +0 -9
  218. data/db/migrate/20150401131300_localize_images.rb +0 -38
  219. data/db/migrate/20150520174300_add_meta_image_to_page.rb +0 -5
  220. data/db/migrate/20150904164200_add_pinned_to_tags.rb +0 -5
  221. data/db/migrate/20151002174800_create_page_paths.rb +0 -10
  222. data/db/migrate/20151021103400_drop_binaries_table.rb +0 -7
  223. data/db/migrate/20151204151000_remove_page_content_order.rb +0 -5
  224. data/db/migrate/20160330220900_rename_pages_categories.rb +0 -6
  225. data/db/migrate/20160405202700_change_localization_limit.rb +0 -9
  226. data/db/migrate/20170716040500_remove_page_comments.rb +0 -23
  227. data/db/migrate/20170716213400_remove_sessions.rb +0 -15
  228. data/db/migrate/20180207134000_add_dates_to_pages.rb +0 -11
  229. data/db/migrate/20190211154800_create_attachments.rb +0 -73
  230. data/db/migrate/20190318115000_fix_page_file_ids.rb +0 -34
  231. data/lib/rails/generators/pages_core/install/templates/cache_sweeper_initializer.rb +0 -6
  232. data/lib/tasks/pages/update.rake +0 -17
@@ -1,5 +1,5 @@
1
1
  $(function() {
2
- $('textarea.rich').each(function () {
2
+ $("textarea.rich").each(function () {
3
3
  let container = document.createElement("div");
4
4
  this.parentNode.appendChild(container);
5
5
  ReactDOM.render(
@@ -7,67 +7,67 @@ $.extend(TagEditor.prototype, {
7
7
  var tagEditor = this;
8
8
  tagEditor.container = container;
9
9
  tagEditor.tags = Array();
10
- tagEditor.serializeField = $(tagEditor.container).find('.serialized_tags').get(0);
10
+ tagEditor.serializeField = $(tagEditor.container).find(".serialized_tags").get(0);
11
11
  tagEditor.findTags(true);
12
12
 
13
- tagEditor.inputField = $(tagEditor.container).find('.add-tag').get(0);
14
- $(tagEditor.container).find('.add-tag-button').click(function() {
13
+ tagEditor.inputField = $(tagEditor.container).find(".add-tag").get(0);
14
+ $(tagEditor.container).find(".add-tag-button").click(function() {
15
15
  tagEditor.addTag();
16
- $(tagEditor.container).find('.add-tag').blur();
16
+ $(tagEditor.container).find(".add-tag").blur();
17
17
  return false;
18
18
  });
19
- $(tagEditor.container).find('.add-tag').keydown(function(event) {
19
+ $(tagEditor.container).find(".add-tag").keydown(function(event) {
20
20
  if (event.which === 13) {
21
21
  tagEditor.addTag();
22
22
  return false;
23
23
  }
24
24
  });
25
25
 
26
- $(tagEditor.container).find('.add-tag').each(function(){
26
+ $(tagEditor.container).find(".add-tag").each(function(){
27
27
  var field = this;
28
28
  field.exampleText = $(field).val();
29
- $(field).addClass('example');
29
+ $(field).addClass("example");
30
30
  $(field).focus(function(event){
31
- $(tagEditor.container).find('.add-tag-button').fadeIn('fast');
32
- $(field).removeClass('example');
31
+ $(tagEditor.container).find(".add-tag-button").fadeIn("fast");
32
+ $(field).removeClass("example");
33
33
  if ($(field).val() === field.exampleText) {
34
- $(field).val('');
34
+ $(field).val("");
35
35
  }
36
36
  });
37
37
  $(field).blur(function(event) {
38
- $(tagEditor.container).find('.add-tag-button').fadeOut('fast');
38
+ $(tagEditor.container).find(".add-tag-button").fadeOut("fast");
39
39
  if (!$(field).val() || $(field).val() === field.exampleText) {
40
- $(field).addClass('example').val(field.exampleText);
40
+ $(field).addClass("example").val(field.exampleText);
41
41
  }
42
42
  });
43
43
  });
44
- $(tagEditor.container).find('.add-tag-button').hide();
44
+ $(tagEditor.container).find(".add-tag-button").hide();
45
45
  },
46
46
 
47
47
  addTag: function() {
48
48
  var tagEditor = this;
49
- var tagName = $(tagEditor.inputField).val().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
49
+ var tagName = $(tagEditor.inputField).val().replace(/^\s\s*/, "").replace(/\s\s*$/, "");
50
50
  if (tagName) {
51
51
  if (this.hasTag(tagName)) {
52
52
  this.enable(this.getTagByName(tagName));
53
53
  } else {
54
- $(tagEditor.container).find('.tags').append('<span class="tag"><input type="checkbox" name="tag-'+tagName+'" value="1" checked="checked"><span class="name">'+tagName+'</span></span>');
54
+ $(tagEditor.container).find(".tags").append("<span class=\"tag\"><input type=\"checkbox\" name=\"tag-"+tagName+"\" value=\"1\" checked=\"checked\"><span class=\"name\">"+tagName+"</span></span>");
55
55
  tagEditor.findTags();
56
56
  }
57
57
  }
58
- $(tagEditor.inputField).val('');
58
+ $(tagEditor.inputField).val("");
59
59
  },
60
60
 
61
61
  findTags: function(permanentize) {
62
62
  var tagEditor = this;
63
- $(this.container).find('.tag').each(function () {
63
+ $(this.container).find(".tag").each(function () {
64
64
  var tag = this;
65
65
  if (!tag.tagEditorApplied) {
66
- tag.checkBox = $(tag).find('input[type=checkbox]').get(0);
67
- tag.name = $(tag).find('.name').text();
66
+ tag.checkBox = $(tag).find("input[type=checkbox]").get(0);
67
+ tag.name = $(tag).find(".name").text();
68
68
  if(tagEditor.isChecked(tag)){
69
69
  tag.enabled = true;
70
- $(tag).addClass('enabled');
70
+ $(tag).addClass("enabled");
71
71
  } else {
72
72
  tag.enabled = false;
73
73
  }
@@ -94,11 +94,11 @@ $.extend(TagEditor.prototype, {
94
94
  setEnabled: function(tag, enabled) {
95
95
  tag.enabled = enabled;
96
96
  if (tag.enabled) {
97
- $(tag).addClass('enabled');
97
+ $(tag).addClass("enabled");
98
98
  } else {
99
- $(tag).removeClass('enabled');
99
+ $(tag).removeClass("enabled");
100
100
  }
101
- $(tag.checkBox).attr('checked', tag.enabled);
101
+ $(tag.checkBox).attr("checked", tag.enabled);
102
102
  this.serializeTags();
103
103
  },
104
104
 
@@ -129,7 +129,7 @@ $.extend(TagEditor.prototype, {
129
129
  },
130
130
 
131
131
  isChecked: function(tag) {
132
- return $(tag.checkBox).attr('checked');
132
+ return $(tag.checkBox).attr("checked");
133
133
  },
134
134
 
135
135
  enabledTags: function() {
@@ -145,16 +145,16 @@ $.extend(TagEditor.prototype, {
145
145
  serializeTags: function() {
146
146
  var tagNames = Array();
147
147
  $(this.enabledTags()).each(function() {
148
- tagNames[tagNames.length] = '"' + this.name.replace('"', '\\"') + '"';
148
+ tagNames[tagNames.length] = "\"" + this.name.replace("\"", "\\\"") + "\"";
149
149
  });
150
- $(this.serializeField).val('['+tagNames.join(', ')+']');
151
- $(this.container).find('.add-tag').attr('disabled', false);
150
+ $(this.serializeField).val("["+tagNames.join(", ")+"]");
151
+ $(this.container).find(".add-tag").attr("disabled", false);
152
152
  }
153
153
  });
154
154
 
155
155
  // Apply the tag editor to each instance
156
156
  $(function() {
157
- $('.tag-editor').each(function() {
157
+ $(".tag-editor").each(function() {
158
158
  this.tagEditor = new TagEditor(this);
159
159
  });
160
160
  });
@@ -63,7 +63,7 @@ class Tree {
63
63
  var self = this;
64
64
 
65
65
  var index = { id: startId, node: obj };
66
- indexes[this.cnt + ''] = index;
66
+ indexes[this.cnt + ""] = index;
67
67
  this.cnt++;
68
68
 
69
69
  if (obj.children && obj.children.length) {
@@ -81,7 +81,7 @@ class Tree {
81
81
  index.parent = parent.id;
82
82
  }
83
83
 
84
- indexes[self.cnt + ''] = index;
84
+ indexes[self.cnt + ""] = index;
85
85
  children.push(self.cnt);
86
86
  self.cnt++;
87
87
 
@@ -92,7 +92,7 @@ class Tree {
92
92
  parent.children = children;
93
93
 
94
94
  children.forEach(function(id, i) {
95
- var index = indexes[id + ''];
95
+ var index = indexes[id + ""];
96
96
  if (i > 0) {
97
97
  index.prev = children[i - 1];
98
98
  }
@@ -106,7 +106,7 @@ class Tree {
106
106
  }
107
107
 
108
108
  getIndex(id) {
109
- var index = this.indexes[id + ''];
109
+ var index = this.indexes[id + ""];
110
110
  if (index) {
111
111
  return index;
112
112
  }
@@ -117,7 +117,7 @@ class Tree {
117
117
  del(index);
118
118
 
119
119
  function del(index) {
120
- delete self.indexes[index.id + ''];
120
+ delete self.indexes[index.id + ""];
121
121
  if (index.children && index.children.length) {
122
122
  index.children.forEach(function(child) {
123
123
  del(self.getIndex(child));
@@ -259,13 +259,13 @@ class Tree {
259
259
  var obj = this.remove(fromId);
260
260
  var index = null;
261
261
 
262
- if (placement === 'before') {
262
+ if (placement === "before") {
263
263
  index = this.insertBefore(obj, toId);
264
- } else if (placement === 'after') {
264
+ } else if (placement === "after") {
265
265
  index = this.insertAfter(obj, toId);
266
- } else if(placement === 'prepend') {
266
+ } else if(placement === "prepend") {
267
267
  index = this.prepend(obj, toId);
268
- } else if(placement === 'append') {
268
+ } else if(placement === "append") {
269
269
  index = this.append(obj, toId);
270
270
  }
271
271
 
@@ -1,21 +1,21 @@
1
1
  $(function () {
2
- $('.login-form').each(function () {
2
+ $(".login-form").each(function () {
3
3
  let container = this;
4
4
 
5
5
  function showTab(tabName) {
6
- $(container).find('.login-tab').hide();
6
+ $(container).find(".login-tab").hide();
7
7
  $(container).find(`.login-tab.${tabName}`).show();
8
- return false
8
+ return false;
9
9
  }
10
10
 
11
- $(container).find('.show-password').click(function () {
12
- return showTab('password');
11
+ $(container).find(".show-password").click(function () {
12
+ return showTab("password");
13
13
  });
14
14
 
15
- $(container).find('.show-password-reset').click(function () {
16
- return showTab('password-reset');
15
+ $(container).find(".show-password-reset").click(function () {
16
+ return showTab("password-reset");
17
17
  });
18
18
 
19
- showTab('password');
19
+ showTab("password");
20
20
  });
21
21
  });
@@ -62,6 +62,26 @@ form {
62
62
  }
63
63
  }
64
64
 
65
+ .row {
66
+ display: flex;
67
+ flex-wrap: wrap;
68
+ margin-right: -16px;
69
+
70
+ .field {
71
+ margin-right: 16px;
72
+ &.text-field {
73
+ flex-grow: 1;
74
+ min-width: 300px;
75
+ }
76
+ }
77
+
78
+ input[type=text],
79
+ input[type=password] {
80
+ width: 100%;
81
+ max-width: none;
82
+ }
83
+ }
84
+
65
85
  .date-range-select {
66
86
  .date {
67
87
  line-height: 34px;
@@ -1,5 +1,7 @@
1
1
  body {
2
2
  background: #fff;
3
+ background: linear-gradient(180deg, rgba(236,236,236,1) 0%, rgba(255,255,255,1) 50%);
4
+ background-repeat: no-repeat;
3
5
  margin: 0;
4
6
  padding: 0;
5
7
  border: 0;
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class AdminController < PagesCore::AdminController #:nodoc:
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ApplicationController < PagesCore::BaseController #:nodoc:
2
4
  helper :all
3
5
  protect_from_forgery with: :exception
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AttachmentsController < PagesCore::AttachmentsController #:nodoc:
2
4
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class FrontendController < PagesCore::FrontendController #:nodoc:
2
4
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ImagesController < PagesCore::ImagesController #:nodoc:
2
4
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PageFilesController < PagesCore::Frontend::PageFilesController #:nodoc:
2
4
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PagesController < PagesCore::Frontend::PagesController #:nodoc:
2
4
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class SitemapsController < PagesCore::SitemapsController #:nodoc:
2
4
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class AttachmentsController < Admin::AdminController
3
5
  before_action :find_attachment, only: %i[update]
@@ -27,8 +29,8 @@ module Admin
27
29
  def attachment_params
28
30
  params.require(:attachment).permit(
29
31
  :file,
30
- localized_attributes.each_with_object({}) do |a, h|
31
- h[a] = I18n.available_locales
32
+ localized_attributes.index_with do |_a|
33
+ I18n.available_locales
32
34
  end
33
35
  )
34
36
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class CategoriesController < Admin::AdminController
3
5
  before_action :find_category, only: %i[show edit update destroy]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class ImagesController < Admin::AdminController
3
5
  before_action :find_image, only: %i[show edit update destroy]
@@ -12,10 +14,13 @@ module Admin
12
14
 
13
15
  def create
14
16
  @image = Image.create(image_params)
15
- if @image.valid?
16
- respond_to do |format|
17
- format.json do
17
+
18
+ respond_to do |format|
19
+ format.json do
20
+ if @image.valid?
18
21
  render json: @image, serializer: Admin::ImageSerializer
22
+ else
23
+ render json: { status: "error", error: @image.errors.first }
19
24
  end
20
25
  end
21
26
  end
@@ -41,8 +46,8 @@ module Admin
41
46
  :name, :description, :file,
42
47
  :crop_start_x, :crop_start_y, :crop_height, :crop_width, :locale,
43
48
  :crop_gravity_x, :crop_gravity_y,
44
- localized_attributes.each_with_object({}) do |a, h|
45
- h[a] = I18n.available_locales
49
+ localized_attributes.index_with do |_a|
50
+ I18n.available_locales
46
51
  end
47
52
  )
48
53
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class InvitesController < Admin::AdminController
3
5
  before_action :require_authentication, except: %i[accept show]
@@ -45,7 +47,7 @@ module Admin
45
47
 
46
48
  def destroy
47
49
  flash[:notice] = "The invite to #{@invite.email} has been deleted"
48
- @invite.destroy
50
+ PagesCore::DestroyInviteService.call(invite: @invite)
49
51
  redirect_to admin_invites_url
50
52
  end
51
53
 
@@ -58,6 +60,7 @@ module Admin
58
60
  def find_and_validate_invite
59
61
  @invite = Invite.find_by(id: params[:id])
60
62
  return if @invite && secure_compare(@invite.token, params[:token])
63
+
61
64
  flash[:notice] = "This invite is no longer valid."
62
65
  redirect_to(login_admin_users_url) && return
63
66
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class PagesController < Admin::AdminController
5
+ include PagesCore::Admin::PageJsonHelper
3
6
  include PagesCore::Admin::NewsPageController
4
7
 
5
8
  before_action :find_categories
6
- before_action :find_page, only: %i[show edit update destroy
7
- move]
9
+ before_action :find_page, only: %i[show edit update destroy move]
8
10
 
9
11
  require_authorization
10
12
 
@@ -99,23 +101,9 @@ module Admin
99
101
  )
100
102
  end
101
103
 
102
- def page_json(page)
103
- { id: page.id,
104
- param: page.to_param,
105
- parent_page_id: page.parent_page_id,
106
- locale: page.locale,
107
- status: page.status,
108
- news_page: page.news_page,
109
- name: page.name,
110
- published_at: page.published_at,
111
- pinned: page.pinned?,
112
- starts_at: page.starts_at,
113
- permissions: [(:edit if policy(page).edit?),
114
- (:create if policy(page).edit?)].compact }
115
- end
116
-
117
104
  def param_categories
118
105
  return [] unless params[:category]
106
+
119
107
  params.permit(category: {})[:category]
120
108
  .to_hash
121
109
  .map { |id, _| Category.find(id) }
@@ -129,9 +117,9 @@ module Admin
129
117
  @categories = Category.order("name")
130
118
  end
131
119
 
132
- def respond_with_page(page)
120
+ def respond_with_page(page, &block)
133
121
  respond_to do |format|
134
- format.html { yield }
122
+ format.html { block.call }
135
123
  format.json { render json: page_json(page) }
136
124
  end
137
125
  end