alchemy_cms 4.2.4 → 4.3.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.

Potentially problematic release.


This version of alchemy_cms might be problematic. Click here for more details.

Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +4 -0
  3. data/.travis.yml +8 -6
  4. data/CHANGELOG.md +15 -10
  5. data/Gemfile +2 -10
  6. data/README.md +11 -4
  7. data/Rakefile +3 -2
  8. data/alchemy_cms.gemspec +11 -2
  9. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +3 -3
  10. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +1 -1
  11. data/app/assets/stylesheets/alchemy/buttons.scss +15 -2
  12. data/app/assets/stylesheets/alchemy/elements.scss +4 -0
  13. data/app/assets/stylesheets/alchemy/form_fields.scss +1 -0
  14. data/app/assets/stylesheets/alchemy/forms.scss +1 -0
  15. data/app/assets/stylesheets/alchemy/frame.scss +9 -29
  16. data/app/assets/stylesheets/alchemy/navigation.scss +30 -6
  17. data/app/assets/stylesheets/alchemy/preview_window.scss +4 -0
  18. data/app/controllers/alchemy/admin/elements_controller.rb +2 -2
  19. data/app/controllers/alchemy/pages_controller.rb +9 -4
  20. data/app/helpers/alchemy/elements_helper.rb +2 -2
  21. data/app/models/alchemy/element.rb +9 -4
  22. data/app/models/alchemy/page/page_elements.rb +17 -25
  23. data/app/models/alchemy/page/page_scopes.rb +1 -1
  24. data/app/models/alchemy/picture.rb +0 -21
  25. data/app/views/alchemy/admin/elements/_element.html.erb +2 -1
  26. data/app/views/alchemy/admin/pages/edit.html.erb +10 -10
  27. data/lib/alchemy/on_page_layout.rb +1 -1
  28. data/lib/alchemy/test_support/factories.rb +3 -1
  29. data/lib/alchemy/test_support/factories/attachment_factory.rb +2 -0
  30. data/lib/alchemy/test_support/factories/content_factory.rb +5 -0
  31. data/lib/alchemy/test_support/factories/dummy_user_factory.rb +2 -0
  32. data/lib/alchemy/test_support/factories/element_factory.rb +3 -0
  33. data/lib/alchemy/test_support/factories/essence_file_factory.rb +2 -0
  34. data/lib/alchemy/test_support/factories/essence_picture_factory.rb +2 -0
  35. data/lib/alchemy/test_support/factories/essence_text_factory.rb +2 -0
  36. data/lib/alchemy/test_support/factories/language_factory.rb +2 -0
  37. data/lib/alchemy/test_support/factories/page_factory.rb +2 -0
  38. data/lib/alchemy/test_support/factories/picture_factory.rb +2 -0
  39. data/lib/alchemy/test_support/factories/site_factory.rb +2 -0
  40. data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -1
  41. data/lib/alchemy/upgrader/tasks/cells_migration.rb +2 -4
  42. data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +2 -3
  43. data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +4 -4
  44. data/lib/alchemy/version.rb +5 -1
  45. data/lib/alchemy_cms.rb +0 -1
  46. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +1 -1
  47. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +1 -1
  48. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +1 -1
  49. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +5 -2
  50. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +5 -2
  51. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +28 -8
  52. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +11 -4
  53. metadata +129 -12
  54. data/.teatro.yml +0 -8
  55. data/lib/alchemy/picture_attributes.rb +0 -28
@@ -1,9 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "4.2.4"
4
+ VERSION = "4.3.0"
5
5
 
6
6
  def self.version
7
7
  VERSION
8
8
  end
9
+
10
+ def self.gem_version
11
+ Gem::Version.new(VERSION)
12
+ end
9
13
  end
@@ -48,7 +48,6 @@ require_relative 'alchemy/on_page_layout/callbacks_runner'
48
48
  require_relative 'alchemy/page_layout'
49
49
  require_relative 'alchemy/paths'
50
50
  require_relative 'alchemy/permissions'
51
- require_relative 'alchemy/picture_attributes'
52
51
  require_relative 'alchemy/sass_support'
53
52
  require_relative 'alchemy/ssl_protection'
54
53
  require_relative 'alchemy/resource'
@@ -10,7 +10,7 @@
10
10
  <%- end -%>
11
11
  <%- end -%>
12
12
  <%- if @element['nestable_elements'].present? -%>
13
- <%%= render <%= @element_name %>_view.nested_elements.available %>
13
+ <%%= render <%= @element_name %>_view.nested_elements %>
14
14
  <%- end -%>
15
15
  <%%- end -%>
16
16
  <%%- end -%>
@@ -9,5 +9,5 @@
9
9
  <%- end -%>
10
10
  <%- end -%>
11
11
  <%- if @element['nestable_elements'].present? -%>
12
- = render <%= @element_name -%>_view.nested_elements.available
12
+ = render <%= @element_name -%>_view.nested_elements
13
13
  <%- end -%>
@@ -9,5 +9,5 @@
9
9
  <%- end -%>
10
10
  <%- end -%>
11
11
  <%- if @element['nestable_elements'].present? -%>
12
- = render <%= @element_name -%>_view.nested_elements.available
12
+ = render <%= @element_name -%>_view.nested_elements
13
13
  <%- end -%>
@@ -6,7 +6,7 @@
6
6
  * https://blueimp.net
7
7
  *
8
8
  * Licensed under the MIT license:
9
- * http://www.opensource.org/licenses/MIT
9
+ * https://opensource.org/licenses/MIT
10
10
  */
11
11
 
12
12
  /* jshint nomen:false */
@@ -22,7 +22,10 @@
22
22
  ], factory);
23
23
  } else if (typeof exports === 'object') {
24
24
  // Node/CommonJS:
25
- factory(require('jquery'));
25
+ factory(
26
+ require('jquery'),
27
+ require('./jquery.fileupload')
28
+ );
26
29
  } else {
27
30
  // Browser globals:
28
31
  factory(
@@ -6,7 +6,7 @@
6
6
  * https://blueimp.net
7
7
  *
8
8
  * Licensed under the MIT license:
9
- * http://www.opensource.org/licenses/MIT
9
+ * https://opensource.org/licenses/MIT
10
10
  */
11
11
 
12
12
  /* global define, require, window */
@@ -21,7 +21,10 @@
21
21
  ], factory);
22
22
  } else if (typeof exports === 'object') {
23
23
  // Node/CommonJS:
24
- factory(require('jquery'));
24
+ factory(
25
+ require('jquery'),
26
+ require('./jquery.fileupload-process')
27
+ );
25
28
  } else {
26
29
  // Browser globals:
27
30
  factory(
@@ -6,7 +6,7 @@
6
6
  * https://blueimp.net
7
7
  *
8
8
  * Licensed under the MIT license:
9
- * http://www.opensource.org/licenses/MIT
9
+ * https://opensource.org/licenses/MIT
10
10
  */
11
11
 
12
12
  /* jshint nomen:false */
@@ -18,7 +18,7 @@
18
18
  // Register as an anonymous AMD module:
19
19
  define([
20
20
  'jquery',
21
- 'jquery-ui/widget'
21
+ 'jquery-ui/ui/widget'
22
22
  ], factory);
23
23
  } else if (typeof exports === 'object') {
24
24
  // Node/CommonJS:
@@ -43,7 +43,7 @@
43
43
  '|(Kindle/(1\\.0|2\\.[05]|3\\.0))'
44
44
  ).test(window.navigator.userAgent) ||
45
45
  // Feature detection for all other devices:
46
- $('<input type="file">').prop('disabled'));
46
+ $('<input type="file"/>').prop('disabled'));
47
47
 
48
48
  // The FileReader API is not actually used, but works as feature detection,
49
49
  // as some Safari versions (5?) support XHR file uploads via the FormData API,
@@ -261,6 +261,9 @@
261
261
  // Callback for dragover events of the dropZone(s):
262
262
  // dragover: function (e) {}, // .bind('fileuploaddragover', func);
263
263
 
264
+ // Callback before the start of each chunk upload request (before form data initialization):
265
+ // chunkbeforesend: function (e, data) {}, // .bind('fileuploadchunkbeforesend', func);
266
+
264
267
  // Callback for the start of each chunk upload request:
265
268
  // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func);
266
269
 
@@ -434,6 +437,13 @@
434
437
  }
435
438
  },
436
439
 
440
+ _deinitProgressListener: function (options) {
441
+ var xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();
442
+ if (xhr.upload) {
443
+ $(xhr.upload).unbind('progress');
444
+ }
445
+ },
446
+
437
447
  _isInstanceOf: function (type, obj) {
438
448
  // Cross-frame instanceof check
439
449
  return Object.prototype.toString.call(obj) === '[object ' + type + ']';
@@ -453,7 +463,7 @@
453
463
  }
454
464
  if (!multipart || options.blob || !this._isInstanceOf('File', file)) {
455
465
  options.headers['Content-Disposition'] = 'attachment; filename="' +
456
- encodeURI(file.name) + '"';
466
+ encodeURI(file.uploadName || file.name) + '"';
457
467
  }
458
468
  if (!multipart) {
459
469
  options.contentType = file.type || 'application/octet-stream';
@@ -489,7 +499,11 @@
489
499
  });
490
500
  }
491
501
  if (options.blob) {
492
- formData.append(paramName, options.blob, file.name);
502
+ formData.append(
503
+ paramName,
504
+ options.blob,
505
+ file.uploadName || file.name
506
+ );
493
507
  } else {
494
508
  $.each(options.files, function (index, file) {
495
509
  // This check allows the tests to run with
@@ -730,7 +744,7 @@
730
744
  promise = dfd.promise(),
731
745
  jqXHR,
732
746
  upload;
733
- if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) ||
747
+ if (!(this._isXHRUpload(options) && slice && (ub || ($.type(mcs) === 'function' ? mcs(options) : mcs) < fs)) ||
734
748
  options.data) {
735
749
  return false;
736
750
  }
@@ -753,7 +767,7 @@
753
767
  o.blob = slice.call(
754
768
  file,
755
769
  ub,
756
- ub + mcs,
770
+ ub + ($.type(mcs) === 'function' ? mcs(o) : mcs),
757
771
  file.type
758
772
  );
759
773
  // Store the current chunk size, as the blob itself
@@ -762,6 +776,8 @@
762
776
  // Expose the chunk bytes position range:
763
777
  o.contentRange = 'bytes ' + ub + '-' +
764
778
  (ub + o.chunkSize - 1) + '/' + fs;
779
+ // Trigger chunkbeforesend to allow form data to be updated for this chunk
780
+ that._trigger('chunkbeforesend', null, o);
765
781
  // Process the upload data (the blob and potential form data):
766
782
  that._initXHRData(o);
767
783
  // Add progress listeners for this chunk upload:
@@ -808,6 +824,9 @@
808
824
  o.context,
809
825
  [jqXHR, textStatus, errorThrown]
810
826
  );
827
+ })
828
+ .always(function () {
829
+ that._deinitProgressListener(o);
811
830
  });
812
831
  };
813
832
  this._enhancePromise(promise);
@@ -909,6 +928,7 @@
909
928
  }).fail(function (jqXHR, textStatus, errorThrown) {
910
929
  that._onFail(jqXHR, textStatus, errorThrown, options);
911
930
  }).always(function (jqXHRorResult, textStatus, jqXHRorError) {
931
+ that._deinitProgressListener(options);
912
932
  that._onAlways(
913
933
  jqXHRorResult,
914
934
  textStatus,
@@ -1126,7 +1146,7 @@
1126
1146
  dirReader = entry.createReader();
1127
1147
  readEntries();
1128
1148
  } else {
1129
- // Return an empy list for file system items
1149
+ // Return an empty list for file system items
1130
1150
  // other than files or directories:
1131
1151
  dfd.resolve([]);
1132
1152
  }
@@ -6,10 +6,10 @@
6
6
  * https://blueimp.net
7
7
  *
8
8
  * Licensed under the MIT license:
9
- * http://www.opensource.org/licenses/MIT
9
+ * https://opensource.org/licenses/MIT
10
10
  */
11
11
 
12
- /* global define, require, window, document */
12
+ /* global define, require, window, document, JSON */
13
13
 
14
14
  ;(function (factory) {
15
15
  'use strict';
@@ -27,7 +27,14 @@
27
27
  'use strict';
28
28
 
29
29
  // Helper variable to create unique names for the transport iframes:
30
- var counter = 0;
30
+ var counter = 0,
31
+ jsonAPI = $,
32
+ jsonParse = 'parseJSON';
33
+
34
+ if ('JSON' in window && 'parse' in JSON) {
35
+ jsonAPI = JSON;
36
+ jsonParse = 'parse';
37
+ }
31
38
 
32
39
  // The iframe transport accepts four additional options:
33
40
  // options.fileInput: a jQuery collection of file input fields
@@ -197,7 +204,7 @@
197
204
  return iframe && $(iframe[0].body).text();
198
205
  },
199
206
  'iframe json': function (iframe) {
200
- return iframe && $.parseJSON($(iframe[0].body).text());
207
+ return iframe && jsonAPI[jsonParse]($(iframe[0].body).text());
201
208
  },
202
209
  'iframe html': function (iframe) {
203
210
  return iframe && $(iframe[0].body).html();
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.4
4
+ version: 4.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas von Deyen
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2019-09-27 00:00:00.000000000 Z
16
+ date: 2019-08-23 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: active_model_serializers
@@ -245,22 +245,22 @@ dependencies:
245
245
  name: rails
246
246
  requirement: !ruby/object:Gem::Requirement
247
247
  requirements:
248
- - - "~>"
248
+ - - ">="
249
249
  - !ruby/object:Gem::Version
250
- version: '5.0'
250
+ version: 5.0.0
251
251
  - - "<"
252
252
  - !ruby/object:Gem::Version
253
- version: '6.0'
253
+ version: '6.1'
254
254
  type: :runtime
255
255
  prerelease: false
256
256
  version_requirements: !ruby/object:Gem::Requirement
257
257
  requirements:
258
- - - "~>"
258
+ - - ">="
259
259
  - !ruby/object:Gem::Version
260
- version: '5.0'
260
+ version: 5.0.0
261
261
  - - "<"
262
262
  - !ruby/object:Gem::Version
263
- version: '6.0'
263
+ version: '6.1'
264
264
  - !ruby/object:Gem::Dependency
265
265
  name: ransack
266
266
  requirement: !ruby/object:Gem::Requirement
@@ -299,16 +299,22 @@ dependencies:
299
299
  name: responders
300
300
  requirement: !ruby/object:Gem::Requirement
301
301
  requirements:
302
- - - "~>"
302
+ - - ">="
303
303
  - !ruby/object:Gem::Version
304
304
  version: '2.0'
305
+ - - "<"
306
+ - !ruby/object:Gem::Version
307
+ version: '4.0'
305
308
  type: :runtime
306
309
  prerelease: false
307
310
  version_requirements: !ruby/object:Gem::Requirement
308
311
  requirements:
309
- - - "~>"
312
+ - - ">="
310
313
  - !ruby/object:Gem::Version
311
314
  version: '2.0'
315
+ - - "<"
316
+ - !ruby/object:Gem::Version
317
+ version: '4.0'
312
318
  - !ruby/object:Gem::Dependency
313
319
  name: select2-rails
314
320
  requirement: !ruby/object:Gem::Requirement
@@ -357,6 +363,118 @@ dependencies:
357
363
  - - ">="
358
364
  - !ruby/object:Gem::Version
359
365
  version: '2.5'
366
+ - !ruby/object:Gem::Dependency
367
+ name: capybara
368
+ requirement: !ruby/object:Gem::Requirement
369
+ requirements:
370
+ - - "~>"
371
+ - !ruby/object:Gem::Version
372
+ version: '3.0'
373
+ type: :development
374
+ prerelease: false
375
+ version_requirements: !ruby/object:Gem::Requirement
376
+ requirements:
377
+ - - "~>"
378
+ - !ruby/object:Gem::Version
379
+ version: '3.0'
380
+ - !ruby/object:Gem::Dependency
381
+ name: capybara-screenshot
382
+ requirement: !ruby/object:Gem::Requirement
383
+ requirements:
384
+ - - "~>"
385
+ - !ruby/object:Gem::Version
386
+ version: '1.0'
387
+ type: :development
388
+ prerelease: false
389
+ version_requirements: !ruby/object:Gem::Requirement
390
+ requirements:
391
+ - - "~>"
392
+ - !ruby/object:Gem::Version
393
+ version: '1.0'
394
+ - !ruby/object:Gem::Dependency
395
+ name: factory_bot_rails
396
+ requirement: !ruby/object:Gem::Requirement
397
+ requirements:
398
+ - - "~>"
399
+ - !ruby/object:Gem::Version
400
+ version: '5.0'
401
+ type: :development
402
+ prerelease: false
403
+ version_requirements: !ruby/object:Gem::Requirement
404
+ requirements:
405
+ - - "~>"
406
+ - !ruby/object:Gem::Version
407
+ version: '5.0'
408
+ - !ruby/object:Gem::Dependency
409
+ name: rails-controller-testing
410
+ requirement: !ruby/object:Gem::Requirement
411
+ requirements:
412
+ - - "~>"
413
+ - !ruby/object:Gem::Version
414
+ version: '1.0'
415
+ type: :development
416
+ prerelease: false
417
+ version_requirements: !ruby/object:Gem::Requirement
418
+ requirements:
419
+ - - "~>"
420
+ - !ruby/object:Gem::Version
421
+ version: '1.0'
422
+ - !ruby/object:Gem::Dependency
423
+ name: rspec-activemodel-mocks
424
+ requirement: !ruby/object:Gem::Requirement
425
+ requirements:
426
+ - - "~>"
427
+ - !ruby/object:Gem::Version
428
+ version: '1.0'
429
+ type: :development
430
+ prerelease: false
431
+ version_requirements: !ruby/object:Gem::Requirement
432
+ requirements:
433
+ - - "~>"
434
+ - !ruby/object:Gem::Version
435
+ version: '1.0'
436
+ - !ruby/object:Gem::Dependency
437
+ name: rspec-rails
438
+ requirement: !ruby/object:Gem::Requirement
439
+ requirements:
440
+ - - ">="
441
+ - !ruby/object:Gem::Version
442
+ version: 4.0.0.beta2
443
+ type: :development
444
+ prerelease: false
445
+ version_requirements: !ruby/object:Gem::Requirement
446
+ requirements:
447
+ - - ">="
448
+ - !ruby/object:Gem::Version
449
+ version: 4.0.0.beta2
450
+ - !ruby/object:Gem::Dependency
451
+ name: selenium-webdriver
452
+ requirement: !ruby/object:Gem::Requirement
453
+ requirements:
454
+ - - "~>"
455
+ - !ruby/object:Gem::Version
456
+ version: '3.8'
457
+ type: :development
458
+ prerelease: false
459
+ version_requirements: !ruby/object:Gem::Requirement
460
+ requirements:
461
+ - - "~>"
462
+ - !ruby/object:Gem::Version
463
+ version: '3.8'
464
+ - !ruby/object:Gem::Dependency
465
+ name: shoulda-matchers
466
+ requirement: !ruby/object:Gem::Requirement
467
+ requirements:
468
+ - - "~>"
469
+ - !ruby/object:Gem::Version
470
+ version: '4.0'
471
+ type: :development
472
+ prerelease: false
473
+ version_requirements: !ruby/object:Gem::Requirement
474
+ requirements:
475
+ - - "~>"
476
+ - !ruby/object:Gem::Version
477
+ version: '4.0'
360
478
  description: Alchemy is a powerful, userfriendly and flexible Rails 5 CMS.
361
479
  email:
362
480
  - alchemy@magiclabs.de
@@ -366,6 +484,7 @@ extra_rdoc_files: []
366
484
  files:
367
485
  - ".codeclimate.yml"
368
486
  - ".editorconfig"
487
+ - ".github/FUNDING.yml"
369
488
  - ".github/ISSUE_TEMPLATE/Bug_report.md"
370
489
  - ".github/ISSUE_TEMPLATE/Feature_request.md"
371
490
  - ".gitignore"
@@ -373,7 +492,6 @@ files:
373
492
  - ".localeapp/config.rb"
374
493
  - ".rspec"
375
494
  - ".rubocop.yml"
376
- - ".teatro.yml"
377
495
  - ".travis.yml"
378
496
  - ".yardopts"
379
497
  - CHANGELOG.md
@@ -838,7 +956,6 @@ files:
838
956
  - lib/alchemy/page_layout.rb
839
957
  - lib/alchemy/paths.rb
840
958
  - lib/alchemy/permissions.rb
841
- - lib/alchemy/picture_attributes.rb
842
959
  - lib/alchemy/resource.rb
843
960
  - lib/alchemy/resources_helper.rb
844
961
  - lib/alchemy/routing_constraints.rb