effective_resources 2.25.16 → 2.26.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 +4 -4
- data/README.md +4 -5
- data/app/controllers/concerns/effective/select2_ajax_controller.rb +8 -7
- data/app/controllers/effective/ajax_controller.rb +53 -0
- data/app/models/concerns/effective_devise_user.rb +2 -3
- data/config/routes.rb +4 -6
- data/lib/effective_resources/version.rb +1 -1
- metadata +3 -3
- data/app/controllers/admin/select2_ajax_controller.rb +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76931ae3422d0b14af4c84ed8670f0a03eba10ffb55804850d8d6aa23409d947
|
4
|
+
data.tar.gz: 9a8f17357dd11e73cc82070c20825fa63e89701ec80f1de679479c6b1f1123a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20bc96638e82faf39e0595eee398104967dbc273e308c15768f32d55e518430698017c63a233b84a192a0be6a7ade9bb3a80c344274271a230e839d55c8b5672
|
7
|
+
data.tar.gz: 7eacea35ae629bcd2b6febb4d548bf15c239d3c5422b01633dd967f780b2590c94ca8bf92ca27832a430f45d74e51e90a2150c16715e0b2e7bc4b8c00eb91d78
|
data/README.md
CHANGED
@@ -374,21 +374,20 @@ This gem provides an admin endpoint for select2 AJAX to fetch users.
|
|
374
374
|
To use this endpoint please add
|
375
375
|
|
376
376
|
```
|
377
|
-
can :
|
377
|
+
can :users, :ajax
|
378
378
|
```
|
379
379
|
|
380
380
|
And then create a select field like this:
|
381
381
|
|
382
382
|
```
|
383
|
-
|
384
|
-
ajax_url: effective_resources.users_admin_select2_ajax_index_path
|
383
|
+
= f.select :user_id, current_user.class.all, ajax_url: effective_resources.users_effective_ajax_index_path
|
385
384
|
```
|
386
385
|
|
387
|
-
To format the results, add a method to your User class.
|
386
|
+
To format the results, add a method to your User class. Should return HTML with a span tag
|
388
387
|
|
389
388
|
```
|
390
389
|
def to_select2
|
391
|
-
"<span>#{
|
390
|
+
"<span>#{first_name} #{last_name}</span> <small><#{try(:public_email) || email}></small>"
|
392
391
|
end
|
393
392
|
```
|
394
393
|
|
@@ -42,7 +42,7 @@ module Effective
|
|
42
42
|
raise('expected a Hash with id and text params') unless option.kind_of?(Hash) && option[:id] && option[:text]
|
43
43
|
option
|
44
44
|
else
|
45
|
-
{ id: resource.to_param, text: resource
|
45
|
+
{ id: resource.to_param, text: to_select2(resource) }
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -56,12 +56,13 @@ module Effective
|
|
56
56
|
|
57
57
|
private
|
58
58
|
|
59
|
-
def to_select2(resource)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
"<span>#{resource}</span>"
|
64
|
-
|
59
|
+
def to_select2(resource, with_organizations = false)
|
60
|
+
organizations = Array(resource.try(:organizations)).join(', ') if with_organizations
|
61
|
+
|
62
|
+
[
|
63
|
+
(resource.try(:to_select2) || "<span>#{resource.to_s}</span>"),
|
64
|
+
("<small>#{organizations}</small>" if organizations.present?)
|
65
|
+
].compact.join(' ')
|
65
66
|
end
|
66
67
|
|
67
68
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Effective
|
2
|
+
class AjaxController < ApplicationController
|
3
|
+
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
+
|
5
|
+
include Effective::Select2AjaxController
|
6
|
+
|
7
|
+
def users
|
8
|
+
EffectiveResources.authorize!(self, :users, :ajax)
|
9
|
+
|
10
|
+
with_organizations = current_user.class.try(:effective_memberships_organization_user?)
|
11
|
+
|
12
|
+
collection = current_user.class.all
|
13
|
+
collection = collection.includes(:organizations) if with_organizations
|
14
|
+
|
15
|
+
respond_with_select2_ajax(collection, skip_authorize: true) do |user|
|
16
|
+
data = { first_name: user.first_name, last_name: user.last_name, email: user.email }
|
17
|
+
|
18
|
+
if with_organizations
|
19
|
+
data[:company] = user.organizations.first.try(:to_s)
|
20
|
+
data[:organization_id] = user.organizations.first.try(:id)
|
21
|
+
data[:organization_type] = user.organizations.first.try(:class).try(:name)
|
22
|
+
end
|
23
|
+
|
24
|
+
{
|
25
|
+
id: user.to_param,
|
26
|
+
text: to_select2(user, with_organizations),
|
27
|
+
data: data
|
28
|
+
}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def organizations
|
33
|
+
EffectiveResources.authorize!(self, :organizations, :ajax)
|
34
|
+
|
35
|
+
raise('the effective memberships gem is required') unless defined?(EffectiveMemberships)
|
36
|
+
|
37
|
+
klass = EffectiveMemberships.Organization
|
38
|
+
raise('an EffectiveMemberships.Organization is required') unless klass.try(:effective_memberships_organization?)
|
39
|
+
|
40
|
+
collection = klass.all
|
41
|
+
|
42
|
+
respond_with_select2_ajax(collection) do |organization|
|
43
|
+
data = { title: organization.title, email: organization.email }
|
44
|
+
|
45
|
+
{
|
46
|
+
id: organization.to_param,
|
47
|
+
text: to_select2(organization),
|
48
|
+
data: data
|
49
|
+
}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -292,11 +292,10 @@ module EffectiveDeviseUser
|
|
292
292
|
end
|
293
293
|
|
294
294
|
def to_select2_search_columns
|
295
|
-
[:email, :public_email, :first_name, :last_name, :name]
|
295
|
+
[:email, :public_email, :alternate_email, :first_name, :last_name, :name]
|
296
296
|
end
|
297
297
|
|
298
298
|
def to_select2
|
299
|
-
"<span>#{email_to_s}</span> <small
|
299
|
+
"<span>#{email_to_s}</span> <small><#{try(:public_email) || email}></small>"
|
300
300
|
end
|
301
|
-
|
302
301
|
end
|
data/config/routes.rb
CHANGED
@@ -3,12 +3,10 @@ Rails.application.routes.draw do
|
|
3
3
|
end
|
4
4
|
|
5
5
|
EffectiveResources::Engine.routes.draw do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
get :
|
10
|
-
get :organizations, on: :collection
|
6
|
+
namespace :effective do
|
7
|
+
resources :ajax, only: [] do
|
8
|
+
get :users, on: :collection, as: :users
|
9
|
+
get :organizations, on: :collection, as: :organizations
|
11
10
|
end
|
12
11
|
end
|
13
|
-
|
14
12
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_resources
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.26.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: 2024-
|
11
|
+
date: 2024-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -175,7 +175,6 @@ files:
|
|
175
175
|
- README.md
|
176
176
|
- app/assets/javascripts/effective_resources.js
|
177
177
|
- app/assets/javascripts/effective_resources/effective_ujs.js
|
178
|
-
- app/controllers/admin/select2_ajax_controller.rb
|
179
178
|
- app/controllers/concerns/effective/crud_controller.rb
|
180
179
|
- app/controllers/concerns/effective/crud_controller/actions.rb
|
181
180
|
- app/controllers/concerns/effective/crud_controller/dsl.rb
|
@@ -194,6 +193,7 @@ files:
|
|
194
193
|
- app/controllers/concerns/effective/wizard_controller/permitted_params.rb
|
195
194
|
- app/controllers/concerns/effective/wizard_controller/save.rb
|
196
195
|
- app/controllers/concerns/effective/wizard_controller/wicked_overrides.rb
|
196
|
+
- app/controllers/effective/ajax_controller.rb
|
197
197
|
- app/helpers/effective_resources_email_helper.rb
|
198
198
|
- app/helpers/effective_resources_helper.rb
|
199
199
|
- app/helpers/effective_resources_private_helper.rb
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Admin
|
2
|
-
class Select2AjaxController < ApplicationController
|
3
|
-
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
-
before_action { EffectiveResources.authorize!(self, :admin, :effective_resources) }
|
5
|
-
|
6
|
-
include Effective::Select2AjaxController
|
7
|
-
|
8
|
-
def users
|
9
|
-
collection = current_user.class.all
|
10
|
-
|
11
|
-
respond_with_select2_ajax(collection) do |user|
|
12
|
-
{ id: user.to_param, text: user.try(:to_select2) || to_select2(user) }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def organizations
|
17
|
-
raise('the effective memberships gem is required') unless defined?(EffectiveMemberships)
|
18
|
-
|
19
|
-
klass = EffectiveMemberships.Organization
|
20
|
-
raise('an EffectiveMemberships.Organization is required') unless klass.try(:effective_memberships_organization?)
|
21
|
-
|
22
|
-
collection = klass.all
|
23
|
-
|
24
|
-
respond_with_select2_ajax(collection) do |organization|
|
25
|
-
{ id: organization.to_param, text: organization.try(:to_select2) || to_select2(organization) }
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|