effective_regions 1.8.0 → 1.8.1
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/javascripts/ck_assets.js.coffee +27 -0
- data/app/assets/stylesheets/ck_assets.scss +3 -0
- data/app/controllers/effective/ck_assets_controller.rb +15 -0
- data/app/controllers/effective/regions_controller.rb +2 -2
- data/app/models/effective/ck_asset.rb +25 -0
- data/app/models/effective/snippets/current_date_time.rb +4 -1
- data/app/models/effective/snippets/current_user_info.rb +4 -1
- data/app/models/effective/snippets/snippet.rb +12 -8
- data/app/views/effective/ck_assets/_form.html.haml +7 -0
- data/app/views/effective/ck_assets/index.html.haml +19 -0
- data/config/effective_regions.rb +1 -0
- data/config/routes.rb +2 -0
- data/db/migrate/01_create_effective_regions.rb.erb +7 -0
- data/lib/effective_regions.rb +15 -4
- data/lib/effective_regions/engine.rb +4 -0
- data/lib/effective_regions/version.rb +1 -1
- metadata +7 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c2c1cb3c431ab51a22dd198cd4b72f8768937cf
|
4
|
+
data.tar.gz: 1fb2b99f024b3406fecbafd4e0a9901cefb044da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 835fa67a7173a4aef9970b8c81004ae719bc711a7f0c5bdc458783fa1355100f01b96d91d3da8a20da4a6fff19e44338b58e0aaf47ff4b3dfbc22a50cb794647
|
7
|
+
data.tar.gz: 2b29c1d3c256c04ee3abc043aa9b2e310146f19787c49c5a12f17459f65b4b6840824d5a52f21cfb5c9667f1c787211b8118f93c741e036bbd2712cb5becf147
|
@@ -0,0 +1,27 @@
|
|
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
|
+
|
@@ -0,0 +1,15 @@
|
|
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
|
+
|
@@ -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.
|
17
|
+
EffectiveRegions.authorize!(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.
|
79
|
+
EffectiveRegions.authorize!(self, :edit, Effective::Region.new)
|
80
80
|
|
81
81
|
klass = "Effective::Snippets::#{region_params[:name].try(:classify)}".safe_constantize
|
82
82
|
|
@@ -0,0 +1,25 @@
|
|
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,18 +1,17 @@
|
|
1
|
-
require 'virtus'
|
2
|
-
|
3
1
|
module Effective
|
4
2
|
module Snippets
|
5
3
|
class Snippet
|
6
|
-
include Virtus.model
|
7
|
-
|
8
4
|
# SO I have to add some restrictions on how snippets are built:
|
9
5
|
|
10
6
|
# Each Snippet has to be a block (or inline) element with nested children.
|
11
7
|
# It has to start with a root object
|
12
8
|
# 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
|
13
11
|
|
14
|
-
|
15
|
-
|
12
|
+
def snippet_attributes
|
13
|
+
[:id, :region]
|
14
|
+
end
|
16
15
|
|
17
16
|
# This is going to return all snippet objects that are saved in any Effective::Regions
|
18
17
|
def self.all(type = nil)
|
@@ -59,15 +58,20 @@ module Effective
|
|
59
58
|
# And it will be assigned when the effective_region is rendered
|
60
59
|
|
61
60
|
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
|
-
|
66
|
+
@id || "snippet_#{object_id}"
|
67
|
+
end
|
68
|
+
|
69
|
+
def region
|
70
|
+
@region || Effective::Region.new
|
67
71
|
end
|
68
72
|
|
69
73
|
def data
|
70
|
-
self.
|
74
|
+
(self.snippet_attributes - [:region, :id]).inject({}) { |h, name| h[name] = public_send(name); h}
|
71
75
|
end
|
72
76
|
|
73
77
|
def to_partial_path
|
@@ -0,0 +1,7 @@
|
|
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
|
+
|
@@ -0,0 +1,19 @@
|
|
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
|
data/config/effective_regions.rb
CHANGED
data/config/routes.rb
CHANGED
@@ -6,6 +6,8 @@ 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
|
9
11
|
end
|
10
12
|
|
11
13
|
scope '/edit' do # Changing this, means changing the effective_ckeditor routes
|
@@ -12,6 +12,13 @@ class CreateEffectiveRegions < ActiveRecord::Migration[4.2]
|
|
12
12
|
t.datetime :created_at
|
13
13
|
end
|
14
14
|
|
15
|
+
create_table <%= @ck_assets_table_name %> do |t|
|
16
|
+
t.boolean :global, default: false
|
17
|
+
|
18
|
+
t.datetime :updated_at
|
19
|
+
t.datetime :created_at
|
20
|
+
end
|
21
|
+
|
15
22
|
add_index <%= @regions_table_name %>, [:regionable_type, :regionable_id]
|
16
23
|
add_index <%= @regions_table_name %>, :regionable_id
|
17
24
|
end
|
data/lib/effective_regions.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
require 'virtus'
|
2
1
|
require 'effective_ckeditor'
|
3
2
|
require 'effective_regions/engine'
|
4
3
|
require 'effective_regions/version'
|
5
4
|
|
6
5
|
module EffectiveRegions
|
7
6
|
mattr_accessor :regions_table_name
|
7
|
+
mattr_accessor :ck_assets_table_name
|
8
|
+
|
8
9
|
mattr_accessor :authorization_method
|
9
10
|
mattr_accessor :before_save_method
|
10
11
|
|
@@ -13,10 +14,20 @@ module EffectiveRegions
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def self.authorized?(controller, action, resource)
|
16
|
-
if
|
17
|
-
|
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
|
18
26
|
end
|
19
|
-
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.authorize!(controller, action, resource)
|
30
|
+
raise Effective::AccessDenied.new('Access Denied', action, resource) unless authorized?(controller, action, resource)
|
20
31
|
end
|
21
32
|
|
22
33
|
# Returns a Snippet.new() for every class in the /app/effective/snippets/* directory
|
@@ -23,5 +23,9 @@ 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
|
+
|
26
30
|
end
|
27
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_regions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
@@ -38,20 +38,6 @@ 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'
|
55
41
|
description: Create editable content regions within your existing, ordinary ActionView::Base
|
56
42
|
views, and update content with an actually-good full-screen WYSIWYG editor.
|
57
43
|
email:
|
@@ -64,13 +50,17 @@ files:
|
|
64
50
|
- README.md
|
65
51
|
- Rakefile
|
66
52
|
- app/assets/images/effective/templates/image_and_title.png
|
53
|
+
- app/assets/javascripts/ck_assets.js.coffee
|
67
54
|
- app/assets/javascripts/effective/snippets/current_date_time.js.coffee
|
68
55
|
- 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
|
69
58
|
- app/controllers/effective/regions_controller.rb
|
70
59
|
- app/helpers/effective_regions_controller_helper.rb
|
71
60
|
- app/helpers/effective_regions_helper.rb
|
72
61
|
- app/models/concerns/acts_as_regionable.rb
|
73
62
|
- app/models/effective/access_denied.rb
|
63
|
+
- app/models/effective/ck_asset.rb
|
74
64
|
- app/models/effective/region.rb
|
75
65
|
- app/models/effective/snippets/current_date_time.rb
|
76
66
|
- app/models/effective/snippets/current_user_info.rb
|
@@ -79,6 +69,8 @@ files:
|
|
79
69
|
- app/models/effective/templates/template.rb
|
80
70
|
- app/models/effective/templates/three_column.rb
|
81
71
|
- 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
|
82
74
|
- app/views/effective/snippets/_current_date_time.html.haml
|
83
75
|
- app/views/effective/snippets/_current_user_info.html.haml
|
84
76
|
- app/views/effective/templates/_image_and_title.html.haml
|