card-mod-follow 0.14.2 → 0.15.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 +5 -5
- data/assets/script/follow.js.coffee +19 -0
- data/assets/style/follow.scss +7 -0
- data/data/files/mod_follow_script_asset_output/file.js +2 -0
- data/data/real.yml +99 -0
- data/data/test/rules.yml +125 -0
- data/data/test/users.yml +53 -0
- data/data/test/with_fields.yml +56 -0
- data/data/test.yml +39 -0
- data/set/all/follow/follow_link.rb +2 -2
- data/set/all/follow/followed_by.rb +1 -1
- data/set/all/notify/base_views.rb +1 -1
- data/set/all/notify.rb +2 -2
- data/set/right/contextual_class.rb +1 -0
- data/set/right/disappear.rb +1 -0
- data/set/right/follow.rb +6 -0
- data/set/right/follow_fields.rb +2 -0
- data/set/right/followers.rb +1 -1
- data/set/right/following.rb +2 -0
- data/set/right/message.rb +1 -0
- data/set/self/follow_defaults.rb +6 -14
- data/set/type/notification_template.rb +1 -1
- data/set/type/set.rb +2 -2
- data/set/type_plus_right/user/follow.rb +1 -1
- metadata +19 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2adaf8e27632340c7d4cf48b733c58ebade8c6db943808171b7fed9865568e8f
|
4
|
+
data.tar.gz: 0fbc02b66267277403f65776aa952bf370fe2a23993954ee0e5717c65fec08cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 202b16b9bb919a511edcfabf6a589ad6aff562bc5262091df50c95d36b1e09627b818ef6c29287631be9504e37f748124407e66fb1971b3b427fb7c95d188f26
|
7
|
+
data.tar.gz: b56b7bd50a17287086d831dea02f457b90cf1058188a726945fdd910aa378a6aded3e730bb058e9878216c7292a04c0027c1d2dd1e2997e41d5138f095b6f1e7
|
data/README.md
CHANGED
@@ -32,10 +32,10 @@ Special views include:
|
|
32
32
|
|
33
33
|
Each follow preference can point to one or more of the following follow options.
|
34
34
|
|
35
|
-
- _always:_ notify user
|
36
|
-
- _never:_ do not notify user
|
37
|
-
- _created:_ notify user
|
38
|
-
- _edited:_ notify user
|
35
|
+
- _always:_ notify user of changes to all cards in set
|
36
|
+
- _never:_ do not notify user of changes to card in set
|
37
|
+
- _created:_ notify user of changes to cards user has created
|
38
|
+
- _edited:_ notify user of changes to cards user has edited
|
39
39
|
|
40
40
|
### Follow dashboard
|
41
41
|
|
@@ -112,7 +112,7 @@ Useful views added by this mod include:
|
|
112
112
|
These rules rules are advanced configuration that let sharks determine which of a card’s fields
|
113
113
|
are automatically followed when a user follow that card.
|
114
114
|
|
115
|
-
The default value is `:
|
115
|
+
The default value is `:nests`, which means that nested cards are followed by default.
|
116
116
|
|
117
117
|
## Lib
|
118
118
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
$(window).ready ->
|
2
|
+
$('body').on 'click', '.btn-item', ->
|
3
|
+
$(this).find('i').html('hourglass_full')
|
4
|
+
|
5
|
+
$('body').on 'mouseenter', '.btn-item-delete', ->
|
6
|
+
$(this).find('i').html('remove')
|
7
|
+
$(this).addClass("btn-danger").removeClass("btn-primary")
|
8
|
+
|
9
|
+
$('body').on 'mouseleave', '.btn-item-delete', ->
|
10
|
+
$(this).find('i').html('check')
|
11
|
+
$(this).addClass("btn-primary").removeClass("btn-danger")
|
12
|
+
|
13
|
+
$('body').on 'submit', '.edit-view.SELF-Xfollow_default .card-form', ->
|
14
|
+
confirmer = $(this).find '.confirm_update_all-view'
|
15
|
+
if confirmer.is ':hidden'
|
16
|
+
$(this).find('.follow-updater').show()
|
17
|
+
|
18
|
+
confirmer.show 'blind'
|
19
|
+
false
|
@@ -0,0 +1,2 @@
|
|
1
|
+
// follow.js.coffee
|
2
|
+
(function(){$(window).ready(function(){return $("body").on("click",".btn-item",function(){return $(this).find("i").html("hourglass_full")}),$("body").on("mouseenter",".btn-item-delete",function(){return $(this).find("i").html("remove"),$(this).addClass("btn-danger").removeClass("btn-primary")}),$("body").on("mouseleave",".btn-item-delete",function(){return $(this).find("i").html("check"),$(this).addClass("btn-primary").removeClass("btn-danger")}),$("body").on("submit",".edit-view.SELF-Xfollow_default .card-form",function(){var n;if((n=$(this).find(".confirm_update_all-view")).is(":hidden"))return $(this).find(".follow-updater").show(),n.show("blind"),!1})})}).call(this);
|
data/data/real.yml
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
---
|
2
|
+
- :name: Notification template
|
3
|
+
:type: :cardtype
|
4
|
+
:codename: notification_template
|
5
|
+
|
6
|
+
|
7
|
+
- :name: "*follow"
|
8
|
+
:type: :setting
|
9
|
+
:codename: follow
|
10
|
+
:fields:
|
11
|
+
:right:
|
12
|
+
:fields:
|
13
|
+
:input_type: radio
|
14
|
+
:help: Get notified about changes.
|
15
|
+
|
16
|
+
- :name: "*following"
|
17
|
+
:type: :list
|
18
|
+
:codename: following
|
19
|
+
:fields:
|
20
|
+
:right:
|
21
|
+
:fields:
|
22
|
+
:create: _left
|
23
|
+
:update: _left
|
24
|
+
|
25
|
+
|
26
|
+
- :name: "*followers"
|
27
|
+
:codename: followers
|
28
|
+
- :name: "*follow fields"
|
29
|
+
:type: :setting
|
30
|
+
:codename: follow_fields
|
31
|
+
- :name: "*always"
|
32
|
+
:codename: always
|
33
|
+
- :name: "*never"
|
34
|
+
:codename: never
|
35
|
+
- :name: "*follow defaults"
|
36
|
+
:type: :list
|
37
|
+
:codename: follow_defaults
|
38
|
+
|
39
|
+
- :name: follow suggestions
|
40
|
+
:type: :list
|
41
|
+
:codename: follow_suggestions
|
42
|
+
|
43
|
+
- :name:
|
44
|
+
- :all
|
45
|
+
- :follow_fields
|
46
|
+
:content: "*nests"
|
47
|
+
|
48
|
+
- :name: "*contextual class"
|
49
|
+
:codename: contextual_class
|
50
|
+
:fields:
|
51
|
+
:right:
|
52
|
+
:fields:
|
53
|
+
:input_type: radio
|
54
|
+
:content_options: |-
|
55
|
+
success
|
56
|
+
info
|
57
|
+
warning
|
58
|
+
danger
|
59
|
+
- :name: "*message"
|
60
|
+
:codename: message
|
61
|
+
- :name: "*disappear"
|
62
|
+
:codename: disappear
|
63
|
+
|
64
|
+
|
65
|
+
- :name: follower notification email
|
66
|
+
:type: :email_template
|
67
|
+
:codename: follower_notification_email
|
68
|
+
:fields:
|
69
|
+
:from: Decko Bot
|
70
|
+
:subject: '{{_user|name}} {{_|last_action_verb}} "{{_|name}}"'
|
71
|
+
:html_message: |-
|
72
|
+
<p>
|
73
|
+
{{_|link}} was just <a href="{{_|url}}?view=history">{{_|last_action_verb}}</a>
|
74
|
+
by {{_user|link}}
|
75
|
+
</p>
|
76
|
+
<blockquote>{{_|list_of_changes}}</blockquote>
|
77
|
+
<p>{{_|subedits}}</p>
|
78
|
+
|
79
|
+
<p>
|
80
|
+
You received this email because you're following <strong>{{_|followed}}</strong>.
|
81
|
+
</p>
|
82
|
+
|
83
|
+
<p>
|
84
|
+
<em>
|
85
|
+
<a href="{{_|unfollow_url}}">Unfollow</a> to stop receiving these emails.
|
86
|
+
</em>
|
87
|
+
</p>
|
88
|
+
:text_message: |-
|
89
|
+
"{{_|name}}" was just {{_|last_action_verb}} by {{_user|name}}.
|
90
|
+
|
91
|
+
{{_|list_of_changes}}
|
92
|
+
|
93
|
+
{{_|subedits}}
|
94
|
+
|
95
|
+
See the card: {{_|url}}
|
96
|
+
|
97
|
+
You received this email because you're following "{{_|followed}}".
|
98
|
+
|
99
|
+
Use this link to unfollow {{_|unfollow_url}}
|
data/data/test/rules.yml
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
---
|
2
|
+
- :name:
|
3
|
+
- Google glass
|
4
|
+
- :self
|
5
|
+
- :follow_fields
|
6
|
+
:type: :list
|
7
|
+
- :name:
|
8
|
+
- Sunglasses
|
9
|
+
- :self
|
10
|
+
- :follow_fields
|
11
|
+
:type: :list
|
12
|
+
:content: |-
|
13
|
+
*nests
|
14
|
+
_self+price
|
15
|
+
_self+producer
|
16
|
+
|
17
|
+
|
18
|
+
- :name:
|
19
|
+
- John Following
|
20
|
+
- :self
|
21
|
+
- John
|
22
|
+
- :follow
|
23
|
+
:type: :list
|
24
|
+
:content: "*always"
|
25
|
+
- :name:
|
26
|
+
- All Eyes On Me
|
27
|
+
- :self
|
28
|
+
- John
|
29
|
+
- :follow
|
30
|
+
:type: :list
|
31
|
+
:content: "*always"
|
32
|
+
- :name:
|
33
|
+
- Sara Following
|
34
|
+
- :self
|
35
|
+
- Sara
|
36
|
+
- :follow
|
37
|
+
:type: :list
|
38
|
+
:content: "*always"
|
39
|
+
- :name:
|
40
|
+
- All Eyes On Me
|
41
|
+
- :self
|
42
|
+
- Sara
|
43
|
+
- :follow
|
44
|
+
:type: :list
|
45
|
+
:content: "*always"
|
46
|
+
- :name:
|
47
|
+
- Optic
|
48
|
+
- :type
|
49
|
+
- Sara
|
50
|
+
- :follow
|
51
|
+
:type: :list
|
52
|
+
:content: "*always"
|
53
|
+
- :name:
|
54
|
+
- Google glass
|
55
|
+
- :self
|
56
|
+
- Sara
|
57
|
+
- :follow
|
58
|
+
:type: :list
|
59
|
+
:content: "*always"
|
60
|
+
- :name:
|
61
|
+
- All Eyes On Me
|
62
|
+
- :self
|
63
|
+
- Big Brother
|
64
|
+
- :follow
|
65
|
+
:type: :list
|
66
|
+
:content: "*always"
|
67
|
+
- :name:
|
68
|
+
- Look At Me
|
69
|
+
- :self
|
70
|
+
- Big Brother
|
71
|
+
- :follow
|
72
|
+
:type: :list
|
73
|
+
:content: "*always"
|
74
|
+
- :name:
|
75
|
+
- Optic
|
76
|
+
- :type
|
77
|
+
- Big Brother
|
78
|
+
- :follow
|
79
|
+
:type: :list
|
80
|
+
:content: "*always"
|
81
|
+
- :name:
|
82
|
+
- lens
|
83
|
+
- :right
|
84
|
+
- Big Brother
|
85
|
+
- :follow
|
86
|
+
:type: :list
|
87
|
+
:content: "*always"
|
88
|
+
- :name:
|
89
|
+
- Optic
|
90
|
+
- tint
|
91
|
+
- :type_plus_right
|
92
|
+
- Big Brother
|
93
|
+
- :follow
|
94
|
+
:type: :list
|
95
|
+
:content: "*always"
|
96
|
+
- :name:
|
97
|
+
- :all
|
98
|
+
- Big Brother
|
99
|
+
- :follow
|
100
|
+
:type: :list
|
101
|
+
:content: |-
|
102
|
+
*created
|
103
|
+
*edited
|
104
|
+
- :name:
|
105
|
+
- Optic
|
106
|
+
- :type
|
107
|
+
- Optic fan
|
108
|
+
- :follow
|
109
|
+
:type: :list
|
110
|
+
:content: "*always"
|
111
|
+
- :name:
|
112
|
+
- Sunglasses
|
113
|
+
- :self
|
114
|
+
- Sunglasses fan
|
115
|
+
- :follow
|
116
|
+
:type: :list
|
117
|
+
:content: "*always"
|
118
|
+
- :name:
|
119
|
+
- :all
|
120
|
+
- Narcissist
|
121
|
+
- :follow
|
122
|
+
:type: :list
|
123
|
+
:content: |-
|
124
|
+
*created
|
125
|
+
*edited
|
data/data/test/users.yml
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
---
|
2
|
+
# users use "conflict: :defer" because otherwise Card#ensure detects false
|
3
|
+
# changes in the +:password card (because the encrypted version is compared to the
|
4
|
+
# the unencrypted one. A deeper fix would address the change detection in the
|
5
|
+
# +:password cards
|
6
|
+
- :name: John
|
7
|
+
:type: :user
|
8
|
+
:conflict: :defer
|
9
|
+
:fields:
|
10
|
+
:account:
|
11
|
+
:fields:
|
12
|
+
:email: john@user.com
|
13
|
+
:password: john_pass
|
14
|
+
- :name: Sara
|
15
|
+
:type: :user
|
16
|
+
:conflict: :defer
|
17
|
+
:fields:
|
18
|
+
:account:
|
19
|
+
:fields:
|
20
|
+
:email: sara@user.com
|
21
|
+
:password: sara_pass
|
22
|
+
- :name: Big Brother
|
23
|
+
:type: :user
|
24
|
+
:conflict: :defer
|
25
|
+
:fields:
|
26
|
+
:account:
|
27
|
+
:fields:
|
28
|
+
:email: big-brother@user.com
|
29
|
+
:password: big-brother_pass
|
30
|
+
- :name: Optic fan
|
31
|
+
:type: :user
|
32
|
+
:conflict: :defer
|
33
|
+
:fields:
|
34
|
+
:account:
|
35
|
+
:fields:
|
36
|
+
:email: optic-fan@user.com
|
37
|
+
:password: optic-fan_pass
|
38
|
+
- :name: Sunglasses fan
|
39
|
+
:type: :user
|
40
|
+
:conflict: :defer
|
41
|
+
:fields:
|
42
|
+
:account:
|
43
|
+
:fields:
|
44
|
+
:email: sunglasses-fan@user.com
|
45
|
+
:password: sunglasses-fan_pass
|
46
|
+
- :name: Narcissist
|
47
|
+
:type: :user
|
48
|
+
:conflict: :defer
|
49
|
+
:fields:
|
50
|
+
:account:
|
51
|
+
:fields:
|
52
|
+
:email: narcissist@user.com
|
53
|
+
:password: narcissist_pass
|
@@ -0,0 +1,56 @@
|
|
1
|
+
---
|
2
|
+
- :name: card with fields
|
3
|
+
:content: main content {{+field 1}} {{+field 2}}
|
4
|
+
:user: Joe User
|
5
|
+
:fields:
|
6
|
+
field 1: content of field 1
|
7
|
+
field 2: content of field 2
|
8
|
+
- :name: card with fields and admin fields
|
9
|
+
:content: main content {{+field 1}} {{+admin field 1}}
|
10
|
+
:user: Joe User
|
11
|
+
:fields:
|
12
|
+
field 1: content of field 1
|
13
|
+
admin field 1: content of admin field 1
|
14
|
+
- :name: admin card with fields and admin fields
|
15
|
+
:content: main content {{+field 1}} {{+admin field 1}}
|
16
|
+
:user: Joe User
|
17
|
+
:fields:
|
18
|
+
field 1: content of field 1
|
19
|
+
admin field 1: content of admin field 1
|
20
|
+
- :name: admin card with admin fields
|
21
|
+
:content: main content {{+admin field 1}} {{+admin field 2}}
|
22
|
+
:user: Joe User
|
23
|
+
:fields:
|
24
|
+
admin field 1: content of admin field 1
|
25
|
+
admin field 2: content of admin field 2
|
26
|
+
|
27
|
+
- :name:
|
28
|
+
- admin card with fields and admin fields
|
29
|
+
- :self
|
30
|
+
- :read
|
31
|
+
:type: :pointer
|
32
|
+
:content: Administrator
|
33
|
+
- :name:
|
34
|
+
- admin card with admin fields
|
35
|
+
- :self
|
36
|
+
- :read
|
37
|
+
:type: :pointer
|
38
|
+
:content: Administrator
|
39
|
+
- :name:
|
40
|
+
- admin field 1
|
41
|
+
- :right
|
42
|
+
- :read
|
43
|
+
:type: :pointer
|
44
|
+
:content: Administrator
|
45
|
+
- :name:
|
46
|
+
- admin field 2
|
47
|
+
- :right
|
48
|
+
- :read
|
49
|
+
:type: :pointer
|
50
|
+
:content: Administrator
|
51
|
+
- :name:
|
52
|
+
- field 1
|
53
|
+
- :right
|
54
|
+
- :read
|
55
|
+
:type: :pointer
|
56
|
+
:content: Anyone
|
data/data/test.yml
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
---
|
2
|
+
- users
|
3
|
+
- :name: Optic
|
4
|
+
:type: :cardtype
|
5
|
+
- :name: All Eyes On Me
|
6
|
+
- :name: No One Sees Me
|
7
|
+
- :name: Look At Me
|
8
|
+
- :name: Sara Following
|
9
|
+
- :name: John Following
|
10
|
+
:content: "{{+her}}"
|
11
|
+
- :name:
|
12
|
+
- John Following
|
13
|
+
- her
|
14
|
+
- :name:
|
15
|
+
- Magnifier
|
16
|
+
- lens
|
17
|
+
- :name:
|
18
|
+
- Magnifier
|
19
|
+
- lens
|
20
|
+
:content: zoom in
|
21
|
+
:user: Narcissist
|
22
|
+
- :name: Sunglasses
|
23
|
+
:type: Optic
|
24
|
+
:content: "{{+tint}}{{+lens}}"
|
25
|
+
:user: Narcissist
|
26
|
+
- :name: Google glass
|
27
|
+
:type: Optic
|
28
|
+
:user: Optic fan
|
29
|
+
:content: "{{+price}}"
|
30
|
+
- :name:
|
31
|
+
- Sunglasses
|
32
|
+
- tint
|
33
|
+
- :name:
|
34
|
+
- Sunglasses
|
35
|
+
- price
|
36
|
+
- :name: Created card
|
37
|
+
:content: new content
|
38
|
+
- rules
|
39
|
+
- with_fields
|
@@ -12,8 +12,8 @@ class FollowLink
|
|
12
12
|
def modal_link icon=false
|
13
13
|
opts = link_opts.merge(
|
14
14
|
"data-path": link_opts[:path],
|
15
|
-
"data-toggle": "modal",
|
16
|
-
"data-target": "#modal-#{card.name.safe_key}",
|
15
|
+
"data-bs-toggle": "modal",
|
16
|
+
"data-bs-target": "#modal-#{card.name.safe_key}",
|
17
17
|
class: css_classes("follow-link", link_opts[:class])
|
18
18
|
)
|
19
19
|
link_to render_link_text(icon), opts
|
@@ -50,7 +50,7 @@ def all_follow_rule_options follower_id
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def follow_rule_option_applies? follower_id, option
|
53
|
-
option_code = option.to_name.
|
53
|
+
option_code = option.to_name.codename
|
54
54
|
candidate_ids = follower_candidate_ids_for_option option_code
|
55
55
|
follow_rule_option_applies_to_candidates? follower_id, option_code, candidate_ids
|
56
56
|
end
|
@@ -88,7 +88,7 @@ format do
|
|
88
88
|
def edit_info_for field, action
|
89
89
|
return nil unless (value = action.value field)
|
90
90
|
|
91
|
-
value = action.previous_value if action.action_type == :delete
|
91
|
+
value = action.previous_value(field) if action.action_type == :delete
|
92
92
|
wrap_list_item " #{notification_action_label action} #{field}: #{value}"
|
93
93
|
end
|
94
94
|
|
data/set/all/notify.rb
CHANGED
@@ -10,8 +10,8 @@ def silence_notifications?
|
|
10
10
|
!(Card::Env.controller || force_notifications)
|
11
11
|
end
|
12
12
|
|
13
|
-
event :notify_followers_after_save,
|
14
|
-
|
13
|
+
event :notify_followers_after_save, :integrate_with_delay,
|
14
|
+
on: :save, priority: 20, when: :notable_change? do
|
15
15
|
notify_followers
|
16
16
|
end
|
17
17
|
|
@@ -0,0 +1 @@
|
|
1
|
+
assign_type :list
|
@@ -0,0 +1 @@
|
|
1
|
+
assign_type :toggle
|
data/set/right/follow.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
# While the user follow dashboard ([User]+:follow`) is also in this Set, its
|
3
3
|
# customizations are handled in TypePlusRight::User::Follow
|
4
4
|
|
5
|
+
assign_type :list
|
6
|
+
|
5
7
|
event :cache_expired_for_new_preference, :integrate, when: :preference? do
|
6
8
|
Card.follow_caches_expired
|
7
9
|
end
|
@@ -34,6 +36,10 @@ def ok_to_delete
|
|
34
36
|
permit :delete
|
35
37
|
end
|
36
38
|
|
39
|
+
def raw_help_text
|
40
|
+
"Get notified about changes"
|
41
|
+
end
|
42
|
+
|
37
43
|
def permit action, verb=nil
|
38
44
|
if %i[create delete update].include?(action) && allowed_to_change_follow_status?
|
39
45
|
true
|
data/set/right/follow_fields.rb
CHANGED
data/set/right/followers.rb
CHANGED
data/set/right/following.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
assign_type :phrase
|
data/set/self/follow_defaults.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
# - if you truly want to override existing follow rules, that may be monkey territory?
|
15
15
|
# - we will delete "*follow defaults" after the above are completed
|
16
16
|
|
17
|
-
event :update_follow_rules, :finalize, on: :save,
|
17
|
+
event :update_follow_rules, :finalize, on: :save, trigger: :required do
|
18
18
|
Auth.as_bot do
|
19
19
|
Card.search(type: "user").each do |user|
|
20
20
|
follow_defaults.each do |set_card, option|
|
@@ -46,24 +46,16 @@ def follow_option item
|
|
46
46
|
end
|
47
47
|
|
48
48
|
format :html do
|
49
|
-
view :edit, perms: :update, unknown: true do
|
50
|
-
frame_and_form :update, hidden: { card: { update_all_users: false } } do
|
51
|
-
[
|
52
|
-
_render_content_formgroups,
|
53
|
-
_render_confirm_update_all,
|
54
|
-
_render_edit_buttons
|
55
|
-
]
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
49
|
view :edit_buttons do
|
60
|
-
|
61
|
-
|
62
|
-
|
50
|
+
render_confirm_update_all +
|
51
|
+
button_formgroup do
|
52
|
+
[submit_and_update_button, simple_submit_button, cancel_to_edit_button]
|
53
|
+
end
|
63
54
|
end
|
64
55
|
|
65
56
|
def submit_and_update_button
|
66
57
|
submit_button text: "Submit and update all users",
|
58
|
+
name: "card[trigger]", value: "update_follow_rules",
|
67
59
|
disable_with: "Updating", class: "follow-updater"
|
68
60
|
end
|
69
61
|
|
data/set/type/set.rb
CHANGED
@@ -37,8 +37,8 @@ def all_members_followed_by? user_id=nil
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def broader_set_followed_by? user_id
|
40
|
-
broader_sets.find do |
|
41
|
-
|
40
|
+
broader_sets.find do |set_card|
|
41
|
+
set_card&.directly_followed_by? user_id
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: card-mod-follow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ethan McCutchen
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2023-01-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: card
|
@@ -18,28 +18,28 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
21
|
+
version: 1.105.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 1.
|
28
|
+
version: 1.105.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: card-mod-carrierwave
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - '='
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0.
|
35
|
+
version: 0.15.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - '='
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.
|
42
|
+
version: 0.15.0
|
43
43
|
description: ''
|
44
44
|
email:
|
45
45
|
- info@decko.org
|
@@ -48,6 +48,14 @@ extensions: []
|
|
48
48
|
extra_rdoc_files: []
|
49
49
|
files:
|
50
50
|
- README.md
|
51
|
+
- assets/script/follow.js.coffee
|
52
|
+
- assets/style/follow.scss
|
53
|
+
- data/files/mod_follow_script_asset_output/file.js
|
54
|
+
- data/real.yml
|
55
|
+
- data/test.yml
|
56
|
+
- data/test/rules.yml
|
57
|
+
- data/test/users.yml
|
58
|
+
- data/test/with_fields.yml
|
51
59
|
- lib/card/follow_option.rb
|
52
60
|
- lib/card/follower_stash.rb
|
53
61
|
- set/abstract/follow_option.rb
|
@@ -62,11 +70,14 @@ files:
|
|
62
70
|
- set/all/notify/base_views.rb
|
63
71
|
- set/all/notify/html_views.rb
|
64
72
|
- set/right/account.rb
|
73
|
+
- set/right/contextual_class.rb
|
74
|
+
- set/right/disappear.rb
|
65
75
|
- set/right/follow.rb
|
66
76
|
- set/right/follow/follow_status.haml
|
67
77
|
- set/right/follow_fields.rb
|
68
78
|
- set/right/followers.rb
|
69
79
|
- set/right/following.rb
|
80
|
+
- set/right/message.rb
|
70
81
|
- set/self/always.rb
|
71
82
|
- set/self/created.rb
|
72
83
|
- set/self/edited.rb
|
@@ -91,6 +102,7 @@ metadata:
|
|
91
102
|
wiki_uri: https://decko.org
|
92
103
|
documentation_url: http://docs.decko.org/
|
93
104
|
card-mod: follow
|
105
|
+
card-mod-group: gem-defaults
|
94
106
|
post_install_message:
|
95
107
|
rdoc_options: []
|
96
108
|
require_paths:
|
@@ -106,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
118
|
- !ruby/object:Gem::Version
|
107
119
|
version: '0'
|
108
120
|
requirements: []
|
109
|
-
rubygems_version: 3.
|
121
|
+
rubygems_version: 3.3.11
|
110
122
|
signing_key:
|
111
123
|
specification_version: 4
|
112
124
|
summary: follower notifications
|