refinerycms-core 4.0.3 → 4.1.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.
- checksums.yaml +4 -4
- data/app/assets/config/refinery_core_manifest.js +9 -1
- data/app/assets/images/refinery/logo-large.png +0 -0
- data/app/assets/images/refinery/logo-medium.png +0 -0
- data/app/assets/images/refinery/logo-site-bar.png +0 -0
- data/app/assets/images/refinery/logo-small-medium.png +0 -0
- data/app/assets/images/refinery/logo-small.png +0 -0
- data/app/assets/images/refinery/logo-tiny.png +0 -0
- data/app/assets/images/refinery/logo.png +0 -0
- data/app/assets/images/refinery/refinery-cms-logo.svg +1 -558
- data/app/assets/javascripts/refinery/admin.js.erb +37 -21
- data/app/assets/javascripts/refinery/ajaxy_pagination.js +16 -0
- data/app/assets/javascripts/refinery/image_crop.js +101 -0
- data/app/assets/javascripts/refinery/interface.js.erb +42 -0
- data/app/assets/javascripts/refinery/refinery.js.erb +3 -3
- data/app/assets/javascripts/refinery/submit_continue.js.erb +23 -0
- data/app/assets/stylesheets/refinery/components/_file_type_icons.scss +36 -0
- data/app/assets/stylesheets/refinery/components/_icons.scss +89 -47
- data/app/assets/stylesheets/refinery/global/_colours.scss +12 -5
- data/app/assets/stylesheets/refinery/mixins/_images.scss +99 -0
- data/app/assets/stylesheets/refinery/mixins/_locales.scss +22 -0
- data/app/assets/stylesheets/refinery/mixins/_rounded.scss +9 -23
- data/app/assets/stylesheets/refinery/plugins/_ui.scss +7 -4
- data/app/assets/stylesheets/refinery/refinery.scss +4 -1
- data/app/assets/stylesheets/refinery/sections/_layout.scss +490 -265
- data/app/controllers/refinery/admin/dialogs_controller.rb +6 -6
- data/app/helpers/refinery/action_helper.rb +75 -0
- data/app/helpers/refinery/icon_helper.rb +51 -0
- data/app/helpers/refinery/image_helper.rb +1 -1
- data/app/helpers/refinery/pagination_helper.rb +1 -0
- data/app/helpers/refinery/site_bar_helper.rb +10 -7
- data/app/helpers/refinery/tag_helper.rb +5 -36
- data/app/helpers/refinery/translation_helper.rb +12 -1
- data/app/views/refinery/_head.html.erb +1 -0
- data/app/views/refinery/_matomo_analytics.html.erb +18 -0
- data/app/views/refinery/_site_bar.html.erb +9 -9
- data/app/views/refinery/admin/_error_messages.html.erb +4 -4
- data/app/views/refinery/admin/_locale_picker.html.erb +8 -14
- data/config/initializers/assets.rb +5 -1
- data/config/initializers/zeitwerk.rb +12 -0
- data/config/locales/en.yml +3 -1
- data/config/locales/sk.yml +7 -0
- data/lib/generators/refinery/cms/cms_generator.rb +24 -20
- data/lib/generators/refinery/core/templates/config/initializers/refinery/core.rb.erb +5 -0
- data/lib/generators/refinery/dummy/dummy_generator.rb +32 -10
- data/lib/generators/refinery/dummy/templates/rails/application.rb.erb +27 -7
- data/lib/generators/refinery/dummy/templates/rails/boot.rb.erb +1 -2
- data/lib/generators/refinery/dummy/templates/rails/database.yml +55 -14
- data/lib/generators/refinery/dummy/templates/rails/manifest.js +3 -0
- data/lib/generators/refinery/dummy/templates/rails/storage.yml +7 -0
- data/lib/generators/refinery/engine/engine_generator.rb +1 -0
- data/lib/generators/refinery/engine/templates/Gemfile +1 -2
- data/lib/generators/refinery/engine/templates/Rakefile +2 -2
- data/lib/generators/refinery/engine/templates/app/controllers/refinery/namespace/admin/plural_name_controller.rb.erb +1 -1
- data/lib/generators/refinery/engine/templates/app/controllers/refinery/namespace/plural_name_controller.rb.erb +1 -1
- data/lib/generators/refinery/engine/templates/app/models/refinery/namespace/singular_name.rb.erb +1 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_form.html.erb +1 -1
- data/lib/generators/refinery/engine/templates/db/migrate/1_create_namespace_plural_name.rb.erb +15 -4
- data/lib/generators/refinery/engine/templates/lib/generators/refinery/extension_plural_name_generator.rb.erb +1 -1
- data/lib/generators/refinery/engine/templates/lib/refinery/plural_name.rb.erb +1 -1
- data/lib/refinery/admin/base_controller.rb +2 -2
- data/lib/refinery/application_controller.rb +1 -2
- data/lib/refinery/cli.rb +1 -1
- data/lib/refinery/core/configuration.rb +4 -1
- data/lib/refinery/core/engine.rb +20 -0
- data/lib/refinery/core.rb +0 -1
- data/lib/refinery/crud.rb +33 -32
- data/lib/refinery/extension_generation.rb +55 -8
- data/lib/refinery/generators/generated_attribute.rb +13 -0
- data/lib/refinery/plugins.rb +1 -1
- data/lib/refinery/version.rb +4 -4
- data/lib/refinery.rb +9 -2
- data/lib/refinerycms/core.rb +1 -0
- data/lib/tasks/refinery.rake +3 -3
- data/refinerycms-core.gemspec +21 -27
- data/spec/controllers/refinery/sitemap_controller_spec.rb +1 -1
- data/spec/helpers/refinery/tag_helper_spec.rb +1 -1
- data/spec/helpers/refinery/translation_helper_spec.rb +46 -10
- data/spec/lib/generators/refinery/cms/cms_generator_spec.rb +6 -6
- data/spec/lib/generators/refinery/engine/engine_generator_multiple_resources_spec.rb +23 -2
- data/spec/lib/refinery/cli_spec.rb +2 -2
- data/spec/lib/refinery/{users_manager_spec.rb → core/users_manager_spec.rb} +1 -1
- data/spec/lib/refinery/crud_spec.rb +2 -1
- data/spec/presenters/refinery/translated_field_presenter_spec.rb +5 -7
- data/spec/support/refinery.rb +2 -2
- data/spec/{features → system}/refinery/admin/custom_assets_spec.rb +1 -1
- data/spec/system/refinery/admin/dialogs_spec.rb +29 -0
- data/spec/{features → system}/refinery/admin/xhr_paging_spec.rb +10 -7
- data/spec/{features → system}/refinery/application_layout_spec.rb +3 -4
- data/spec/{features → system}/refinery/core_spec.rb +1 -1
- data/spec/{features → system}/refinery/site_bar_spec.rb +5 -3
- data/vendor/assets/javascripts/canvas-to-blob.js +126 -0
- data/vendor/assets/javascripts/cropper.js +3715 -0
- data/vendor/assets/stylesheets/cropper.css +305 -0
- metadata +108 -171
- checksums.yaml.gz.sig +0 -0
- data/app/assets/javascripts/refinery/ajaxy_pagination.js.coffee +0 -10
- data/app/assets/javascripts/refinery/interface.js.coffee.erb +0 -33
- data/app/assets/javascripts/refinery/submit_continue.js.coffee.erb +0 -12
- data/spec/features/refinery/admin/dialogs_spec.rb +0 -29
- data/spec/support/database_cleaner.rb +0 -21
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -5
- /data/lib/generators/refinery/cms/templates/config/{database.yml.mysql → database.mysql.yml} +0 -0
- /data/lib/generators/refinery/cms/templates/config/{database.yml.postgresql → database.postgresql.yml} +0 -0
- /data/lib/generators/refinery/cms/templates/config/{database.yml.sqlite3 → database.sqlite3.yml} +0 -0
- /data/lib/refinery/{users_manager.rb → core/users_manager.rb} +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "spec_helper"
|
|
2
4
|
|
|
3
5
|
module Refinery
|
|
4
|
-
describe "site bar", :
|
|
6
|
+
describe "site bar", type: :system do
|
|
5
7
|
refinery_login
|
|
6
8
|
|
|
7
9
|
describe "logout link" do
|
|
@@ -10,10 +12,10 @@ module Refinery
|
|
|
10
12
|
context "when set" do
|
|
11
13
|
before do
|
|
12
14
|
allow(Refinery::Core).to receive(:refinery_logout_path).and_return(logout_path)
|
|
13
|
-
visit Refinery::Core.backend_path
|
|
14
15
|
end
|
|
15
16
|
|
|
16
17
|
it "is present" do
|
|
18
|
+
visit Refinery::Core.backend_path
|
|
17
19
|
expect(page).to have_selector("a[href='#{logout_path}']")
|
|
18
20
|
expect(page).to have_content("Log out")
|
|
19
21
|
end
|
|
@@ -62,7 +64,7 @@ module Refinery
|
|
|
62
64
|
end
|
|
63
65
|
|
|
64
66
|
it "has an 'edit this page' button" do
|
|
65
|
-
expect(page).to have_link("Edit this page", :
|
|
67
|
+
expect(page).to have_link("Edit this page", href: refinery.edit_admin_page_path(root_page))
|
|
66
68
|
end
|
|
67
69
|
|
|
68
70
|
end
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* JavaScript Canvas to Blob
|
|
3
|
+
* https://github.com/blueimp/JavaScript-Canvas-to-Blob
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2012, Sebastian Tschan
|
|
6
|
+
* https://blueimp.net
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the MIT license:
|
|
9
|
+
* https://opensource.org/licenses/MIT
|
|
10
|
+
*
|
|
11
|
+
* Based on stackoverflow user Stoive's code snippet:
|
|
12
|
+
* http://stackoverflow.com/q/4998908
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* global atob, Blob, define */
|
|
16
|
+
|
|
17
|
+
;(function (window) {
|
|
18
|
+
'use strict'
|
|
19
|
+
|
|
20
|
+
var CanvasPrototype =
|
|
21
|
+
window.HTMLCanvasElement && window.HTMLCanvasElement.prototype
|
|
22
|
+
var hasBlobConstructor =
|
|
23
|
+
window.Blob &&
|
|
24
|
+
(function () {
|
|
25
|
+
try {
|
|
26
|
+
return Boolean(new Blob())
|
|
27
|
+
} catch (e) {
|
|
28
|
+
return false
|
|
29
|
+
}
|
|
30
|
+
})()
|
|
31
|
+
var hasArrayBufferViewSupport =
|
|
32
|
+
hasBlobConstructor &&
|
|
33
|
+
window.Uint8Array &&
|
|
34
|
+
(function () {
|
|
35
|
+
try {
|
|
36
|
+
return new Blob([new Uint8Array(100)]).size === 100
|
|
37
|
+
} catch (e) {
|
|
38
|
+
return false
|
|
39
|
+
}
|
|
40
|
+
})()
|
|
41
|
+
var BlobBuilder =
|
|
42
|
+
window.BlobBuilder ||
|
|
43
|
+
window.WebKitBlobBuilder ||
|
|
44
|
+
window.MozBlobBuilder ||
|
|
45
|
+
window.MSBlobBuilder
|
|
46
|
+
var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/
|
|
47
|
+
var dataURLtoBlob =
|
|
48
|
+
(hasBlobConstructor || BlobBuilder) &&
|
|
49
|
+
window.atob &&
|
|
50
|
+
window.ArrayBuffer &&
|
|
51
|
+
window.Uint8Array &&
|
|
52
|
+
function (dataURI) {
|
|
53
|
+
var matches,
|
|
54
|
+
mediaType,
|
|
55
|
+
isBase64,
|
|
56
|
+
dataString,
|
|
57
|
+
byteString,
|
|
58
|
+
arrayBuffer,
|
|
59
|
+
intArray,
|
|
60
|
+
i,
|
|
61
|
+
bb
|
|
62
|
+
// Parse the dataURI components as per RFC 2397
|
|
63
|
+
matches = dataURI.match(dataURIPattern)
|
|
64
|
+
if (!matches) {
|
|
65
|
+
throw new Error('invalid data URI')
|
|
66
|
+
}
|
|
67
|
+
// Default to text/plain;charset=US-ASCII
|
|
68
|
+
mediaType = matches[2]
|
|
69
|
+
? matches[1]
|
|
70
|
+
: 'text/plain' + (matches[3] || ';charset=US-ASCII')
|
|
71
|
+
isBase64 = !!matches[4]
|
|
72
|
+
dataString = dataURI.slice(matches[0].length)
|
|
73
|
+
if (isBase64) {
|
|
74
|
+
// Convert base64 to raw binary data held in a string:
|
|
75
|
+
byteString = atob(dataString)
|
|
76
|
+
} else {
|
|
77
|
+
// Convert base64/URLEncoded data component to raw binary:
|
|
78
|
+
byteString = decodeURIComponent(dataString)
|
|
79
|
+
}
|
|
80
|
+
// Write the bytes of the string to an ArrayBuffer:
|
|
81
|
+
arrayBuffer = new ArrayBuffer(byteString.length)
|
|
82
|
+
intArray = new Uint8Array(arrayBuffer)
|
|
83
|
+
for (i = 0; i < byteString.length; i += 1) {
|
|
84
|
+
intArray[i] = byteString.charCodeAt(i)
|
|
85
|
+
}
|
|
86
|
+
// Write the ArrayBuffer (or ArrayBufferView) to a blob:
|
|
87
|
+
if (hasBlobConstructor) {
|
|
88
|
+
return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {
|
|
89
|
+
type: mediaType
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
bb = new BlobBuilder()
|
|
93
|
+
bb.append(arrayBuffer)
|
|
94
|
+
return bb.getBlob(mediaType)
|
|
95
|
+
}
|
|
96
|
+
if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {
|
|
97
|
+
if (CanvasPrototype.mozGetAsFile) {
|
|
98
|
+
CanvasPrototype.toBlob = function (callback, type, quality) {
|
|
99
|
+
var self = this
|
|
100
|
+
setTimeout(function () {
|
|
101
|
+
if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {
|
|
102
|
+
callback(dataURLtoBlob(self.toDataURL(type, quality)))
|
|
103
|
+
} else {
|
|
104
|
+
callback(self.mozGetAsFile('blob', type))
|
|
105
|
+
}
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
} else if (CanvasPrototype.toDataURL && dataURLtoBlob) {
|
|
109
|
+
CanvasPrototype.toBlob = function (callback, type, quality) {
|
|
110
|
+
var self = this
|
|
111
|
+
setTimeout(function () {
|
|
112
|
+
callback(dataURLtoBlob(self.toDataURL(type, quality)))
|
|
113
|
+
})
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (typeof define === 'function' && define.amd) {
|
|
118
|
+
define(function () {
|
|
119
|
+
return dataURLtoBlob
|
|
120
|
+
})
|
|
121
|
+
} else if (typeof module === 'object' && module.exports) {
|
|
122
|
+
module.exports = dataURLtoBlob
|
|
123
|
+
} else {
|
|
124
|
+
window.dataURLtoBlob = dataURLtoBlob
|
|
125
|
+
}
|
|
126
|
+
})(window)
|