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.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +4 -0
- data/.travis.yml +8 -6
- data/CHANGELOG.md +15 -10
- data/Gemfile +2 -10
- data/README.md +11 -4
- data/Rakefile +3 -2
- data/alchemy_cms.gemspec +11 -2
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +3 -3
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +1 -1
- data/app/assets/stylesheets/alchemy/buttons.scss +15 -2
- data/app/assets/stylesheets/alchemy/elements.scss +4 -0
- data/app/assets/stylesheets/alchemy/form_fields.scss +1 -0
- data/app/assets/stylesheets/alchemy/forms.scss +1 -0
- data/app/assets/stylesheets/alchemy/frame.scss +9 -29
- data/app/assets/stylesheets/alchemy/navigation.scss +30 -6
- data/app/assets/stylesheets/alchemy/preview_window.scss +4 -0
- data/app/controllers/alchemy/admin/elements_controller.rb +2 -2
- data/app/controllers/alchemy/pages_controller.rb +9 -4
- data/app/helpers/alchemy/elements_helper.rb +2 -2
- data/app/models/alchemy/element.rb +9 -4
- data/app/models/alchemy/page/page_elements.rb +17 -25
- data/app/models/alchemy/page/page_scopes.rb +1 -1
- data/app/models/alchemy/picture.rb +0 -21
- data/app/views/alchemy/admin/elements/_element.html.erb +2 -1
- data/app/views/alchemy/admin/pages/edit.html.erb +10 -10
- data/lib/alchemy/on_page_layout.rb +1 -1
- data/lib/alchemy/test_support/factories.rb +3 -1
- data/lib/alchemy/test_support/factories/attachment_factory.rb +2 -0
- data/lib/alchemy/test_support/factories/content_factory.rb +5 -0
- data/lib/alchemy/test_support/factories/dummy_user_factory.rb +2 -0
- data/lib/alchemy/test_support/factories/element_factory.rb +3 -0
- data/lib/alchemy/test_support/factories/essence_file_factory.rb +2 -0
- data/lib/alchemy/test_support/factories/essence_picture_factory.rb +2 -0
- data/lib/alchemy/test_support/factories/essence_text_factory.rb +2 -0
- data/lib/alchemy/test_support/factories/language_factory.rb +2 -0
- data/lib/alchemy/test_support/factories/page_factory.rb +2 -0
- data/lib/alchemy/test_support/factories/picture_factory.rb +2 -0
- data/lib/alchemy/test_support/factories/site_factory.rb +2 -0
- data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -1
- data/lib/alchemy/upgrader/tasks/cells_migration.rb +2 -4
- data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +2 -3
- data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +4 -4
- data/lib/alchemy/version.rb +5 -1
- data/lib/alchemy_cms.rb +0 -1
- data/lib/rails/generators/alchemy/elements/templates/view.html.erb +1 -1
- data/lib/rails/generators/alchemy/elements/templates/view.html.haml +1 -1
- data/lib/rails/generators/alchemy/elements/templates/view.html.slim +1 -1
- data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +5 -2
- data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +5 -2
- data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +28 -8
- data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +11 -4
- metadata +129 -12
- data/.teatro.yml +0 -8
- data/lib/alchemy/picture_attributes.rb +0 -28
data/lib/alchemy/version.rb
CHANGED
data/lib/alchemy_cms.rb
CHANGED
@@ -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'
|
@@ -6,7 +6,7 @@
|
|
6
6
|
* https://blueimp.net
|
7
7
|
*
|
8
8
|
* Licensed under the MIT license:
|
9
|
-
*
|
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(
|
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
|
-
*
|
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(
|
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
|
-
*
|
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"
|
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(
|
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
|
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
|
-
*
|
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 &&
|
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.
|
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-
|
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:
|
250
|
+
version: 5.0.0
|
251
251
|
- - "<"
|
252
252
|
- !ruby/object:Gem::Version
|
253
|
-
version: '6.
|
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:
|
260
|
+
version: 5.0.0
|
261
261
|
- - "<"
|
262
262
|
- !ruby/object:Gem::Version
|
263
|
-
version: '6.
|
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
|