hancock_cms_goto 1.0.1.3 → 1.0.2

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
2
  SHA1:
3
- metadata.gz: 9771d8e1b490bf827afc4e10ab3e970cd6ed66da
4
- data.tar.gz: f947668e1a9d7afdde70f4046e3a20261bff84bc
3
+ metadata.gz: 932b515ab4747afce58b9df9d20db449b4ae7c06
4
+ data.tar.gz: ab16fc9166fb4dd6442d00747ccea30292fc4c88
5
5
  SHA512:
6
- metadata.gz: dc4e4f86484628d774e4e105167a22411e7a027852dd85cf4488065ae6645a1ea71a90dee736d4d27f9bb7a9ad108604f4c7f4cdd60c86afba8dddd305496ccf
7
- data.tar.gz: 4a77dae4bd934d11d0e7ec3c456180f9d990f02c7186bbc87a516f95f1846e0f98baaee5f0ef1ff67df6f677d0af67400f1cddbb7950fcacf0e6400ab542740b
6
+ metadata.gz: e6577e2407fae1ed2bb2275be10d41250264a84fa861229150b0a605920351fae0a45cfc7d038b24afd601bfb30f87fb6cc3a814de60b767963f3e4c66db7c2c
7
+ data.tar.gz: d5bd15db08c6203d61309cf090c83ce8383a08a8ed385f884a5064598402cbc2a746c475c38fb1b8ad21deed5fd376aa9c5b437a84cec1c84f37464cf6443f85
@@ -24,8 +24,15 @@ module Hancock::Goto::Decorators
24
24
  # end
25
25
 
26
26
  ############# rails_admin ##############
27
+ # def self.rails_admin_name_synonyms
28
+ # "".freeze
29
+ # end
30
+ # def self.rails_admin_navigation_icon
31
+ # ''.freeze
32
+ # end
33
+ #
27
34
  # def self.rails_admin_add_fields
28
- # [] #super
35
+ # [].freeze #super
29
36
  # end
30
37
  #
31
38
  # def self.rails_admin_add_config(config)
@@ -0,0 +1,8 @@
1
+ = hidden_field_tag nil, @target_url, id: 'redir'
2
+ javascript:
3
+ window.opener=null;
4
+ window.location.replace(document.getElementById('redir').value);
5
+ noscript
6
+ meta content="0;URL='#{@target_url}'" http-equiv="refresh"
7
+ = form_tag @target_url, method: "GET", authenticity_token: false, enforce_utf8: false do
8
+ = submit_tag "Continue"
@@ -30,8 +30,8 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "bundler", "~> 1.10"
31
31
  spec.add_development_dependency "rake", "~> 10.0"
32
32
 
33
- spec.add_dependency 'hancock_cms', [">=1.0.1", "<=2.1"]
34
- # spec.add_dependency 'hancock_cms', ["~> 1.0", "~> 2.1"]
33
+ spec.add_dependency 'hancock_cms', [">=1.0.2", "<2.1.x"]
34
+ # spec.add_dependency 'hancock_cms', ["~> 1.0.2", "~> 2.0"]
35
35
 
36
36
  spec.add_dependency 'nokogiri'
37
37
  spec.add_dependency 'addressable'
@@ -13,4 +13,6 @@ Hancock::Goto.configure do |config|
13
13
  # config.model_settings_support = !!defined?(RailsAdminModelSettings)
14
14
  # config.user_abilities_support = !!defined?(RailsAdminUserAbilities)
15
15
  # config.ra_comments_support = !!defined?(RailsAdminComments)
16
+
17
+ # config.method = :render_view # or :redirect_from_controller
16
18
  end
@@ -16,27 +16,34 @@ class <%= camelcased_class_name %> < Hancock::Goto::Transfer
16
16
  # end
17
17
 
18
18
  ############ rails_admin ##############
19
+ def self.rails_admin_name_synonyms
20
+ "".freeze
21
+ end
22
+ def self.rails_admin_navigation_icon
23
+ ''.freeze
24
+ end
25
+
19
26
  def self.rails_admin_add_fields
20
- [] #super
27
+ [].freeze #super
21
28
  end
22
29
 
23
30
  def self.rails_admin_add_config(config)
24
31
  #super(config)
25
32
  end
26
33
 
27
- def admin_can_user_defined_actions
34
+ def self.admin_can_user_defined_actions
28
35
  [].freeze
29
36
  end
30
- def admin_cannot_user_defined_actions
37
+ def self.admin_cannot_user_defined_actions
31
38
  [].freeze
32
39
  end
33
- def manager_can_user_defined_actions
40
+ def self.manager_can_user_defined_actions
34
41
  [].freeze
35
42
  end
36
- def manager_cannot_user_defined_actions
43
+ def self.manager_cannot_user_defined_actions
37
44
  [].freeze
38
45
  end
39
- def rails_admin_user_defined_visible_actions
46
+ def self.rails_admin_user_defined_visible_actions
40
47
  [].freeze
41
48
  end
42
49
 
@@ -1,12 +1,18 @@
1
1
  module Hancock::Goto
2
2
  module Admin
3
3
  module Transfer
4
- def self.config(fields = {})
4
+ def self.config(nav_label = nil, fields = {})
5
+ if nav_label.is_a?(Hash)
6
+ nav_label, fields = nav_label[:nav_label], nav_label
7
+ elsif nav_label.is_a?(Array)
8
+ nav_label, fields = nil, nav_label
9
+ end
10
+
5
11
  Proc.new {
6
12
  if defined?(Hancock::Feedback)
7
- navigation_label I18n.t('hancock.feedback')
13
+ navigation_label nav_label || I18n.t('hancock.feedback')
8
14
  else
9
- navigation_label I18n.t('hancock.goto')
15
+ navigation_label nav_label || I18n.t('hancock.goto')
10
16
  end
11
17
 
12
18
  field :creator do
@@ -17,7 +23,7 @@ module Hancock::Goto
17
23
  creator = bindings[:object].creator
18
24
  model_name = creator.class.to_param.gsub("::", "~").underscore
19
25
  _url = route.rails_admin.show_path(model_name: model_name, id: creator._id)
20
- route.link_to(creator.name_for_hancock_cms, _url, class: "creator_link")
26
+ route.link_to(creator, _url, class: "creator_link")
21
27
  end
22
28
  end
23
29
  end
@@ -58,12 +64,22 @@ module Hancock::Goto
58
64
  end
59
65
  field :session_id do
60
66
  searchable true
67
+ visible do
68
+ render_object = (bindings[:controller] || bindings[:view])
69
+ render_object and render_object.current_user.admin?
70
+ end
61
71
  end
62
72
  field :session_data_unpack do
63
73
  searchable true
64
74
  read_only true
75
+ visible do
76
+ render_object = (bindings[:controller] || bindings[:view])
77
+ render_object and render_object.current_user.admin?
78
+ end
65
79
  end
66
80
 
81
+ Hancock::RailsAdminGroupPatch::hancock_cms_group(self, fields)
82
+
67
83
  if block_given?
68
84
  yield self
69
85
  end
@@ -14,6 +14,7 @@ module Hancock
14
14
 
15
15
  attr_accessor :css_selector
16
16
  attr_accessor :href_regex
17
+ attr_accessor :href_attr_regex
17
18
  attr_accessor :excluded_hosts
18
19
 
19
20
  attr_accessor :add_nofollow
@@ -26,20 +27,25 @@ module Hancock
26
27
  attr_accessor :user_abilities_support
27
28
  attr_accessor :ra_comments_support
28
29
 
30
+ attr_accessor :method
31
+
29
32
  def initialize
30
33
  @css_selector = "a[href]"
31
34
  @href_regex = /^(https?:)?\/\//i
35
+ @href_attr_regex = /\shref=[\'\"](https?:)?\/\//i
32
36
  @excluded_hosts = []
33
37
 
34
38
  @add_nofollow = true
35
39
  @add_noindex = true
36
- @add_noreferrer = true
40
+ @add_noreferrer = false
37
41
  @add_noopener = true
38
42
  @del_attrs = true
39
43
 
40
44
  @model_settings_support = !!defined?(RailsAdminModelSettings)
41
45
  @user_abilities_support = !!defined?(RailsAdminUserAbilities)
42
46
  @ra_comments_support = !!defined?(RailsAdminComments)
47
+
48
+ @method = :render_view
43
49
  end
44
50
 
45
51
  def default_html_options
@@ -4,21 +4,41 @@ module Hancock::Goto
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  def index
7
- url = Addressable::URI.heuristic_parse(params[:url]) rescue nil
8
- referer = (request.referer ? Addressable::URI.parse(request.referer) : nil) rescue nil
7
+ begin
8
+ @url = Addressable::URI.heuristic_parse(params[:url])
9
+ @target_url = @url.to_s
10
+ rescue
11
+ redirect_to root_path
12
+ return false
13
+ end
14
+
15
+ Thread.new(params.clone, session.clone, request.clone, transfer_class, @url) do |_params, _session, _request, transfer_class, url|
16
+ begin
17
+ referer = (_request.referer ? Addressable::URI.parse(_request.referer) : nil) rescue nil
9
18
 
10
- @transfer = transfer_class.new
11
- @transfer.recieved_url = params[:url]
12
- @transfer.url = url.to_s
13
- @transfer.host = url.host.to_s if url
14
- @transfer.referer = referer.to_s
15
- @transfer.source_ip = request.env['HTTP_X_FORWARDED_FOR'] || request.remote_ip
16
- if Hancock::Goto.mongoid?
17
- @transfer.set_session(session)
19
+ @transfer = transfer_class.new
20
+ @transfer.recieved_url = _params[:url]
21
+ @transfer.url = url.to_s
22
+ @transfer.host = url.host.to_s if url
23
+ @transfer.referer = referer.to_s
24
+ @transfer.source_ip = _request.env['HTTP_X_FORWARDED_FOR'] || _request.remote_ip
25
+ if Hancock::Goto.mongoid?
26
+ @transfer.set_session(_session)
27
+ end
28
+ @transfer.save
29
+ rescue Exception => ex
30
+ puts ex.inspect
31
+ end
18
32
  end
19
- @transfer.save
20
33
 
21
- redirect_to @transfer.url, code: 303
34
+ case Hancock::Goto.config.method.to_sym
35
+ when :render_view
36
+ render layout: false
37
+ when :redirect_from_controller
38
+ redirect_to @url, code: 303
39
+ else
40
+ redirect_to @url, code: 303
41
+ end
22
42
  end
23
43
 
24
44
  def transfer_class
@@ -32,32 +32,33 @@ module Hancock::Goto
32
32
  if should_process?(status, headers, env)
33
33
  begin
34
34
  content = extract_content(response)
35
- doc = ::Nokogiri::HTML(content)
36
- array = doc.css(Hancock::Goto.config.css_selector)
35
+ if Hancock::Goto.config.href_attr_regex and content =~ Hancock::Goto.config.href_attr_regex
36
+ doc = ::Nokogiri::HTML(content)
37
37
 
38
- doc.css(Hancock::Goto.config.css_selector).each do |a|
39
- if (!a[ATTRS[:disabled]].blank? and !["0", "false", "no"].include?(a[ATTRS[:disabled]]))
40
- del_attrs(a)
41
- next
42
- end
43
- _href = a['href']
44
- if _href =~ Hancock::Goto.config.href_regex
45
- begin
46
- _host = Addressable::URI.parse(_href).host
47
- unless Hancock::Goto.config.excluded_hosts.include?(_host)
48
- a['href'] = Rails.application.routes.url_helpers.hancock_goto_path(url: _href)
49
- a['target'] = '_blank' if a['target'].blank?
50
- set_rel_attribute(a)
51
- del_attrs(a)
38
+ doc.css(Hancock::Goto.config.css_selector).each do |a|
39
+ if (!a[ATTRS[:disabled]].blank? and !["0", "false", "no"].include?(a[ATTRS[:disabled]]))
40
+ del_attrs(a)
41
+ next
42
+ end
43
+ _href = a['href']
44
+ if _href =~ Hancock::Goto.config.href_regex
45
+ begin
46
+ _host = Addressable::URI.parse(_href).host
47
+ unless Hancock::Goto.config.excluded_hosts.include?(_host)
48
+ a['href'] = Rails.application.routes.url_helpers.hancock_goto_path(url: _href)
49
+ a['target'] = '_blank' if a['target'].blank?
50
+ set_rel_attribute(a)
51
+ del_attrs(a)
52
+ end
53
+ rescue
52
54
  end
53
- rescue
54
55
  end
55
56
  end
56
- end
57
57
 
58
- content = doc.to_html
59
- headers['content-length'] = bytesize(content).to_s
60
- response = [content]
58
+ content = doc.to_html
59
+ headers['content-length'] = bytesize(content).to_s
60
+ response = [content]
61
+ end
61
62
  rescue Exception => ex
62
63
  # puts ex.message
63
64
  # puts ex.backtrace
@@ -16,21 +16,37 @@ module Hancock::Goto
16
16
  belongs_to :session, class_name: "MongoidStore::Session"
17
17
  else
18
18
  belongs_to :session, class_name: "MongoidStore::Session", optional: true
19
+
20
+ if relations.has_key?("updater") and defined?(::Mongoid::History)
21
+ belongs_to :updater, class_name: ::Mongoid::History.modifier_class_name, optional: true, validate: false
22
+ _validators.delete(:updater)
23
+ _validate_callbacks.each do |callback|
24
+ if callback.raw_filter.respond_to?(:attributes) and callback.raw_filter.attributes.include?(:updater)
25
+ _validate_callbacks.delete(callback)
26
+ end
27
+ end
28
+ end
19
29
  end
20
30
  field :session_data, type: BSON::Binary
21
- end
22
31
 
23
- def session_data_extract
24
- session_data.data if session_data
25
- end
32
+ def session_data_extract
33
+ session_data.data if session_data
34
+ end
26
35
 
27
- def session_data_unpack
28
- Marshal.load(session_data_extract) if session_data
36
+ def session_data_unpack
37
+ Marshal.load(session_data_extract) if session_data
38
+ end
39
+
40
+ def set_session(_session)
41
+ self.session_id = _session.id
42
+ self.session_data = ::BSON::Binary.new(Marshal.dump(_session.to_hash))
43
+ end
29
44
  end
30
45
 
31
- def set_session(_session)
32
- self.session_id = _session.id
33
- self.session_data = BSON::Binary.new(Marshal.dump(_session.to_hash))
46
+ class_methods do
47
+ def track_history?
48
+ false
49
+ end
34
50
  end
35
51
 
36
52
  end
@@ -6,32 +6,43 @@ module Hancock::Goto
6
6
 
7
7
  include Hancock::Goto.orm_specific('Transfer')
8
8
 
9
- include ManualSlug
10
-
11
9
  included do
10
+ end
11
+
12
+ class_methods do
13
+
14
+ def rails_admin_name_synonyms
15
+ "".freeze
16
+ end
17
+ def rails_admin_navigation_icon
18
+ ''.freeze
19
+ end
12
20
 
13
- def self.manager_can_default_actions
14
- [:show, :read].freeze
21
+ # def manager_can_default_actions
22
+ # # [:show, :read].freeze
23
+ # super - [:new, :create, :delete, :destroy]
24
+ # end
25
+ def admin_cannot_actions
26
+ [:new, :create].freeze
15
27
  end
16
- def manager_cannot_actions
17
- [:new, :create, :edit, :update].freeze
28
+ def manager_cannot_add_actions
29
+ [:new, :create, :delete, :destroy, :edit, :update].freeze
18
30
  end
19
31
 
20
- def self.manager_can_add_actions
32
+ def manager_can_add_actions
21
33
  ret = []
22
34
  ret << :model_settings if Hancock::Goto.config.model_settings_support
23
- ret << :model_accesses if Hancock::Goto.config.user_abilities_support
35
+ # ret << :model_accesses if Hancock::Goto.config.user_abilities_support
24
36
  ret += [:comments, :model_comments] if Hancock::Goto.config.ra_comments_support
25
37
  ret.freeze
26
38
  end
27
- def self.rails_admin_add_visible_actions
39
+ def rails_admin_add_visible_actions
28
40
  ret = []
29
41
  ret << :model_settings if Hancock::Goto.config.model_settings_support
30
42
  ret << :model_accesses if Hancock::Goto.config.user_abilities_support
31
43
  ret += [:comments, :model_comments] if Hancock::Goto.config.ra_comments_support
32
44
  ret.freeze
33
45
  end
34
-
35
46
  end
36
47
 
37
48
  end
@@ -1,11 +1,18 @@
1
1
  module ActionDispatch::Routing
2
2
  class Mapper
3
3
 
4
- def hancock_cms_goto_routes
4
+ def hancock_cms_goto_routes(no_params = true)
5
+ if no_params.is_a?(Hash)
6
+ no_params = no_params[:no_params] || true
7
+ end
5
8
 
6
9
  scope module: 'hancock' do
7
10
  scope module: 'goto' do
8
- get '/goto/*url' => 'transfers#index', as: :hancock_goto, format: false
11
+ if no_params
12
+ get 'goto/*url' => 'transfers#index', as: :hancock_goto, format: false
13
+ else
14
+ get 'goto' => 'transfers#index', as: :hancock_goto, format: false
15
+ end
9
16
  end
10
17
  end
11
18
 
@@ -1,5 +1,5 @@
1
1
  module Hancock
2
2
  module Goto
3
- VERSION = "1.0.1.3".freeze
3
+ VERSION = "1.0.2".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hancock_cms_goto
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1.3
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Kiseliev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-20 00:00:00.000000000 Z
11
+ date: 2017-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,20 +44,20 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.1
48
- - - "<="
47
+ version: 1.0.2
48
+ - - "<"
49
49
  - !ruby/object:Gem::Version
50
- version: '2.1'
50
+ version: 2.1.x
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: 1.0.1
58
- - - "<="
57
+ version: 1.0.2
58
+ - - "<"
59
59
  - !ruby/object:Gem::Version
60
- version: '2.1'
60
+ version: 2.1.x
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: nokogiri
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -106,6 +106,7 @@ files:
106
106
  - app/helpers/hancock/goto/goto_helper.rb
107
107
  - app/models/concerns/hancock/goto/decorators/transfer.rb
108
108
  - app/models/hancock/goto/transfer.rb
109
+ - app/views/hancock/goto/transfers/index.html.slim
109
110
  - bin/console
110
111
  - bin/setup
111
112
  - config/locales/hancock.goto.ru.yml