effective_regions 1.7.6 → 1.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: bf541eef8c3a489df97f8a3cb9e532a1256211d5608cbae9504b979cc1fc13ab
4
- data.tar.gz: 3f79cb16aa0bd86ba62ac02fb3e04f209f4ec769f251621718d256664f5aa0ed
2
+ SHA1:
3
+ metadata.gz: 1263b1785b74028263bd269c6b95e9f26511d591
4
+ data.tar.gz: b93fa090047b7886802717433b1a45360cca8875
5
5
  SHA512:
6
- metadata.gz: f30d24e871fcdb8e377c58d5c15ac23f32de61146f96f65a16d17b956259ad2487c19edb32a0ac2194e8f8748c13914487e293a500513061c991376a6a6d4090
7
- data.tar.gz: c367543c70c201d9ec73206ba251c98e2955f05a58099cf41fd53aca04bf1c0a2988629995067619e7e4142603d776beab3d6e4e2befac9f9ad07396b0878224
6
+ metadata.gz: 54df70cae26e612b314fc31484ac227dd5b916a76e6f8e6770eee9a3092109e504b223f2f8a0b700571b45ff85002af96f70cb8a4809b1a417064fe1a93d5d0d
7
+ data.tar.gz: 5c1819a50d38f706fae8ece1643677bb493ea03def2e468eaaaac9e22965f85875c833fab6ab59b2122608c0a4c4b8541816993b2c623eee1f00db4a3402e1ce
@@ -14,7 +14,7 @@ module Effective
14
14
  skip_log_page_views quiet: true, only: [:snippet] if defined?(EffectiveLogging)
15
15
 
16
16
  def edit
17
- EffectiveRegions.authorize!(self, :edit, Effective::Region.new)
17
+ EffectiveRegions.authorized?(self, :edit, Effective::Region.new())
18
18
 
19
19
  cookies['effective_regions_editting'] = {:value => params[:exit].presence || request.referrer, :path => '/'}
20
20
 
@@ -76,7 +76,7 @@ module Effective
76
76
  end
77
77
 
78
78
  def snippet # This is a GET. CKEDITOR passes us data, we need to render the non-editable content
79
- EffectiveRegions.authorize!(self, :edit, Effective::Region.new)
79
+ EffectiveRegions.authorized?(self, :edit, Effective::Region.new())
80
80
 
81
81
  klass = "Effective::Snippets::#{region_params[:name].try(:classify)}".safe_constantize
82
82
 
@@ -28,10 +28,8 @@ module EffectiveRegionsHelper
28
28
  }
29
29
 
30
30
  if defined?(EffectivePages) && defined?(EffectiveRoles)
31
- if(menu = Effective::Menu.new()).respond_to?(:is_role_restricted?)
32
- payload[:roles] = EffectiveRoles.roles_collection(menu, current_user)
33
- payload[:pages] = ([['', '']] + Effective::Page.order(:title).map { |page| [page.title, page.id] })
34
- end
31
+ payload[:roles] = EffectiveRoles.roles_collection(Effective::Menu.new(), current_user)
32
+ payload[:pages] = ([['', '']] + Effective::Page.order(:title).map { |page| [page.title, page.id] })
35
33
  end
36
34
 
37
35
  render(:partial => 'effective_regions/include_tags_javascript', :locals => {:payload => payload})
@@ -1,10 +1,7 @@
1
1
  module Effective
2
2
  module Snippets
3
3
  class CurrentDateTime < Snippet
4
-
5
- def snippet_attributes
6
- super + [:format]
7
- end
4
+ attribute :format, String
8
5
 
9
6
  def snippet_tag
10
7
  :span
@@ -1,10 +1,7 @@
1
1
  module Effective
2
2
  module Snippets
3
3
  class CurrentUserInfo < Snippet
4
-
5
- def snippet_attributes
6
- super + [:method]
7
- end
4
+ attribute :method, String
8
5
 
9
6
  def snippet_tag
10
7
  :span
@@ -1,17 +1,18 @@
1
+ require 'virtus'
2
+
1
3
  module Effective
2
4
  module Snippets
3
5
  class Snippet
6
+ include Virtus.model
7
+
4
8
  # SO I have to add some restrictions on how snippets are built:
5
9
 
6
10
  # Each Snippet has to be a block (or inline) element with nested children.
7
11
  # It has to start with a root object
8
12
  # That root object has to do {snippet_data(snippet)}
9
- #attr_accessor :id # This will be snippet_12345
10
- #attr_accessor :region # The region Object
11
13
 
12
- def snippet_attributes
13
- [:id, :region]
14
- end
14
+ attribute :id, String # This will be snippet_12345
15
+ attribute :region, Effective::Region # The region Object
15
16
 
16
17
  # This is going to return all snippet objects that are saved in any Effective::Regions
17
18
  def self.all(type = nil)
@@ -58,20 +59,15 @@ module Effective
58
59
  # And it will be assigned when the effective_region is rendered
59
60
 
60
61
  def initialize(atts = {})
61
- snippet_attributes.each { |name| self.class.send(:attr_accessor, name) }
62
62
  (atts || {}).each { |k, v| self.send("#{k}=", v) if respond_to?("#{k}=") }
63
63
  end
64
64
 
65
65
  def id
66
- @id || "snippet_#{object_id}"
67
- end
68
-
69
- def region
70
- @region || Effective::Region.new
66
+ super.presence || "snippet_#{object_id}"
71
67
  end
72
68
 
73
69
  def data
74
- (self.snippet_attributes - [:region, :id]).inject({}) { |h, name| h[name] = public_send(name); h}
70
+ self.attributes.reject { |k, v| [:region, :id].include?(k) }
75
71
  end
76
72
 
77
73
  def to_partial_path
@@ -1,6 +1,5 @@
1
1
  EffectiveRegions.setup do |config|
2
2
  config.regions_table_name = :regions
3
- config.ck_assets_table_name = :ck_assets
4
3
 
5
4
  # Authorization Method
6
5
  #
@@ -6,8 +6,6 @@ EffectiveRegions::Engine.routes.draw do
6
6
  scope :module => 'effective' do
7
7
  scope '/effective' do
8
8
  get 'snippet/:id' => 'regions#snippet', :as => :snippet # Get a Snippet based on passed values
9
-
10
- resources :ck_assets, only: [:index, :update] # Ckeditor IFrame
11
9
  end
12
10
 
13
11
  scope '/edit' do # Changing this, means changing the effective_ckeditor routes
@@ -14,19 +14,10 @@ class CreateEffectiveRegions < ActiveRecord::Migration[4.2]
14
14
 
15
15
  add_index <%= @regions_table_name %>, [:regionable_type, :regionable_id]
16
16
  add_index <%= @regions_table_name %>, :regionable_id
17
-
18
- create_table <%= @ck_assets_table_name %> do |t|
19
- t.boolean :global, default: false
20
-
21
- t.datetime :updated_at
22
- t.datetime :created_at
23
- end
24
-
25
17
  end
26
18
 
27
19
  def self.down
28
20
  drop_table <%= @regions_table_name %>
29
- drop_table <%= @ck_assets_table_name %>
30
21
  end
31
22
 
32
23
  end
@@ -1,11 +1,10 @@
1
+ require 'virtus'
1
2
  require 'effective_ckeditor'
2
3
  require 'effective_regions/engine'
3
4
  require 'effective_regions/version'
4
5
 
5
6
  module EffectiveRegions
6
7
  mattr_accessor :regions_table_name
7
- mattr_accessor :ck_assets_table_name
8
-
9
8
  mattr_accessor :authorization_method
10
9
  mattr_accessor :before_save_method
11
10
 
@@ -14,20 +13,10 @@ module EffectiveRegions
14
13
  end
15
14
 
16
15
  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
16
+ if authorization_method.respond_to?(:call) || authorization_method.kind_of?(Symbol)
17
+ raise Effective::AccessDenied.new() unless (controller || self).instance_exec(controller, action, resource, &authorization_method)
26
18
  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)
19
+ true
31
20
  end
32
21
 
33
22
  # Returns a Snippet.new() for every class in the /app/effective/snippets/* directory
@@ -23,9 +23,5 @@ module EffectiveRegions
23
23
  eval File.read("#{config.root}/config/effective_regions.rb")
24
24
  end
25
25
 
26
- initializer "effective_regions.append_precompiled_assets" do |app|
27
- Rails.application.config.assets.precompile += ['ck_assets.js', 'ck_assets.css']
28
- end
29
-
30
26
  end
31
27
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveRegions
2
- VERSION = '1.7.6'.freeze
2
+ VERSION = '1.8.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_regions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.6
4
+ version: 1.8.0
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: 2019-08-13 00:00:00.000000000 Z
11
+ date: 2019-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: virtus
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: Create editable content regions within your existing, ordinary ActionView::Base
42
56
  views, and update content with an actually-good full-screen WYSIWYG editor.
43
57
  email:
@@ -50,17 +64,13 @@ files:
50
64
  - README.md
51
65
  - Rakefile
52
66
  - app/assets/images/effective/templates/image_and_title.png
53
- - app/assets/javascripts/ck_assets.js.coffee
54
67
  - app/assets/javascripts/effective/snippets/current_date_time.js.coffee
55
68
  - app/assets/javascripts/effective/snippets/current_user_info.js.coffee
56
- - app/assets/stylesheets/ck_assets.scss
57
- - app/controllers/effective/ck_assets_controller.rb
58
69
  - app/controllers/effective/regions_controller.rb
59
70
  - app/helpers/effective_regions_controller_helper.rb
60
71
  - app/helpers/effective_regions_helper.rb
61
72
  - app/models/concerns/acts_as_regionable.rb
62
73
  - app/models/effective/access_denied.rb
63
- - app/models/effective/ck_asset.rb
64
74
  - app/models/effective/region.rb
65
75
  - app/models/effective/snippets/current_date_time.rb
66
76
  - app/models/effective/snippets/current_user_info.rb
@@ -69,8 +79,6 @@ files:
69
79
  - app/models/effective/templates/template.rb
70
80
  - app/models/effective/templates/three_column.rb
71
81
  - app/models/effective/templates/two_column.rb
72
- - app/views/effective/ck_assets/_form.html.haml
73
- - app/views/effective/ck_assets/index.html.haml
74
82
  - app/views/effective/snippets/_current_date_time.html.haml
75
83
  - app/views/effective/snippets/_current_user_info.html.haml
76
84
  - app/views/effective/templates/_image_and_title.html.haml
@@ -104,7 +112,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
112
  - !ruby/object:Gem::Version
105
113
  version: '0'
106
114
  requirements: []
107
- rubygems_version: 3.0.3
115
+ rubyforge_project:
116
+ rubygems_version: 2.4.5.1
108
117
  signing_key:
109
118
  specification_version: 4
110
119
  summary: Create editable content regions within your existing, ordinary ActionView::Base
@@ -1,27 +0,0 @@
1
- getCkEditorFuncNum = ->
2
- reParam = new RegExp( '(?:[\?&]|&)' + 'CKEditorFuncNum' + '=([^&]+)', 'i' )
3
- match = window.location.search.match(reParam)
4
-
5
- if match && match.length > 0
6
- match[1]
7
-
8
- $(document).on 'click', 'a[data-insert-ck-asset]', (event) ->
9
- ckeditor = getCkEditorFuncNum()
10
-
11
- if ckeditor && window.opener && window.opener.CKEDITOR
12
- event.preventDefault()
13
-
14
- attachment = $(event.currentTarget)
15
-
16
- url = attachment.attr('href') || attachment.attr('src')
17
- alt = attachment.attr('alt') || ''
18
-
19
- window.opener.CKEDITOR.tools.callFunction(ckeditor, url, ->
20
- dialog = this.getDialog()
21
-
22
- if dialog && dialog.getName() == 'image2'
23
- dialog.getContentElement('info', 'alt').setValue(alt)
24
- )
25
-
26
- window.close()
27
-
@@ -1,3 +0,0 @@
1
- body {
2
- padding: 10px;
3
- }
@@ -1,15 +0,0 @@
1
- module Effective
2
- class CkAssetsController < ApplicationController
3
- layout false
4
-
5
- include Effective::CrudController
6
-
7
- resource_scope -> { Effective::CkAsset.all.with_attached_files }
8
-
9
- def permitted_params
10
- params.require(:effective_ck_asset).permit!
11
- end
12
-
13
- end
14
- end
15
-
@@ -1,25 +0,0 @@
1
- # This object just holds an asset file
2
- # There is a single `global` ck asset in which we use for the ckeditor uploads form
3
-
4
- module Effective
5
- class CkAsset < ActiveRecord::Base
6
- self.table_name = EffectiveRegions.ck_assets_table_name.to_s
7
-
8
- # Only the global one
9
- has_many_attached :files
10
-
11
- # The instance ones will have just one file
12
- has_one_attached :file
13
-
14
- # Attributes
15
- # global :boolean
16
-
17
- def self.global
18
- CkAsset.where(global: true).first || CkAsset.create!(global: true)
19
- end
20
- end
21
- end
22
-
23
-
24
-
25
-
@@ -1,7 +0,0 @@
1
- = effective_form_with(model: ck_asset, url: effective_regions.ck_asset_path(ck_asset), remote: true) do |f|
2
- = f.hidden_field :id
3
-
4
- = f.file_field :files, label: 'Upload file', attachments_style: :ck_assets, click_submit: true
5
-
6
- = f.save 'Save', style: 'display: none;'
7
-
@@ -1,19 +0,0 @@
1
- !!!
2
- %html
3
- %head
4
- %title Insert / Upload
5
- %meta{'http-equiv' => 'X-UA-Compatible', :content => 'IE=edge,chrome=1'}
6
- %meta{:charset => 'utf-8'}
7
- %meta{:name => 'viewport', :content => 'width=device-width, initial-scale=1, maximum-scale=1'}
8
-
9
- = javascript_include_tag '//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js'
10
- = javascript_include_tag 'application'
11
- = stylesheet_link_tag 'application'
12
-
13
- = javascript_include_tag 'ck_assets'
14
- = stylesheet_link_tag 'ck_assets'
15
-
16
- = csrf_meta_tags
17
-
18
- %body
19
- = render 'effective/ck_assets/form', ck_asset: Effective::CkAsset.global