effective_bootstrap 0.9.28 → 0.9.29
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/MIT-LICENSE +1 -1
- data/app/assets/javascripts/effective_article_editor/initialize.js.coffee +18 -0
- data/app/assets/javascripts/effective_article_editor/input.js +1 -0
- data/app/assets/javascripts/effective_bootstrap.js +1 -0
- data/app/assets/stylesheets/effective_article_editor/input.scss +1 -0
- data/app/assets/stylesheets/effective_article_editor/overrides.scss +1 -0
- data/app/assets/stylesheets/effective_bootstrap_article_editor.scss +1 -0
- data/app/models/effective/form_builder.rb +4 -0
- data/app/models/effective/form_inputs/article_editor.rb +77 -0
- data/config/effective_bootstrap.rb +0 -22
- data/lib/effective_bootstrap.rb +4 -23
- data/lib/effective_bootstrap/engine.rb +5 -1
- data/lib/effective_bootstrap/version.rb +1 -1
- metadata +24 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7962cda76a99f9a2af980a67a9f876223b722d83ecafee967bc15cbd3da22a2
|
4
|
+
data.tar.gz: 7adf1ba3532157b54039e67a6faeb2675a5f6826c88271a0597aca25dfb121d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '079863a2874583e9d3080aea824fd847e1026c0d7c7ac6591a13a6b7927633e25c4f5ada8278d0aed219facebff6901ab06498d7c34794d256300701fb5b8e9e'
|
7
|
+
data.tar.gz: 352ccfac174eb0fed1f10627a881407e9f9f331a23968c72a259dac329e4abe46521588cb5aa0d40a4b280e86a2fcdaab0b9f8e84024a8f196eb5c701c24a877
|
data/MIT-LICENSE
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
# https://imperavi.com/article/
|
2
|
+
|
3
|
+
uploadActiveStorage = (editor, data) ->
|
4
|
+
for file in data.files
|
5
|
+
upload = new ActiveStorage.DirectUpload(file, '/rails/active_storage/direct_uploads')
|
6
|
+
|
7
|
+
upload.create (error, blob) =>
|
8
|
+
url = '/rails/active_storage/blobs/redirect/' + blob.signed_id + '/' + blob.filename
|
9
|
+
editor.complete({ file: { url: url }}, data.e)
|
10
|
+
|
11
|
+
(this.EffectiveBootstrap || {}).effective_article_editor = ($element, options) ->
|
12
|
+
|
13
|
+
if options['active_storage']
|
14
|
+
options['image'] = {
|
15
|
+
upload: (editor, data) -> uploadActiveStorage(editor, data)
|
16
|
+
}
|
17
|
+
|
18
|
+
ArticleEditor($element, options)
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require ./initialize
|
@@ -0,0 +1 @@
|
|
1
|
+
@import 'overrides';
|
@@ -0,0 +1 @@
|
|
1
|
+
body { padding-top: 0px !important; }
|
@@ -0,0 +1 @@
|
|
1
|
+
@import 'effective_article_editor/input';
|
@@ -22,6 +22,10 @@ module Effective
|
|
22
22
|
alias_method :super_text_area, :text_area
|
23
23
|
alias_method :super_hidden_field, :hidden_field
|
24
24
|
|
25
|
+
def article_editor(name, options = {}, &block)
|
26
|
+
Effective::FormInputs::ArticleEditor.new(name, options, builder: self).to_html(&block)
|
27
|
+
end
|
28
|
+
|
25
29
|
def clear(name = 'Clear', options = {})
|
26
30
|
(options = name; name = 'Clear') if name.kind_of?(Hash)
|
27
31
|
Effective::FormInputs::Clear.new(name, options, builder: self).to_html
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module Effective
|
2
|
+
module FormInputs
|
3
|
+
class ArticleEditor < Effective::FormInput
|
4
|
+
|
5
|
+
def build_input(&block)
|
6
|
+
@builder.super_text_area(name, options[:input])
|
7
|
+
end
|
8
|
+
|
9
|
+
def input_html_options
|
10
|
+
{ class: 'effective_article_editor form-control', id: unique_id, autocomplete: 'off' }
|
11
|
+
end
|
12
|
+
|
13
|
+
def input_js_options
|
14
|
+
{
|
15
|
+
active_storage: active_storage,
|
16
|
+
css: '/assets/effective_article_editor/',
|
17
|
+
custom: {
|
18
|
+
css: ['/assets/application.css', '/assets/effective_bootstrap_article_editor.css']
|
19
|
+
},
|
20
|
+
classes: {
|
21
|
+
body: 'article-editor-body',
|
22
|
+
table: 'table'
|
23
|
+
},
|
24
|
+
grid: {
|
25
|
+
classname: 'row',
|
26
|
+
columns: 12,
|
27
|
+
gutter: '1px',
|
28
|
+
offset: {
|
29
|
+
left: '15px',
|
30
|
+
right: '15px',
|
31
|
+
},
|
32
|
+
patterns: {
|
33
|
+
'6|6': 'col-sm-6|col-sm-6',
|
34
|
+
'4|4|4': 'col-sm-4|col-sm-4|col-sm-4',
|
35
|
+
'3|3|3|3': 'col-sm-3|col-sm-3|col-sm-3|col-sm-3',
|
36
|
+
'2|2|2|2|2|2': 'col-sm-2|col-sm-2|col-sm-2|col-sm-2|col-sm-2|col-sm-2',
|
37
|
+
'3|6|3': 'col-sm-3|col-sm-6|col-sm-3',
|
38
|
+
'2|8|2': 'col-sm-2|col-sm-8|col-sm-2',
|
39
|
+
'5|7': 'col-sm-5|col-sm-7',
|
40
|
+
'7|5': 'col-sm-7|col-sm-5',
|
41
|
+
'4|8': 'col-sm-4|col-sm-8',
|
42
|
+
'8|4': 'col-sm-8|col-sm-4',
|
43
|
+
'3|9': 'col-sm-3|col-sm-9',
|
44
|
+
'9|3': 'col-sm-9|col-sm-3',
|
45
|
+
'2|10': 'col-sm-2|col-sm-10',
|
46
|
+
'10|2': 'col-sm-10|col-sm-2',
|
47
|
+
'12': 'col-sm-12'
|
48
|
+
}
|
49
|
+
},
|
50
|
+
plugins: ['blockcode', 'imageposition', 'imageresize', 'inlineformat', 'removeformat', 'reorder', 'style'],
|
51
|
+
quote: {
|
52
|
+
template: '<blockquote><p></p></blockquote>'
|
53
|
+
},
|
54
|
+
styles: {
|
55
|
+
table: {
|
56
|
+
'bordered': { title: 'Bordered', classname: 'table-bordered' },
|
57
|
+
'responsive': { title: 'Responsive', classname: 'table-responsive' },
|
58
|
+
'small': { title: 'Small', classname: 'table-sm' },
|
59
|
+
'striped': { title: 'Striped', classname: 'table-striped' },
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
def active_storage
|
66
|
+
return @active_storage unless @active_storage.nil?
|
67
|
+
|
68
|
+
@active_storage = if options.key?(:active_storage)
|
69
|
+
options.delete(:active_storage)
|
70
|
+
else
|
71
|
+
defined?(ActiveStorage).present?
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -1,26 +1,4 @@
|
|
1
1
|
EffectiveBootstrap.setup do |config|
|
2
|
-
# Authorization Method
|
3
|
-
#
|
4
|
-
# This method is called by all controller actions with the appropriate action and resource
|
5
|
-
# If it raises an exception or returns false, an Effective::AccessDenied Error will be raised
|
6
|
-
#
|
7
|
-
# Use via Proc:
|
8
|
-
# Proc.new { |controller, action, resource| authorize!(action, resource) } # CanCan
|
9
|
-
# Proc.new { |controller, action, resource| can?(action, resource) } # CanCan with skip_authorization_check
|
10
|
-
# Proc.new { |controller, action, resource| authorize "#{action}?", resource } # Pundit
|
11
|
-
# Proc.new { |controller, action, resource| current_user.is?(:admin) } # Custom logic
|
12
|
-
#
|
13
|
-
# Use via Boolean:
|
14
|
-
# config.authorization_method = true # Always authorized
|
15
|
-
# config.authorization_method = false # Always unauthorized
|
16
|
-
#
|
17
|
-
# Use via Method (probably in your application_controller.rb):
|
18
|
-
# config.authorization_method = :my_authorization_method
|
19
|
-
# def my_authorization_method(resource, action)
|
20
|
-
# true
|
21
|
-
# end
|
22
|
-
config.authorization_method = Proc.new { |controller, action, resource| authorize!(action, resource) }
|
23
|
-
|
24
2
|
# Replaces rails_ujs data-confirm with a custom inline implementation.
|
25
3
|
# You will need to recompile assets (or "rm -rf tmp/") if you change this.
|
26
4
|
config.use_custom_data_confirm = true
|
data/lib/effective_bootstrap.rb
CHANGED
@@ -1,33 +1,14 @@
|
|
1
1
|
require 'inline_svg'
|
2
|
+
require 'effective_resources'
|
2
3
|
require 'effective_bootstrap/engine'
|
3
4
|
require 'effective_bootstrap/version'
|
4
5
|
|
5
6
|
module EffectiveBootstrap
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
mattr_accessor :use_custom_data_confirm
|
11
|
-
|
12
|
-
def self.setup
|
13
|
-
yield self
|
8
|
+
def self.config_keys
|
9
|
+
[:use_custom_data_confirm]
|
14
10
|
end
|
15
11
|
|
16
|
-
|
17
|
-
@_exceptions ||= [Effective::AccessDenied, (CanCan::AccessDenied if defined?(CanCan)), (Pundit::NotAuthorizedError if defined?(Pundit))].compact
|
18
|
-
|
19
|
-
return !!authorization_method unless authorization_method.respond_to?(:call)
|
20
|
-
controller = controller.controller if controller.respond_to?(:controller)
|
21
|
-
|
22
|
-
begin
|
23
|
-
!!(controller || self).instance_exec((controller || self), action, resource, &authorization_method)
|
24
|
-
rescue *@_exceptions
|
25
|
-
false
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.authorize!(controller, action, resource)
|
30
|
-
raise Effective::AccessDenied.new('Access Denied', action, resource) unless authorized?(controller, action, resource)
|
31
|
-
end
|
12
|
+
include EffectiveGem
|
32
13
|
|
33
14
|
end
|
@@ -8,7 +8,11 @@ module EffectiveBootstrap
|
|
8
8
|
end
|
9
9
|
|
10
10
|
initializer 'effective_bootstrap.assets' do |app|
|
11
|
-
app.config.assets.precompile += [
|
11
|
+
app.config.assets.precompile += [
|
12
|
+
'effective_bootstrap_manifest.js',
|
13
|
+
'effective_bootstrap_article_editor.css',
|
14
|
+
'icons/*'
|
15
|
+
]
|
12
16
|
end
|
13
17
|
|
14
18
|
initializer 'effective_bootstrap.action_text' do |app|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_bootstrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -26,18 +26,32 @@ dependencies:
|
|
26
26
|
version: 4.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bootstrap
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "<"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "<"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: effective_resources
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
47
|
+
version: '0'
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: inline_svg
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -406,6 +420,8 @@ files:
|
|
406
420
|
- app/assets/images/icons/zap.svg
|
407
421
|
- app/assets/images/icons/zoom-in.svg
|
408
422
|
- app/assets/images/icons/zoom-out.svg
|
423
|
+
- app/assets/javascripts/effective_article_editor/initialize.js.coffee
|
424
|
+
- app/assets/javascripts/effective_article_editor/input.js
|
409
425
|
- app/assets/javascripts/effective_bootstrap.js
|
410
426
|
- app/assets/javascripts/effective_bootstrap/base.js.coffee
|
411
427
|
- app/assets/javascripts/effective_bootstrap/confirm.js.coffee.erb
|
@@ -595,11 +611,14 @@ files:
|
|
595
611
|
- app/assets/javascripts/moment/locale/zh-hk.js
|
596
612
|
- app/assets/javascripts/moment/locale/zh-tw.js
|
597
613
|
- app/assets/javascripts/moment/moment.js
|
614
|
+
- app/assets/stylesheets/effective_article_editor/input.scss
|
615
|
+
- app/assets/stylesheets/effective_article_editor/overrides.scss
|
598
616
|
- app/assets/stylesheets/effective_bootstrap.scss
|
599
617
|
- app/assets/stylesheets/effective_bootstrap/base.scss
|
600
618
|
- app/assets/stylesheets/effective_bootstrap/forms.scss
|
601
619
|
- app/assets/stylesheets/effective_bootstrap/icons.scss
|
602
620
|
- app/assets/stylesheets/effective_bootstrap/overrides.scss
|
621
|
+
- app/assets/stylesheets/effective_bootstrap_article_editor.scss
|
603
622
|
- app/assets/stylesheets/effective_bootstrap_editor.scss
|
604
623
|
- app/assets/stylesheets/effective_checks/input.scss
|
605
624
|
- app/assets/stylesheets/effective_datetime/bootstrap-datetimepicker.scss
|
@@ -625,6 +644,7 @@ files:
|
|
625
644
|
- app/helpers/effective_icons_helper.rb
|
626
645
|
- app/models/effective/form_builder.rb
|
627
646
|
- app/models/effective/form_input.rb
|
647
|
+
- app/models/effective/form_inputs/article_editor.rb
|
628
648
|
- app/models/effective/form_inputs/check_box.rb
|
629
649
|
- app/models/effective/form_inputs/checks.rb
|
630
650
|
- app/models/effective/form_inputs/ck_editor.rb
|