radiant-reader-extension 3.0.32 → 3.0.33

Sign up to get free protection for your applications and to get access to all the features.
@@ -152,7 +152,7 @@ private
152
152
 
153
153
  def get_readers_and_groups
154
154
  @readers = Reader.visible_to(current_reader)
155
- @groups = current_reader.all_visible_groups
155
+ @groups = current_reader.groups
156
156
  @reader = Reader.find(params[:id]) if params[:id]
157
157
  end
158
158
 
@@ -24,7 +24,7 @@ class GroupsController < ReaderActionController
24
24
  private
25
25
 
26
26
  def get_group_or_groups
27
- @groups = current_reader.all_visible_groups
27
+ @groups = current_reader.groups
28
28
  @group = Group.find(params[:id]) if params[:id]
29
29
  end
30
30
 
@@ -2,7 +2,6 @@ require 'ancestry'
2
2
 
3
3
  class Group < ActiveRecord::Base
4
4
 
5
- has_ancestry
6
5
  belongs_to :leader, :class_name => 'Reader'
7
6
  belongs_to :created_by, :class_name => 'User'
8
7
  belongs_to :updated_by, :class_name => 'User'
@@ -66,7 +65,7 @@ class Group < ActiveRecord::Base
66
65
  when 'private'
67
66
  reader ? self.all : self.none
68
67
  when 'grouped'
69
- (reader && reader.is_grouped?) ? reader.all_visible_groups : self.none
68
+ (reader && reader.is_grouped?) ? reader.groups : self.none
70
69
  else
71
70
  self.none
72
71
  end
@@ -75,24 +74,11 @@ class Group < ActiveRecord::Base
75
74
  def visible_to?(reader=nil)
76
75
  self.class.visible_to(reader).map(&:id).include? self.id
77
76
  end
78
-
79
- def tree
80
- # can't quite do this in one step, but we can return a scope
81
- self.root.subtree
82
- end
83
-
84
- def tree_ids
85
- self.root.subtree_ids
86
- end
87
77
 
88
78
  def members
89
- Reader.in_groups(subtree)
79
+ readers
90
80
  end
91
81
 
92
- def inherited_permissions
93
- Permission.to_groups(path)
94
- end
95
-
96
82
  def url
97
83
  homepage.url if homepage
98
84
  end
@@ -130,7 +116,7 @@ class Group < ActiveRecord::Base
130
116
  def self.define_retrieval_methods(classname)
131
117
  type_scope = "for_#{classname.downcase.pluralize}".intern
132
118
  Permission.send :named_scope, type_scope, :conditions => { :permitted_type => classname }
133
- define_method("#{classname.downcase}_permissions") { self.inherited_permissions.send type_scope }
119
+ define_method("#{classname.downcase}_permissions") { self.permissions.send type_scope }
134
120
  define_method("#{classname.downcase.pluralize}") {
135
121
  ids = self.send("#{classname.to_s.downcase}_permissions".intern).map(&:permitted_id)
136
122
  classname.constantize.find_these(ids)
@@ -93,7 +93,7 @@ class Reader < ActiveRecord::Base
93
93
  when 'private'
94
94
  reader ? self.all : self.none
95
95
  when 'grouped'
96
- reader ? self.in_groups(reader.all_visible_group_ids) : self.none
96
+ reader ? self.in_groups(reader.group_ids) : self.none
97
97
  else
98
98
  self.none
99
99
  end
@@ -103,38 +103,12 @@ class Reader < ActiveRecord::Base
103
103
  (reader && (reader == self)) || self.class.visible_to(reader).map(&:id).include?(self.id)
104
104
  end
105
105
 
106
- # returns a useful list of the groups that this person is in and all their ancestor groups.
107
- # for most authorisation purposes, that's the set of groups of which this reader is considered a member.
108
- #
109
- # Returns a scope.
110
- #
111
- def all_groups
112
- Group.find_these(all_group_ids)
113
- end
114
-
115
- def all_group_ids
116
- self.groups.map(&:path_ids).flatten.uniq
117
- end
118
-
119
- # Returns a list of the groups that this person is in along with their whole tree of super and subgroups.
120
- # That's the list of groups that this person can see. It is larger than the list of groups that confer permission:
121
- # this reader can see subgroups of his own groups in the directory, but he can't see their pages.
122
- #
123
- def all_visible_groups
124
- Group.find_these(all_visible_group_ids)
125
- end
126
-
127
- def all_visible_group_ids
128
- self.groups.map(&:tree_ids).flatten.uniq
129
- end
130
-
131
106
  def can_see? (this)
132
- permitted_groups = this.permitted_groups
133
- permitted_groups.empty? or in_any_of_these_groups?(permitted_groups)
107
+ this.groups.empty? or in_any_of_these_groups?(this.groups)
134
108
  end
135
109
 
136
110
  def in_any_of_these_groups? (grouplist)
137
- (grouplist & all_groups).any?
111
+ (grouplist & groups).any?
138
112
  end
139
113
 
140
114
  def membership_of(group)
@@ -24,6 +24,4 @@
24
24
  = link_to_unless_current image('plus') + ' ' + t('reader_extension.add_subgroup'), new_admin_group_url(:parent_id => group.id), :class => 'action'
25
25
  = link_to_unless_current image('delta') + ' ' + t('reader_extension.edit_group'), edit_admin_group_url(group), :class => 'action'
26
26
  = link_to_unless_current image('minus') + ' ' + t('reader_extension.delete_group'), admin_group_url(group), :method => 'delete', :confirm => t("reader_extension.really_delete_group", :name => group.name), :class => 'action'
27
-
28
- = render :partial => 'group', :collection => group.children, :locals => {:level => level+1}
29
27
 
@@ -7,7 +7,7 @@
7
7
  = t('reader_extension.edit_message')
8
8
 
9
9
  - main.edit_form do
10
- - form_for :message, @message, :url => admin_message_url(@message), :html => {:id => 'message_form', :method => 'put'} do |f|
10
+ - form_for :message, @message, :url => admin_message_path(@message), :html => {:id => 'message_form', :method => 'put'} do |f|
11
11
  = render :partial => 'form', :object => f
12
12
 
13
13
  - main.edit_popups do
@@ -8,7 +8,7 @@
8
8
  = t('reader_extension.create_message')
9
9
 
10
10
  - main.edit_form do
11
- - form_for :message, @message, :url => admin_messages_url, :html => {:id => 'message_form', :method => 'post'} do |f|
11
+ - form_for :message, @message, :url => admin_messages_path, :html => {:id => 'message_form', :method => 'post'} do |f|
12
12
  = render :partial => 'form', :object => f
13
13
 
14
14
  - main.edit_popups do
@@ -48,7 +48,7 @@
48
48
 
49
49
  - delivery.options do
50
50
  - unless @message.administrative?
51
- - form_for :message, @message, :url => deliver_admin_message_url(@message), :html => {"data-onsubmit_status"=>"Sending email messages&#8230;"} do |f|
51
+ - form_for :message, @message, :url => deliver_admin_message_path(@message), :html => {"data-onsubmit_status"=>"Sending email messages&#8230;"} do |f|
52
52
  %h3
53
53
  = t("reader_extension.send_to").titlecase + ":"
54
54
  .radio_group
@@ -5,7 +5,7 @@
5
5
  = render_region :form_top, :locals => {:f => f}
6
6
 
7
7
  - render_region :form, :locals => {:f => f} do |form|
8
- - form.name do
8
+ - form.edit_name do
9
9
  %p
10
10
  = f.label :forename
11
11
  = f.text_field :forename, :class => "textbox activate", :size => 32, :maxlength => 100
@@ -26,6 +26,30 @@
26
26
  - form.edit_password do
27
27
  = render "password_fields", :f => f
28
28
 
29
+ - form.edit_phone do
30
+ %p
31
+ = f.label :phone
32
+ = f.text_field :phone, :class => 'textbox'
33
+ %p
34
+ = f.label :mobile
35
+ = f.text_field :mobile, :class => 'textbox'
36
+
37
+ - form.edit_address do
38
+ %p
39
+ = f.label :post_line1, t('activerecord.attributes.reader.postal_address')
40
+ = f.text_field :post_line1, :class => 'textbox'
41
+ %br
42
+ = f.text_field :post_line2, :class => 'textbox'
43
+ %p
44
+ = f.label :post_city
45
+ = f.text_field :post_city, :class => 'textbox'
46
+ %p
47
+ = f.label :post_province
48
+ = f.text_field :post_province, :class => 'textbox'
49
+ %p
50
+ = f.label :postcode
51
+ = f.text_field :postcode, :class => 'textbox'
52
+
29
53
  - form.edit_description do
30
54
  - if Radiant.config['reader.show_descriptions?']
31
55
  %p
@@ -10,7 +10,3 @@
10
10
  - if group.description
11
11
  %p
12
12
  = group.description
13
-
14
- - if with_children && group.children.any?
15
- .indented
16
- = render :partial => 'groups/group', :collection => group.children
@@ -3,9 +3,6 @@
3
3
  = t('reader_extension.separator')
4
4
  = link_to t('reader_extension.groups').titlecase, groups_url
5
5
  = t('reader_extension.separator')
6
- - if @group.parent
7
- = link_to @group.parent.name, group_url(@group.parent)
8
- = t('reader_extension.separator')
9
6
 
10
7
  - content_for :title do
11
8
  = @group.name
@@ -20,18 +17,15 @@
20
17
 
21
18
  = render :partial => 'shared/standard_reader_parts'
22
19
 
23
- - content_for :main do
20
+ - content_for :introduction do
24
21
  %p
25
22
  = t('reader_extension.download_group_as')
26
23
  = link_to t("reader_extension.csv_file"), group_url(@group, :format => :csv), :class => 'csv'
27
24
  = t('or')
28
- = link_to t("reader_extension.vcard_file"), group_url(@group, :format => :vcard), :class => 'vcard'
29
-
30
- - if @group.children.any?
31
- %h2
32
- = t('reader_extension.subgroups', :name => @group.name)
33
- = render :partial => 'groups/group', :collection => @group.children
25
+ = link_to t("reader_extension.vcard_file"), group_url(@group, :format => :vcard), :class => 'vcards'
26
+ = t('reader_extension.or_individual_card')
34
27
 
28
+ - content_for :main do
35
29
  - if @group.memberships.any?
36
30
  %h2
37
31
  = t('reader_extension.group_members')
@@ -1,36 +1,4 @@
1
1
  - if membership
2
2
  - group = membership.group
3
3
  - reader = membership.reader
4
- - if reader
5
- %tr.reader
6
- - if reader.unshareable?
7
- %td{:colspan => 8}
8
- = t("reader_extension.listing_denied")
9
- - else
10
- %td.gravatar
11
- = link_to gravatar_for(reader, {:size => 18}, {:class => 'gravatar'}), reader_url(reader), :title => reader.preferred_name
12
- %td.name
13
- %h3
14
- = link_to reader.preferred_name, reader_url(reader)
15
- %td.role
16
- %p
17
- %span.role
18
- = membership.role
19
- %td.email
20
- %p
21
- = mail_to reader.email, nil, :encode => 'hex', :replace_at => " #{t('reader_extension.at')} "
22
-
23
- - [:phone, :mobile].each do |field|
24
- - value = reader.send(field)
25
- - unless value.blank?
26
- %td{:class => field.to_s}
27
- %p
28
- = value
29
- - else
30
- %td.missing
31
- %p
32
- = t("reader_extension.no_#{field}")
33
-
34
- %td.vcard
35
- %p
36
- = link_to "&nbsp;", reader_url(reader, :format => :vcard), :class => 'vcard'
4
+ = render :partial => 'readers/reader', :object => reader
@@ -1,27 +1,30 @@
1
1
  - case Radiant.config['reader.directory_visibility']
2
2
  - when 'public'
3
- - if @groups.any?
4
- %h2
5
- = t('reader_extension.groups').titlecase
6
- = render :partial => 'groups/group', :collection => @groups
3
+ .groups
4
+ - if @groups.any?
5
+ %h2
6
+ = t('reader_extension.groups').titlecase
7
+ = render :partial => 'groups/group', :collection => @groups
7
8
 
8
- - if @readers.any?
9
- %h2
10
- = t('reader_extension.people').titlecase
11
- = render :partial => 'readers/list', :locals => {:readers => @readers}
9
+ .readers
10
+ - if @readers.any?
11
+ %h2
12
+ = t('reader_extension.people').titlecase
13
+ = render :partial => 'readers/list', :locals => {:readers => @readers}
12
14
 
13
15
  - when 'grouped'
14
- %h2
15
- = t('reader_extension.your_groups')
16
- - if @groups.any
17
- = render :partial => 'groups/group', :collection => @groups
18
- - else
19
- = t('reader_extension.no_groups')
20
-
21
- - if @readers.any?
16
+ .groups
22
17
  %h2
23
- = t('reader_extension.your_group_members')
24
- = render :partial => 'readers/list', :locals => {:readers => @readers}
18
+ = t('reader_extension.your_groups')
19
+ - if @groups.any
20
+ = render :partial => 'groups/group', :collection => @groups
21
+ - else
22
+ = t('reader_extension.no_groups')
23
+ .readers
24
+ - if @readers.any?
25
+ %h2
26
+ = t('reader_extension.your_group_members')
27
+ = render :partial => 'readers/list', :locals => {:readers => @readers}
25
28
 
26
29
  - else
27
30
  = t('reader_extension.no_directory')
@@ -7,10 +7,10 @@
7
7
  = link_to gravatar_for(reader, {:size => 18}, {:class => 'gravatar'}), reader_url(reader), :title => reader.preferred_name
8
8
  %td.name
9
9
  %h3
10
- = link_to reader.preferred_name, reader_url(reader)
10
+ = link_to reader.name, reader_url(reader)
11
11
  - if reader.preferred_name != reader.name
12
12
  %span.note
13
- = reader.name
13
+ = reader.preferred_name
14
14
  %td.email
15
15
  %p
16
16
  = mail_to reader.email, nil, :encode => 'hex', :replace_at => " #{t('reader_extension.at')} "
@@ -1,16 +1,15 @@
1
1
  - content_for :breadhead do
2
- = link_to t('reader_extension.readers').titlecase, reader_index_url
2
+ = link_to t('reader_extension.readers_title').titlecase, reader_index_url
3
3
  = t('reader_extension.separator')
4
4
 
5
5
  - content_for :title do
6
- = @reader.preferred_name
6
+ = @reader.name
7
7
 
8
8
  - content_for :introduction do
9
9
  - if Radiant.config['reader.show_descriptions?']
10
10
  = @reader.description
11
11
  %p
12
12
  = link_to t('reader_extension.edit_profile'), reader_edit_profile_url
13
-
14
13
 
15
14
  - content_for :breadcrumbs do
16
15
  = yield :breadhead
@@ -153,7 +153,7 @@ en:
153
153
  create_message: "create message"
154
154
  create_new_message: "Send a new message"
155
155
  create_welcome: "create welcome"
156
- csv_file: "CSV data"
156
+ csv_file: "csv data"
157
157
  dashboard:
158
158
  account: "Account settings"
159
159
  directory: "Directory"
@@ -185,7 +185,7 @@ en:
185
185
  vcard_link: "vcard"
186
186
  dont_fill: "Don't fill this in!"
187
187
  download_as: "Download as"
188
- download_group_as: "Download the whole group as"
188
+ download_group_as: "You can download the whole group as"
189
189
  download_vcard: "Download vcard"
190
190
  edit_group: "edit group"
191
191
  edit_message: "Edit message"
@@ -280,6 +280,7 @@ en:
280
280
  message_preview_introduction: "This is a snapshot of the message that was delivered to you %{date}. If it contains instructions they may now be out of date."
281
281
  mistaken_access_error: "If you think that's a mistake, and that you should be allowed to do whatever it was you just tried to do, please contact your site administrator."
282
282
  must_be_empty: "must be empty"
283
+ name: "Name"
283
284
  name_and_login: "Name and Login"
284
285
  navigation:
285
286
  account: "Preferences"
@@ -319,6 +320,7 @@ en:
319
320
  optional_phone: "[phone]"
320
321
  or_edit_preferences: 'You can also <a href="%{url}">edit your account preferences</a>.'
321
322
  or_edit_profile: 'You can also <a href="%{url}">edit your profile</a> to add more information about yourself.'
323
+ or_individual_card: ' or click on an individual <img src="/images/furniture/vcard-16x16.png" /> to get their card.'
322
324
  other_messages: "Ad-hoc messages"
323
325
  page_access_explanation: "To restrict access to one or more groups, select them from the list below."
324
326
  page_not_public: "The page you have requested is not public. Please log in. If your account has the necessary permission you will be taken straight there."
@@ -54,7 +54,7 @@ module GroupedModel
54
54
  named_scope :visible_to, lambda { |reader|
55
55
  conditions = "pp.group_id IS NULL"
56
56
  if reader && reader.is_grouped?
57
- ids = reader.all_group_ids
57
+ ids = reader.group_ids
58
58
  conditions = ["#{conditions} OR pp.group_id IS NULL OR pp.group_id IN(#{ids.map{"?"}.join(',')})", *ids]
59
59
  end
60
60
  {
@@ -94,11 +94,10 @@ module GroupedModel
94
94
  end
95
95
 
96
96
  named_scope :belonging_to, lambda { |group|
97
- group_ids = group.subtree_ids
98
97
  {
99
98
  :joins => "INNER JOIN permissions as pp on pp.permitted_id = #{self.table_name}.id AND pp.permitted_type = '#{self.to_s}'",
100
99
  :group => column_names.map { |n| self.table_name + '.' + n }.join(','),
101
- :conditions => ["pp.group_id IN (#{group_ids.map{"?"}.join(',')})", *group_ids],
100
+ :conditions => ["pp.group_id = ?", group.id],
102
101
  :readonly => false
103
102
  }
104
103
  }
@@ -114,49 +113,31 @@ module GroupedModel
114
113
 
115
114
  module GroupedInstanceMethods
116
115
 
117
- # The list of groups that is allowed to see this object. This will include the groups directly
118
- # associated and their descendant subgroups.
119
- #
120
- def permitted_groups
121
- if permitted_group_ids.any?
122
- Group.find(permitted_group_ids)
123
- else
124
- []
125
- end
126
- end
127
-
128
- def permitted_group_ids
129
- # in GroupedPage this is chained to include groups inherited from ancestor pages
130
- # while here the subtrees provide inheritance from ancestor groups.
131
- #
132
- groups.map(&:subtree_ids).flatten.uniq
133
- end
134
-
135
116
  def visible_to?(reader)
136
- return true if self.permitted_groups.empty?
117
+ return true if self.groups.empty?
137
118
  return false if reader.nil?
138
119
  return true if reader.is_admin?
139
- return (reader.groups & self.permitted_groups).any?
120
+ return (reader.groups & self.groups).any?
140
121
  end
141
122
 
142
123
  def group
143
- if self.permitted_groups.length == 1
144
- self.permitted_groups.first
124
+ if self.groups.length == 1
125
+ self.groups.first
145
126
  else
146
127
  nil
147
128
  end
148
129
  end
149
130
 
150
131
  def visible?
151
- permitted_groups.empty?
132
+ groups.empty?
152
133
  end
153
134
 
154
135
  def permitted_readers
155
- permitted_groups.any? ? Reader.in_groups(permitted_groups) : Reader.scoped({})
136
+ groups.any? ? Reader.in_groups(groups) : Reader.scoped({})
156
137
  end
157
138
 
158
139
  def has_group?(group)
159
- return self.permitted_groups.include?(group)
140
+ return self.groups.include?(group)
160
141
  end
161
142
 
162
143
  def permit(group)
@@ -5,7 +5,7 @@ module GroupedPage
5
5
  has_groups
6
6
  has_one :homegroup, :foreign_key => 'homepage_id', :class_name => 'Group'
7
7
  include InstanceMethods
8
- alias_method_chain :permitted_group_ids, :inheritance
8
+ alias_method_chain :group_ids, :inheritance
9
9
  alias_method_chain :cache?, :restrictions
10
10
  }
11
11
  end
@@ -23,15 +23,15 @@ module GroupedPage
23
23
  self.ancestors.map(&:group_ids).flatten.uniq
24
24
  end
25
25
 
26
- def permitted_group_ids_with_inheritance
27
- (permitted_group_ids_without_inheritance + inherited_group_ids).flatten.uniq
26
+ def group_ids_with_inheritance
27
+ (group_ids_without_inheritance + inherited_group_ids).flatten.uniq
28
28
  end
29
29
 
30
30
  # this is regrettably expensive and I plan to replace it with a
31
- # private? method that would be cascaded on page update
31
+ # private? setter that would be cascaded on page update
32
32
  #
33
33
  def restricted?
34
- self.permitted_groups.any?
34
+ self.groups.any?
35
35
  end
36
36
 
37
37
  def cache_with_restrictions?
@@ -1,5 +1,5 @@
1
1
  module RadiantReaderExtension
2
- VERSION = '3.0.32'
2
+ VERSION = '3.0.33'
3
3
  SUMMARY = %q{Reader/viewer/visitor registration, login and access-control for Radiant CMS}
4
4
  DESCRIPTION = %q{Provides reader/member/user registration and management functions including password-reminder, group-based page access control and administrative email.}
5
5
  URL = "http://radiant.spanner.org/reader"
@@ -29,7 +29,7 @@ module ReaderAdminUI
29
29
  OpenStruct.new.tap do |reader|
30
30
  reader.edit = Radiant::AdminUI::RegionSet.new do |edit|
31
31
  edit.main.concat %w{edit_header edit_form}
32
- edit.form.concat %w{edit_name edit_email edit_nickname edit_password reader_groups edit_description edit_notes}
32
+ edit.form.concat %w{edit_name edit_email edit_nickname edit_password reader_groups edit_address edit_phone edit_description edit_notes}
33
33
  edit.form_bottom.concat %w{edit_timestamp edit_buttons}
34
34
  end
35
35
  reader.index = Radiant::AdminUI::RegionSet.new do |index|
@@ -36,6 +36,8 @@ module ReaderTags
36
36
  end
37
37
  tag 'readers:each' do |tag|
38
38
  tag.locals.readers = get_readers(tag)
39
+
40
+ Rails.logger.warn "readers:each: tlr has #{tag.locals.readers.size} readers"
39
41
  tag.render('reader_list', tag.attr.dup, &tag.block)
40
42
  end
41
43
 
@@ -73,7 +75,7 @@ module ReaderTags
73
75
  we are on an uncached page.
74
76
  }
75
77
  tag 'reader' do |tag|
76
- tag.expand if tag.locals.reader = get_reader(tag)
78
+ tag.expand if tag.locals.reader ||= get_reader(tag)
77
79
  end
78
80
 
79
81
  [:name, :forename, :surname, :nickname, :preferred_name, :preferred_informal_name, :email, :description, :login, :honorific].each do |field|
@@ -86,8 +86,7 @@ From <r:sender:name />
86
86
  create_model :group, symbol, {
87
87
  :name => name,
88
88
  :slug => name.downcase,
89
- :description => "#{name} group",
90
- :parent_id => @group_id
89
+ :description => "#{name} group"
91
90
  }.merge(attributes)
92
91
  if block_given?
93
92
  @group_id = group_id(symbol)
@@ -49,45 +49,7 @@ describe Group do
49
49
  g.slug.should == 'testy-group'
50
50
  end
51
51
  end
52
-
53
- describe "in a hierarchy" do
54
- it "should have parent and children relations" do
55
- group = groups(:subgroup)
56
- group.respond_to?(:parent).should be_true
57
- group.respond_to?(:children).should be_true
58
- group.children.should =~ [groups(:subsubgroup), groups(:anothersubsubgroup)]
59
- group.parent.should == groups(:supergroup)
60
- end
61
-
62
- it "should have descendants and ancestors" do
63
- groups(:subsubgroup).path.should == [groups(:supergroup), groups(:subgroup), groups(:subsubgroup)]
64
- groups(:subsubgroup).root.should == groups(:supergroup)
65
- groups(:supergroup).subtree.should =~ [groups(:supergroup), groups(:subgroup), groups(:subsubgroup), groups(:anothersubsubgroup)]
66
- end
67
-
68
- it "should have a root group" do
69
- [:supergroup, :subgroup, :subsubgroup].each do |g|
70
- groups(g).root.should == groups(:supergroup)
71
- end
72
- end
73
-
74
- it "should inherit memberships from descendants" do
75
- groups(:supergroup).members.should =~ [readers(:normal), readers(:another)]
76
- end
77
-
78
- it "should not inherit memberships from ancestors" do
79
- groups(:subsubgroup).members.should be_empty
80
- end
81
52
 
82
- it "should inherit permissions from ancestors" do
83
- groups(:subsubgroup).pages.should =~ [pages(:child), pages(:child_2)]
84
- end
85
-
86
- it "should not inherit permissions from descendants" do
87
- groups(:supergroup).pages.should be_empty
88
- end
89
- end
90
-
91
53
  describe "directory visibility" do
92
54
  describe "when directory is grouped" do
93
55
  before do
@@ -98,18 +60,6 @@ describe Group do
98
60
  groups(:subgroup).visible_to?(readers(:normal)).should be_true
99
61
  end
100
62
 
101
- it "should be visible to members of ancestor groups" do
102
- groups(:supergroup).visible_to?(readers(:normal)).should be_true
103
- end
104
-
105
- it "should be visible to members of descendant groups" do
106
- groups(:subsubgroup).visible_to?(readers(:normal)).should be_true
107
- end
108
-
109
- it "should not be visible to members of groups outside the family" do
110
- groups(:subgroup).visible_to?(readers(:inactive)).should be_false
111
- end
112
-
113
63
  it "should not be visible to readers without groups" do
114
64
  groups(:subgroup).visible_to?(readers(:ungrouped)).should be_false
115
65
  end
@@ -114,7 +114,7 @@ describe ReaderPage do
114
114
  it "should allow access only to groups to which the reader belongs" do
115
115
  lambda { Page.find_by_path("/directory/normal") }.should_not raise_error
116
116
  lambda { Page.find_by_path("/directory/special") }.should raise_error(ReaderError::AccessDenied)
117
- Page.find_by_path("/directory").groups.should =~ readers(:normal).all_visible_groups
117
+ Page.find_by_path("/directory").groups.should =~ readers(:normal).groups
118
118
  end
119
119
 
120
120
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: radiant-reader-extension
3
3
  version: !ruby/object:Gem::Version
4
- hash: 71
4
+ hash: 69
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 0
9
- - 32
10
- version: 3.0.32
9
+ - 33
10
+ version: 3.0.33
11
11
  platform: ruby
12
12
  authors:
13
13
  - William Ross
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-14 00:00:00 +00:00
18
+ date: 2011-11-21 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -325,14 +325,17 @@ files:
325
325
  - public/images/furniture/csv.png
326
326
  - public/images/furniture/csv_tiny.png
327
327
  - public/images/furniture/no_gravatar.png
328
- - public/images/furniture/vcard.png
328
+ - public/images/furniture/vcard-16x16.png
329
+ - public/images/furniture/vcard-24x24.png
330
+ - public/images/furniture/vcard-32x32.png
331
+ - public/images/furniture/vcard-48x48.png
329
332
  - public/images/furniture/vcard_tiny.png
333
+ - public/images/furniture/vcards.png
330
334
  - public/javascripts/admin/reader.js
331
335
  - public/javascripts/reader.js
332
336
  - public/stylesheets/sass/admin/reader.sass
333
337
  - public/stylesheets/sass/admin/reader_group.sass
334
338
  - public/stylesheets/sass/reader.sass
335
- - radiant-reader-extension-3.0.31.gem
336
339
  - radiant-reader-extension.gemspec
337
340
  - Rakefile
338
341
  - reader_extension.rb
@@ -362,7 +365,7 @@ has_rdoc: true
362
365
  homepage: http://radiant.spanner.org/reader
363
366
  licenses: []
364
367
 
365
- post_install_message: "\n Add this to your radiant project with a line in your Gemfile:\n\n gem 'radiant-reader-extension', '~> 3.0.32'\n\n and if you haven't already, remember to enable ActionMailer in your\n project's config/environment.rb.\n "
368
+ post_install_message: "\n Add this to your radiant project with a line in your Gemfile:\n\n gem 'radiant-reader-extension', '~> 3.0.33'\n\n and if you haven't already, remember to enable ActionMailer in your\n project's config/environment.rb.\n "
366
369
  rdoc_options: []
367
370
 
368
371
  require_paths: