pagelet_rails 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +6 -1
- data/app/assets/javascripts/pagelet_rails.js +15 -3
- data/app/controllers/pagelet_proxy_controller.rb +1 -1
- data/app/helpers/pagelets_helper.rb +20 -9
- data/app/views/layouts/pagelet_rails/container.erb +1 -6
- data/lib/pagelet_rails/concerns/controller.rb +12 -2
- data/lib/pagelet_rails/concerns/placeholder.rb +1 -1
- data/lib/pagelet_rails/concerns/response_wrapper.rb +1 -1
- data/lib/pagelet_rails/concerns/tags.rb +24 -0
- data/lib/pagelet_rails/version.rb +1 -1
- data/lib/pagelet_rails.rb +1 -0
- metadata +4 -5
- data/bin/rails +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97462c6b25fab3b82e8fe2bba67bb3016e55d24e
|
4
|
+
data.tar.gz: 5ebaa4854e612096b42136b486fc4f7f1cdad17e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6ac654ef6e579b77207b9d492c030675f35f6f5d2ca2b1767d520b95702a337ae455d07202a14f41749b0ed4451f042edc2572657780accbce91e4778c33f0e
|
7
|
+
data.tar.gz: 5cb1c8361d0f6223dde0b989b2dc43923144ac4c2bbd8abe7b1643631d3e144b79f5528b4b9dfae1f30d88242e7208518be42f959f3c0a70e4a0795b780f0055
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -171,12 +171,17 @@ You can specify html attributes to pagelet with `html` option
|
|
171
171
|
|
172
172
|
### placeholder
|
173
173
|
|
174
|
+
Configuration for placeholder before pagelet is loaded.
|
175
|
+
|
174
176
|
```erb
|
175
177
|
<%= pagelet :pagelets_current_time, placeholder: { text: 'Loading...', height: 300 } %>
|
176
178
|
```
|
177
179
|
|
178
|
-
|
180
|
+
or use your own placeholder template
|
179
181
|
|
182
|
+
```erb
|
183
|
+
<%= pagelet :pagelets_current_time, placeholder: { view: 'path_to_template' } %>
|
184
|
+
```
|
180
185
|
|
181
186
|
### other
|
182
187
|
|
@@ -75,7 +75,7 @@
|
|
75
75
|
};
|
76
76
|
|
77
77
|
root.loadPagelets = function(selector) {
|
78
|
-
selector = selector || '[data-
|
78
|
+
selector = selector || '[data-pagelet-load]';
|
79
79
|
var groups = {};
|
80
80
|
|
81
81
|
$(selector).each(function(index, elem) {
|
@@ -112,14 +112,26 @@
|
|
112
112
|
}
|
113
113
|
};
|
114
114
|
|
115
|
-
root.pageletArrived = function(id, content) {
|
115
|
+
root.pageletArrived = function(id, content, tags) {
|
116
116
|
root.placeToContainer(id, content);
|
117
117
|
root.processDataRemoteTags();
|
118
|
+
root.tagsChanged(id, tags);
|
118
119
|
$(document).trigger('pagelet-loaded');
|
119
120
|
};
|
120
121
|
|
121
122
|
root.placeToContainer = function(id, content) {
|
122
|
-
$('#' + id).
|
123
|
+
$('#' + id).replaceWith(content);
|
124
|
+
};
|
125
|
+
|
126
|
+
root.tagsChanged = function(id, tags) {
|
127
|
+
if (tags && tags.length > 0) {
|
128
|
+
var selector = $();
|
129
|
+
tags.forEach(function(tag) {
|
130
|
+
selector = selector.add('[data-pagelet-tags~="' + tag + '"]:not(#' + id + ')');
|
131
|
+
});
|
132
|
+
|
133
|
+
root.loadPagelets(selector);
|
134
|
+
}
|
123
135
|
};
|
124
136
|
|
125
137
|
root.processDataRemoteTags = function() {
|
@@ -10,7 +10,7 @@ class PageletProxyController < ::ApplicationController
|
|
10
10
|
response.stream.write "\n"
|
11
11
|
|
12
12
|
@urls.each do |url|
|
13
|
-
response.stream.write pagelet(url)
|
13
|
+
response.stream.write pagelet(url, skip_parent_params: true)
|
14
14
|
response.stream.write "\n\n//\n\n"
|
15
15
|
end
|
16
16
|
ensure
|
@@ -10,7 +10,16 @@ module PageletsHelper
|
|
10
10
|
html_opts[:class] = classes.join(' ')
|
11
11
|
|
12
12
|
html_opts['data-pagelet-container'] = true
|
13
|
-
html_opts['data-pagelet-options'] = pagelet_encoded_original_options
|
13
|
+
html_opts['data-pagelet-options'] = pagelet_encoded_original_options(
|
14
|
+
html: {id: html_opts[:id]}
|
15
|
+
)
|
16
|
+
|
17
|
+
if Rails.env.development?
|
18
|
+
html_opts['data-debug'] = PageletRails::Encryptor.decode(html_opts['data-pagelet-options'])
|
19
|
+
end
|
20
|
+
|
21
|
+
html_opts['data-pagelet-tags'] = identified_by.join(' ')
|
22
|
+
html_opts['data-widget-url'] = url_for(params.to_unsafe_h)
|
14
23
|
|
15
24
|
if pagelet_options.ajax_group
|
16
25
|
html_opts['data-pagelet-group'] = pagelet_options.ajax_group
|
@@ -66,18 +75,20 @@ module PageletsHelper
|
|
66
75
|
p_options.deep_merge! html: { id: html_id }
|
67
76
|
|
68
77
|
add_pagelet_stream html_id, &Proc.new {
|
69
|
-
pagelet path, p_options.merge(remote: false
|
78
|
+
pagelet path, p_options.merge(remote: false)
|
70
79
|
}
|
71
80
|
end
|
72
81
|
|
73
|
-
|
74
|
-
|
75
|
-
params.to_unsafe_h
|
76
|
-
|
77
|
-
|
78
|
-
|
82
|
+
unless p_options.delete(:skip_parent_params)
|
83
|
+
parent_params =
|
84
|
+
if params.respond_to?(:to_unsafe_h)
|
85
|
+
params.to_unsafe_h
|
86
|
+
else
|
87
|
+
params.to_h
|
88
|
+
end
|
79
89
|
|
80
|
-
|
90
|
+
p_options.deep_merge!(parent_params: parent_params)
|
91
|
+
end
|
81
92
|
|
82
93
|
c = controller_class.new
|
83
94
|
c.pagelet_options p_options
|
@@ -1,8 +1,3 @@
|
|
1
|
-
|
1
|
+
<%= content_tag :div, html_container_attributes do %>
|
2
2
|
<%= content_for?(:content) ? yield(:content) : yield %>
|
3
|
-
|
4
|
-
<% else %>
|
5
|
-
<%= content_tag :div, html_container_attributes do %>
|
6
|
-
<%= content_for?(:content) ? yield(:content) : yield %>
|
7
|
-
<% end %>
|
8
3
|
<% end %>
|
@@ -8,6 +8,9 @@ module PageletRails::Concerns::Controller
|
|
8
8
|
include PageletRails::Concerns::Options
|
9
9
|
include PageletRails::Concerns::Cache
|
10
10
|
include PageletRails::Concerns::Placeholder
|
11
|
+
include PageletRails::Concerns::Tags
|
12
|
+
|
13
|
+
include PageletsHelper
|
11
14
|
|
12
15
|
prepend_before_action :merge_original_pagelet_options
|
13
16
|
prepend_before_action :append_pagelet_view_paths
|
@@ -52,11 +55,12 @@ module PageletRails::Concerns::Controller
|
|
52
55
|
if params[:original_pagelet_options]
|
53
56
|
opts = PageletRails::Encryptor.decode(params[:original_pagelet_options])
|
54
57
|
pagelet_options(opts)
|
58
|
+
pagelet_options(original_options: opts)
|
55
59
|
end
|
56
60
|
end
|
57
61
|
|
58
|
-
def pagelet_encoded_original_options
|
59
|
-
encode_data = pagelet_options.original_options.to_h.except('remote')
|
62
|
+
def pagelet_encoded_original_options new_opts = {}
|
63
|
+
encode_data = pagelet_options.original_options.to_h.except('remote').merge(new_opts)
|
60
64
|
PageletRails::Encryptor.encode(encode_data)
|
61
65
|
end
|
62
66
|
|
@@ -79,4 +83,10 @@ module PageletRails::Concerns::Controller
|
|
79
83
|
render_remotely
|
80
84
|
end
|
81
85
|
|
86
|
+
def redirect_to *args
|
87
|
+
options = args.extract_options!
|
88
|
+
new_params = options.merge(original_pagelet_options: pagelet_encoded_original_options)
|
89
|
+
|
90
|
+
render plain: pagelet(url_for(*args, new_params))
|
91
|
+
end
|
82
92
|
end
|
@@ -31,7 +31,7 @@ module PageletRails::Concerns::Placeholder
|
|
31
31
|
render body: "<!--#include virtual=\"#{path}\" -->"
|
32
32
|
else
|
33
33
|
if pagelet_options.remote != :stream
|
34
|
-
pagelet_options html: { 'data-
|
34
|
+
pagelet_options html: { 'data-pagelet-load' => 'true' }
|
35
35
|
end
|
36
36
|
|
37
37
|
default_view = '/layouts/pagelet_rails/loading_placeholder'
|
@@ -21,7 +21,7 @@ module PageletRails::Concerns::ResponseWrapper
|
|
21
21
|
js = ActionController::Base.helpers.escape_javascript html
|
22
22
|
|
23
23
|
html = ActionController::Base.helpers.raw(
|
24
|
-
"PageletRails.pageletArrived('#{id}', '#{js}');"
|
24
|
+
"PageletRails.pageletArrived('#{id}', '#{js}', #{trigger_change.to_json.html_safe});"
|
25
25
|
)
|
26
26
|
|
27
27
|
self.response_body = [html]
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module PageletRails::Concerns::Tags
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
helper_method :identified_by
|
6
|
+
helper_method :trigger_change
|
7
|
+
end
|
8
|
+
|
9
|
+
def trigger_change tag = nil
|
10
|
+
@trigger_change ||= []
|
11
|
+
if tag.present?
|
12
|
+
@trigger_change << tag
|
13
|
+
end
|
14
|
+
@trigger_change
|
15
|
+
end
|
16
|
+
|
17
|
+
def identified_by tag = nil
|
18
|
+
@identified_by ||= []
|
19
|
+
if tag.present?
|
20
|
+
@identified_by << tag
|
21
|
+
end
|
22
|
+
@identified_by
|
23
|
+
end
|
24
|
+
end
|
data/lib/pagelet_rails.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pagelet_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Katunin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -140,8 +140,7 @@ description: Improve perceived performance of your rails application with minimu
|
|
140
140
|
effort
|
141
141
|
email:
|
142
142
|
- antulik@gmail.com
|
143
|
-
executables:
|
144
|
-
- rails
|
143
|
+
executables: []
|
145
144
|
extensions: []
|
146
145
|
extra_rdoc_files: []
|
147
146
|
files:
|
@@ -166,7 +165,6 @@ files:
|
|
166
165
|
- app/views/layouts/pagelet_rails/container.erb
|
167
166
|
- app/views/layouts/pagelet_rails/inner.erb
|
168
167
|
- app/views/layouts/pagelet_rails/loading_placeholder.erb
|
169
|
-
- bin/rails
|
170
168
|
- config/routes.rb
|
171
169
|
- gemfiles/rails_4.2.8.gemfile
|
172
170
|
- gemfiles/rails_5.0.2.gemfile
|
@@ -180,6 +178,7 @@ files:
|
|
180
178
|
- lib/pagelet_rails/concerns/placeholder.rb
|
181
179
|
- lib/pagelet_rails/concerns/response_wrapper.rb
|
182
180
|
- lib/pagelet_rails/concerns/routes.rb
|
181
|
+
- lib/pagelet_rails/concerns/tags.rb
|
183
182
|
- lib/pagelet_rails/encryptor.rb
|
184
183
|
- lib/pagelet_rails/engine.rb
|
185
184
|
- lib/pagelet_rails/router.rb
|
data/bin/rails
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This command will automatically be run when you run "rails" with Rails gems
|
3
|
-
# installed from the root of your application.
|
4
|
-
|
5
|
-
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
6
|
-
ENGINE_PATH = File.expand_path('../../lib/pagelet_rails/engine', __FILE__)
|
7
|
-
|
8
|
-
# Set up gems listed in the Gemfile.
|
9
|
-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
10
|
-
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
11
|
-
|
12
|
-
require 'rails/all'
|
13
|
-
require 'rails/engine/commands'
|