effective_bootstrap 0.9.28 → 0.9.29

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1fc4ca7c84ace7b7d118f7d0c2820192fd121c7e3dbc1f1a86a2018e91fb28d
4
- data.tar.gz: 5146c6f244c97a850c8d749e14b8171c6e453980e98a7ac1c18db16add6444dd
3
+ metadata.gz: c7962cda76a99f9a2af980a67a9f876223b722d83ecafee967bc15cbd3da22a2
4
+ data.tar.gz: 7adf1ba3532157b54039e67a6faeb2675a5f6826c88271a0597aca25dfb121d7
5
5
  SHA512:
6
- metadata.gz: ea08f202b403d071b2188c28b8231a6e31c242bf474ed552fe9175413e3466953d2aaea5e28381f4c8a98b87a23c5a3b2b2c38a148e25e582c44e6548bd801d0
7
- data.tar.gz: 74b29d0657fae0f4362ab62fcad9fcf6c9093993c12081347f488467709263d85332f3e15f4832935b35e91792145b7c324030e20bc9b515862784af0c7bafde
6
+ metadata.gz: '079863a2874583e9d3080aea824fd847e1026c0d7c7ac6591a13a6b7927633e25c4f5ada8278d0aed219facebff6901ab06498d7c34794d256300701fb5b8e9e'
7
+ data.tar.gz: 352ccfac174eb0fed1f10627a881407e9f9f331a23968c72a259dac329e4abe46521588cb5aa0d40a4b280e86a2fcdaab0b9f8e84024a8f196eb5c701c24a877
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2019 Code and Effect Inc.
1
+ Copyright 2021 Code and Effect Inc.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -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
@@ -10,6 +10,7 @@
10
10
  //= require ./effective_time/input
11
11
  //= require ./effective_time_zone_select/input
12
12
 
13
+ //= require ./effective_article_editor/input
13
14
  //= require ./effective_clear/input
14
15
  //= require ./effective_checks/input
15
16
  //= require ./effective_ck_editor/input
@@ -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
@@ -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
- # The following are all valid config keys
8
- mattr_accessor :authorization_method
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
- def self.authorized?(controller, action, resource)
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 += ['effective_bootstrap_manifest.js', 'icons/*']
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|
@@ -1,3 +1,3 @@
1
1
  module EffectiveBootstrap
2
- VERSION = '0.9.28'.freeze
2
+ VERSION = '0.9.29'.freeze
3
3
  end
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.28
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-05-18 00:00:00.000000000 Z
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: 4.0.0
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: 4.0.0
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