radiant-reader-extension 3.0.3 → 3.0.4
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.
- data/app/controllers/admin/memberships_controller.rb +16 -0
 - data/app/models/membership.rb +12 -3
 - data/app/models/reader.rb +5 -1
 - data/app/views/accounts/edit_profile.html.haml +1 -6
 - data/app/views/admin/groups/show.html.haml +2 -6
 - data/app/views/admin/memberships/_reader.html.haml +6 -2
 - data/app/views/admin/memberships/_role.html.haml +3 -0
 - data/app/views/admin/memberships/_role_form.html.haml +5 -0
 - data/app/views/admin/permissions/_page.html.haml +1 -1
 - data/app/views/groups/show.html.haml +6 -3
 - data/app/views/memberships/_membership.html.haml +36 -0
 - data/app/views/readers/_list.html.haml +0 -10
 - data/app/views/readers/_memberships.html.haml +9 -6
 - data/config/locales/en.yml +4 -1
 - data/config/routes.rb +6 -6
 - data/db/migrate/20110908194602_membership_attributes.rb +11 -0
 - data/lib/radiant-reader-extension.rb +1 -1
 - data/public/javascripts/admin/reader.js +22 -3
 - data/public/stylesheets/sass/admin/reader_group.sass +29 -1
 - metadata +8 -4
 
| 
         @@ -38,6 +38,22 @@ class Admin::MembershipsController < ApplicationController 
     | 
|
| 
       38 
38 
     | 
    
         
             
                end
         
     | 
| 
       39 
39 
     | 
    
         
             
              end
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
              def edit
         
     | 
| 
      
 42 
     | 
    
         
            +
                @membership = @group.memberships.find(params[:id])
         
     | 
| 
      
 43 
     | 
    
         
            +
                respond_to do |format|
         
     | 
| 
      
 44 
     | 
    
         
            +
                  format.js { render :partial => 'admin/memberships/role_form' }
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              def update
         
     | 
| 
      
 49 
     | 
    
         
            +
                @membership = @group.memberships.find(params[:id])
         
     | 
| 
      
 50 
     | 
    
         
            +
                @membership.update_attributes(params[:membership])
         
     | 
| 
      
 51 
     | 
    
         
            +
                @membership.save!
         
     | 
| 
      
 52 
     | 
    
         
            +
                respond_to do |format|
         
     | 
| 
      
 53 
     | 
    
         
            +
                  format.js { render :partial => 'admin/memberships/role' }
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
              
         
     | 
| 
       41 
57 
     | 
    
         
             
            protected
         
     | 
| 
       42 
58 
     | 
    
         | 
| 
       43 
59 
     | 
    
         
             
              def find_reader_and_group
         
     | 
    
        data/app/models/membership.rb
    CHANGED
    
    | 
         @@ -4,10 +4,19 @@ class Membership < ActiveRecord::Base 
     | 
|
| 
       4 
4 
     | 
    
         
             
              belongs_to :reader
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
              named_scope :for, lambda { |reader|
         
     | 
| 
       7 
     | 
    
         
            -
                {
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                { :conditions => ["memberships.reader_id = ?", reader.id] }
         
     | 
| 
      
 8 
     | 
    
         
            +
              }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              named_scope :of, lambda { |group|
         
     | 
| 
      
 11 
     | 
    
         
            +
                { :conditions => ["memberships.group_id = ?", group.id] }
         
     | 
| 
      
 12 
     | 
    
         
            +
              }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              named_scope :by_reader_name, lambda {
         
     | 
| 
      
 15 
     | 
    
         
            +
                { 
         
     | 
| 
      
 16 
     | 
    
         
            +
                  :joins => "INNER JOIN readers on memberships.reader_id = readers.id", 
         
     | 
| 
      
 17 
     | 
    
         
            +
                  :group => "readers.id",
         
     | 
| 
      
 18 
     | 
    
         
            +
                  :order => "readers.name ASC"
         
     | 
| 
       9 
19 
     | 
    
         
             
                }
         
     | 
| 
       10 
20 
     | 
    
         
             
              }
         
     | 
| 
       11 
21 
     | 
    
         | 
| 
       12 
22 
     | 
    
         
             
            end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
    
        data/app/models/reader.rb
    CHANGED
    
    | 
         @@ -135,8 +135,12 @@ class Reader < ActiveRecord::Base 
     | 
|
| 
       135 
135 
     | 
    
         
             
                (grouplist & all_groups).any?
         
     | 
| 
       136 
136 
     | 
    
         
             
              end
         
     | 
| 
       137 
137 
     | 
    
         | 
| 
      
 138 
     | 
    
         
            +
              def membership_of(group)
         
     | 
| 
      
 139 
     | 
    
         
            +
                memberships.of(group).first
         
     | 
| 
      
 140 
     | 
    
         
            +
              end
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
       138 
142 
     | 
    
         
             
              def has_group? (group)
         
     | 
| 
       139 
     | 
    
         
            -
                 
     | 
| 
      
 143 
     | 
    
         
            +
                !!membership_of(group)
         
     | 
| 
       140 
144 
     | 
    
         
             
              end
         
     | 
| 
       141 
145 
     | 
    
         
             
              alias :is_in? :has_group?
         
     | 
| 
       142 
146 
     | 
    
         | 
| 
         @@ -2,12 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
              %p
         
     | 
| 
       3 
3 
     | 
    
         
             
                = t("reader_extension.hello").titlecase
         
     | 
| 
       4 
4 
     | 
    
         
             
                = link_to(@reader.name, reader_url(@reader)) + '.'
         
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
       6 
     | 
    
         
            -
                  = t('reader_extension.profile_intro_public')
         
     | 
| 
       7 
     | 
    
         
            -
                - elsif Radiant.config['reader.confine_to_groups?']
         
     | 
| 
       8 
     | 
    
         
            -
                  = t('reader_extension.profile_intro_grouped')
         
     | 
| 
       9 
     | 
    
         
            -
                - else
         
     | 
| 
       10 
     | 
    
         
            -
                  = t('reader_extension.profile_intro_private')
         
     | 
| 
      
 5 
     | 
    
         
            +
                = t("reader_extension.profile_intro_#{Radiant.config['reader.directory_visibility']}")
         
     | 
| 
       11 
6 
     | 
    
         | 
| 
       12 
7 
     | 
    
         
             
            - content_for :breadcrumbs do 
         
     | 
| 
       13 
8 
     | 
    
         
             
              = link_to t('reader_extension.home').titlecase, '/'
         
     | 
| 
         @@ -50,15 +50,11 @@ 
     | 
|
| 
       50 
50 
     | 
    
         
             
                    = link_to image('plus') + ' ' + t('reader_extension.add_members'), new_admin_group_group_invitation_url(@group), :class => 'action'
         
     | 
| 
       51 
51 
     | 
    
         
             
                  %h3
         
     | 
| 
       52 
52 
     | 
    
         
             
                    =t('reader_extension.group_members').titlecase
         
     | 
| 
       53 
     | 
    
         
            -
                  - readers = Reader.find(:all)
         
     | 
| 
       54 
     | 
    
         
            -
                  - total = readers.count
         
     | 
| 
       55 
     | 
    
         
            -
                  - column_length = (readers.count-1) / 2
         
     | 
| 
       56 
     | 
    
         
            -
                  - columns = [readers[0..column_length], readers[column_length+1..readers.count]]
         
     | 
| 
       57 
     | 
    
         
            -
                  - columns.each do |column|
         
     | 
| 
       58 
53 
     | 
    
         
             
                    %ul.column
         
     | 
| 
       59 
     | 
    
         
            -
                      -  
     | 
| 
      
 54 
     | 
    
         
            +
                      - Reader.all.each do |reader|
         
     | 
| 
       60 
55 
     | 
    
         
             
                        %li{:id => "reader_holder_#{reader.id}"}
         
     | 
| 
       61 
56 
     | 
    
         
             
                          = render :partial => 'admin/memberships/reader', :object => reader
         
     | 
| 
      
 57 
     | 
    
         
            +
                          
         
     | 
| 
       62 
58 
     | 
    
         | 
| 
       63 
59 
     | 
    
         
             
            - render_region :footer do |footer|
         
     | 
| 
       64 
60 
     | 
    
         
             
              - footer.notes do
         
     | 
| 
         @@ -1,5 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            - reader ||= @reader
         
     | 
| 
       2 
2 
     | 
    
         
             
            - group ||= @group
         
     | 
| 
       3 
     | 
    
         
            -
            -  
     | 
| 
      
 3 
     | 
    
         
            +
            - membership = reader.membership_of(group)
         
     | 
| 
      
 4 
     | 
    
         
            +
            - cssclass = membership ? "fake_checkbox checked" : "fake_checkbox unchecked"
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            = link_to reader.name,  
     | 
| 
      
 6 
     | 
    
         
            +
            = link_to reader.name, toggle_admin_membership_url(:group_id => group.id, :reader_id => reader.id),  {:class => cssclass, :id => "toggle_reader_#{reader.id}"}
         
     | 
| 
      
 7 
     | 
    
         
            +
            - if membership
         
     | 
| 
      
 8 
     | 
    
         
            +
              %span.role
         
     | 
| 
      
 9 
     | 
    
         
            +
                = render :partial => 'admin/memberships/role', :locals => {:membership => membership, :group => group}
         
     | 
| 
         @@ -9,7 +9,7 @@ 
     | 
|
| 
       9 
9 
     | 
    
         
             
            - else
         
     | 
| 
       10 
10 
     | 
    
         
             
              - cssclass = "fake_checkbox"
         
     | 
| 
       11 
11 
     | 
    
         
             
              - cssclass << ' checked' if page.has_group?(group)
         
     | 
| 
       12 
     | 
    
         
            -
              = link_to page.title,  
     | 
| 
      
 12 
     | 
    
         
            +
              = link_to page.title, toggle_admin_permission_url(:group_id => group.id, :page_id => page.id),  {:class => cssclass, :id => "toggle_page_#{page.id}"}
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
            - if page.children.any?
         
     | 
| 
       15 
15 
     | 
    
         
             
              %ul
         
     | 
| 
         @@ -32,9 +32,12 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
                  = t('reader_extension.subgroups', :name => @group.name)
         
     | 
| 
       33 
33 
     | 
    
         
             
                = render :partial => 'groups/group', :collection => @group.children
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
               
     | 
| 
       36 
     | 
    
         
            -
                 
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
              - if @group.memberships.any?
         
     | 
| 
      
 36 
     | 
    
         
            +
                %h2
         
     | 
| 
      
 37 
     | 
    
         
            +
                  = t('reader_extension.group_members')
         
     | 
| 
      
 38 
     | 
    
         
            +
                %table.readers
         
     | 
| 
      
 39 
     | 
    
         
            +
                  %tbody
         
     | 
| 
      
 40 
     | 
    
         
            +
                    = render :partial => 'memberships/membership', :collection => @group.memberships.by_reader_name
         
     | 
| 
       38 
41 
     | 
    
         | 
| 
       39 
42 
     | 
    
         
             
            = yield :main
         
     | 
| 
       40 
43 
     | 
    
         | 
| 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            - if membership
         
     | 
| 
      
 2 
     | 
    
         
            +
              - group = membership.group
         
     | 
| 
      
 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.name
         
     | 
| 
      
 12 
     | 
    
         
            +
                    %td.name
         
     | 
| 
      
 13 
     | 
    
         
            +
                      %h3
         
     | 
| 
      
 14 
     | 
    
         
            +
                        = link_to reader.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 " ", reader_url(reader, :format => :vcard), :class => 'vcard'
         
     | 
| 
         @@ -4,16 +4,6 @@ 
     | 
|
| 
       4 
4 
     | 
    
         
             
              - if readers.respond_to?(:previous_page) && readers.previous_page
         
     | 
| 
       5 
5 
     | 
    
         
             
                = pagination_and_summary_for(readers, t('reader_extension.person'))
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
              - if @display == 'gallery'
         
     | 
| 
       8 
     | 
    
         
            -
                - if readers.size > 1
         
     | 
| 
       9 
     | 
    
         
            -
                  - cols = 3
         
     | 
| 
       10 
     | 
    
         
            -
                  - columns = readers.in_groups_of((readers.size / cols), false)
         
     | 
| 
       11 
     | 
    
         
            -
                - else
         
     | 
| 
       12 
     | 
    
         
            -
                  - columns = [readers]
         
     | 
| 
       13 
     | 
    
         
            -
                - columns.each do |column|
         
     | 
| 
       14 
     | 
    
         
            -
                  %div.column
         
     | 
| 
       15 
     | 
    
         
            -
                    = render :partial => 'readers/mugshot', :collection => column
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
7 
     | 
    
         
             
              - else
         
     | 
| 
       18 
8 
     | 
    
         
             
                %table.readers
         
     | 
| 
       19 
9 
     | 
    
         
             
                  %tbody
         
     | 
| 
         @@ -1,8 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            - reader ||= @reader
         
     | 
| 
       2 
     | 
    
         
            -
            -  
     | 
| 
       3 
     | 
    
         
            -
            - if  
     | 
| 
      
 2 
     | 
    
         
            +
            - memberships = reader.memberships
         
     | 
| 
      
 3 
     | 
    
         
            +
            - if memberships.any?
         
     | 
| 
       4 
4 
     | 
    
         
             
              %ul.groups
         
     | 
| 
       5 
     | 
    
         
            -
                -  
     | 
| 
       6 
     | 
    
         
            -
                   
     | 
| 
       7 
     | 
    
         
            -
                     
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
                - memberships.each do |membership|
         
     | 
| 
      
 6 
     | 
    
         
            +
                  - if membership.group.visible_to?(current_reader)
         
     | 
| 
      
 7 
     | 
    
         
            +
                    %li
         
     | 
| 
      
 8 
     | 
    
         
            +
                      = link_to_group(membership.group)
         
     | 
| 
      
 9 
     | 
    
         
            +
                      - if membership.role?
         
     | 
| 
      
 10 
     | 
    
         
            +
                        %span.role
         
     | 
| 
      
 11 
     | 
    
         
            +
                          = membership.role
         
     | 
    
        data/config/locales/en.yml
    CHANGED
    
    | 
         @@ -6,6 +6,9 @@ en: 
     | 
|
| 
       6 
6 
     | 
    
         
             
                    description: "Description"
         
     | 
| 
       7 
7 
     | 
    
         
             
                    parent_id: "Subgroup of"
         
     | 
| 
       8 
8 
     | 
    
         
             
                    homepage_id: "Group home page"
         
     | 
| 
      
 9 
     | 
    
         
            +
                  membership:
         
     | 
| 
      
 10 
     | 
    
         
            +
                    role: "Role"
         
     | 
| 
      
 11 
     | 
    
         
            +
                    admin: "admin?"
         
     | 
| 
       9 
12 
     | 
    
         
             
                  reader:
         
     | 
| 
       10 
13 
     | 
    
         
             
                    description: "Biog or remarks"
         
     | 
| 
       11 
14 
     | 
    
         
             
                    email: "Email address"
         
     | 
| 
         @@ -140,7 +143,7 @@ en: 
     | 
|
| 
       140 
143 
     | 
    
         
             
                  directory: "Directory"
         
     | 
| 
       141 
144 
     | 
    
         
             
                  edit_profile: "Edit profile"
         
     | 
| 
       142 
145 
     | 
    
         
             
                  groups: "Your groups"
         
     | 
| 
       143 
     | 
    
         
            -
                  introduction: "Hello %{name}. Welcome back 
     | 
| 
      
 146 
     | 
    
         
            +
                  introduction: "Hello %{name}. Welcome back. This page gathers together recent activity, useful links and bits of administration. You can always get back here by clicking on a 'dashboard' link."
         
     | 
| 
       144 
147 
     | 
    
         
             
                  listing: "Directory listing"
         
     | 
| 
       145 
148 
     | 
    
         
             
                  messages: "Messages for you"
         
     | 
| 
       146 
149 
     | 
    
         
             
                  profile: "Your page"
         
     | 
    
        data/config/routes.rb
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ActionController::Routing::Routes.draw do |map|
         
     | 
| 
      
 2 
     | 
    
         
            +
              map.namespace :admin do |admin|
         
     | 
| 
      
 3 
     | 
    
         
            +
                admin.resources :readers, :except => [:show]
         
     | 
| 
      
 4 
     | 
    
         
            +
              end
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       2 
6 
     | 
    
         
             
              map.namespace :admin, :path_prefix => 'admin/readers' do |admin|
         
     | 
| 
       3 
7 
     | 
    
         
             
                admin.resources :messages, :member => [:preview, :deliver]
         
     | 
| 
       4 
8 
     | 
    
         
             
                admin.resources :groups, :has_many => [:memberships, :permissions, :group_invitations, :messages]
         
     | 
| 
      
 9 
     | 
    
         
            +
                admin.resources :memberships, :only => [:edit, :update], :member => [:toggle]
         
     | 
| 
      
 10 
     | 
    
         
            +
                admin.resources :permissions, :only => [], :member => [:toggle]
         
     | 
| 
       5 
11 
     | 
    
         
             
                admin.resource :reader_configuration, :controller => 'reader_configuration'
         
     | 
| 
       6 
     | 
    
         
            -
                admin.toggle_group_membership "memberships/toggle", :controller => 'memberships', :action => 'toggle'
         
     | 
| 
       7 
     | 
    
         
            -
                admin.toggle_group_permission "permissions/toggle", :controller => 'permissions', :action => 'toggle'
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              map.namespace :admin do |admin|
         
     | 
| 
       11 
     | 
    
         
            -
                admin.resources :readers, :except => [:show]
         
     | 
| 
       12 
12 
     | 
    
         
             
              end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
              readers_prefix = Radiant.config['reader.profiles_path'] || "directory"
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class MembershipAttributes < ActiveRecord::Migration
         
     | 
| 
      
 2 
     | 
    
         
            +
              def self.up
         
     | 
| 
      
 3 
     | 
    
         
            +
                add_column :memberships, :role, :string
         
     | 
| 
      
 4 
     | 
    
         
            +
                add_column :memberships, :admin, :boolean
         
     | 
| 
      
 5 
     | 
    
         
            +
              end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              def self.down
         
     | 
| 
      
 8 
     | 
    
         
            +
                remove_column :memberships, :role
         
     | 
| 
      
 9 
     | 
    
         
            +
                remove_column :memberships, :admin
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module RadiantReaderExtension
         
     | 
| 
       2 
     | 
    
         
            -
              VERSION = '3.0. 
     | 
| 
      
 2 
     | 
    
         
            +
              VERSION = '3.0.4'
         
     | 
| 
       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"
         
     | 
| 
         @@ -13,9 +13,26 @@ Remote.UpdatingLink = Behavior.create(Remote.Base, { 
     | 
|
| 
       13 
13 
     | 
    
         
             
              onclick : function() {
         
     | 
| 
       14 
14 
     | 
    
         
             
                var self = this;
         
     | 
| 
       15 
15 
     | 
    
         
             
                var options = Object.extend({ 
         
     | 
| 
       16 
     | 
    
         
            -
                  url :  
     | 
| 
      
 16 
     | 
    
         
            +
                  url : self.element.href, 
         
     | 
| 
       17 
17 
     | 
    
         
             
                  method : 'get',
         
     | 
| 
       18 
     | 
    
         
            -
                  update:  
     | 
| 
      
 18 
     | 
    
         
            +
                  update: self.element.up(),
         
     | 
| 
      
 19 
     | 
    
         
            +
                  onLoading: function () { self.element.addClassName('waiting'); },
         
     | 
| 
      
 20 
     | 
    
         
            +
                  onComplete: function () { self.element.removeClassName('waiting'); },
         
     | 
| 
      
 21 
     | 
    
         
            +
                  onSuccess: function () { Event.addBehavior.reload(); },
         
     | 
| 
      
 22 
     | 
    
         
            +
                  onFailure: function () { self.element.addClassName('failed'); }
         
     | 
| 
      
 23 
     | 
    
         
            +
                }, self.options);
         
     | 
| 
      
 24 
     | 
    
         
            +
                return self._makeRequest(options);
         
     | 
| 
      
 25 
     | 
    
         
            +
              }
         
     | 
| 
      
 26 
     | 
    
         
            +
            });
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            Remote.UpdatingForm = Behavior.create(Remote.Base, {
         
     | 
| 
      
 29 
     | 
    
         
            +
              onsubmit : function() {
         
     | 
| 
      
 30 
     | 
    
         
            +
                var self = this;
         
     | 
| 
      
 31 
     | 
    
         
            +
                var options = Object.extend({
         
     | 
| 
      
 32 
     | 
    
         
            +
                  url : self.element.action,
         
     | 
| 
      
 33 
     | 
    
         
            +
                  method : self.element.method || 'get',
         
     | 
| 
      
 34 
     | 
    
         
            +
                  parameters : self.element.serialize(),
         
     | 
| 
      
 35 
     | 
    
         
            +
                  update: self.element.up(),
         
     | 
| 
       19 
36 
     | 
    
         
             
                  onLoading: function () { self.element.addClassName('waiting'); },
         
     | 
| 
       20 
37 
     | 
    
         
             
                  onComplete: function () { self.element.removeClassName('waiting'); },
         
     | 
| 
       21 
38 
     | 
    
         
             
                  onSuccess: function () { Event.addBehavior.reload(); },
         
     | 
| 
         @@ -28,5 +45,7 @@ Remote.UpdatingLink = Behavior.create(Remote.Base, { 
     | 
|
| 
       28 
45 
     | 
    
         
             
            Event.addBehavior({ 
         
     | 
| 
       29 
46 
     | 
    
         
             
              'div.radio_group': Toggle.RadioGroupBehavior(),
         
     | 
| 
       30 
47 
     | 
    
         
             
              'input.select_all': Toggle.SelectAllBehavior(),
         
     | 
| 
       31 
     | 
    
         
            -
              'a.fake_checkbox': Remote.UpdatingLink()
         
     | 
| 
      
 48 
     | 
    
         
            +
              'a.fake_checkbox': Remote.UpdatingLink(),
         
     | 
| 
      
 49 
     | 
    
         
            +
              'a.inplace': Remote.UpdatingLink(),
         
     | 
| 
      
 50 
     | 
    
         
            +
              'form.inplace': Remote.UpdatingForm()
         
     | 
| 
       32 
51 
     | 
    
         
             
            });
         
     | 
| 
         @@ -91,15 +91,42 @@ 
     | 
|
| 
       91 
91 
     | 
    
         | 
| 
       92 
92 
     | 
    
         
             
            #group_pages ul
         
     | 
| 
       93 
93 
     | 
    
         
             
              padding-left: 20px
         
     | 
| 
      
 94 
     | 
    
         
            +
              li
         
     | 
| 
      
 95 
     | 
    
         
            +
                clear: left
         
     | 
| 
       94 
96 
     | 
    
         | 
| 
       95 
97 
     | 
    
         
             
            #group_people ul
         
     | 
| 
       96 
98 
     | 
    
         
             
              padding-left: 0
         
     | 
| 
       97 
99 
     | 
    
         
             
              li
         
     | 
| 
      
 100 
     | 
    
         
            +
                clear: left
         
     | 
| 
       98 
101 
     | 
    
         
             
                font-size: 16px
         
     | 
| 
      
 102 
     | 
    
         
            +
                line-height: 1.6
         
     | 
| 
       99 
103 
     | 
    
         
             
                list-style: none
         
     | 
| 
       100 
     | 
    
         
            -
                line-height: 24px
         
     | 
| 
       101 
104 
     | 
    
         
             
                margin-top: 2px
         
     | 
| 
       102 
105 
     | 
    
         
             
                font-family: 'Lucida Grande'
         
     | 
| 
      
 106 
     | 
    
         
            +
                .role
         
     | 
| 
      
 107 
     | 
    
         
            +
                  display: block
         
     | 
| 
      
 108 
     | 
    
         
            +
                  float: left
         
     | 
| 
      
 109 
     | 
    
         
            +
                  font-weight: normal
         
     | 
| 
      
 110 
     | 
    
         
            +
                  margin-left: 0.5em
         
     | 
| 
      
 111 
     | 
    
         
            +
                  a
         
     | 
| 
      
 112 
     | 
    
         
            +
                    color: #999
         
     | 
| 
      
 113 
     | 
    
         
            +
                    text-decoration: none
         
     | 
| 
      
 114 
     | 
    
         
            +
                    background-repeat: no-repeat
         
     | 
| 
      
 115 
     | 
    
         
            +
                    background-position: 0 3px
         
     | 
| 
      
 116 
     | 
    
         
            +
                    font-size: 60%
         
     | 
| 
      
 117 
     | 
    
         
            +
                    vertical-align: text-bottom
         
     | 
| 
      
 118 
     | 
    
         
            +
                    &.waiting
         
     | 
| 
      
 119 
     | 
    
         
            +
                      color: #8c8d8e
         
     | 
| 
      
 120 
     | 
    
         
            +
                      padding-left: 20px
         
     | 
| 
      
 121 
     | 
    
         
            +
                      background-image: url(/images/admin/spinner.gif)
         
     | 
| 
      
 122 
     | 
    
         
            +
                  form
         
     | 
| 
      
 123 
     | 
    
         
            +
                    font-size: 60%
         
     | 
| 
      
 124 
     | 
    
         
            +
                    input.minibox
         
     | 
| 
      
 125 
     | 
    
         
            +
                      width: 60px
         
     | 
| 
      
 126 
     | 
    
         
            +
                      color: #666
         
     | 
| 
      
 127 
     | 
    
         
            +
                    input, label
         
     | 
| 
      
 128 
     | 
    
         
            +
                      float: left      
         
     | 
| 
      
 129 
     | 
    
         
            +
                      vertical-align: text-bottom
         
     | 
| 
       103 
130 
     | 
    
         | 
| 
       104 
131 
     | 
    
         
             
            #group_pages ul li
         
     | 
| 
       105 
132 
     | 
    
         
             
              font-size: 16px
         
     | 
| 
         @@ -125,6 +152,7 @@ 
     | 
|
| 
       125 
152 
     | 
    
         | 
| 
       126 
153 
     | 
    
         
             
            .fake_checkbox
         
     | 
| 
       127 
154 
     | 
    
         
             
              display: block
         
     | 
| 
      
 155 
     | 
    
         
            +
              float: left
         
     | 
| 
       128 
156 
     | 
    
         
             
              padding-left: 20px
         
     | 
| 
       129 
157 
     | 
    
         
             
              cursor: pointer
         
     | 
| 
       130 
158 
     | 
    
         
             
              background-repeat: no-repeat
         
     | 
    
        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:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 15
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 3
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 0
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 3.0. 
     | 
| 
      
 9 
     | 
    
         
            +
              - 4
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 3.0.4
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - William Ross
         
     | 
| 
         @@ -208,6 +208,8 @@ files: 
     | 
|
| 
       208 
208 
     | 
    
         
             
            - app/views/admin/groups/remove.html.haml
         
     | 
| 
       209 
209 
     | 
    
         
             
            - app/views/admin/groups/show.html.haml
         
     | 
| 
       210 
210 
     | 
    
         
             
            - app/views/admin/memberships/_reader.html.haml
         
     | 
| 
      
 211 
     | 
    
         
            +
            - app/views/admin/memberships/_role.html.haml
         
     | 
| 
      
 212 
     | 
    
         
            +
            - app/views/admin/memberships/_role_form.html.haml
         
     | 
| 
       211 
213 
     | 
    
         
             
            - app/views/admin/messages/_form.html.haml
         
     | 
| 
       212 
214 
     | 
    
         
             
            - app/views/admin/messages/_help.html.haml
         
     | 
| 
       213 
215 
     | 
    
         
             
            - app/views/admin/messages/_list_function.haml
         
     | 
| 
         @@ -240,6 +242,7 @@ files: 
     | 
|
| 
       240 
242 
     | 
    
         
             
            - app/views/groups/_group.html.haml
         
     | 
| 
       241 
243 
     | 
    
         
             
            - app/views/groups/index.html.haml
         
     | 
| 
       242 
244 
     | 
    
         
             
            - app/views/groups/show.html.haml
         
     | 
| 
      
 245 
     | 
    
         
            +
            - app/views/memberships/_membership.html.haml
         
     | 
| 
       243 
246 
     | 
    
         
             
            - app/views/messages/preview.html.haml
         
     | 
| 
       244 
247 
     | 
    
         
             
            - app/views/messages/show.html.haml
         
     | 
| 
       245 
248 
     | 
    
         
             
            - app/views/password_resets/create.html.haml
         
     | 
| 
         @@ -295,6 +298,7 @@ files: 
     | 
|
| 
       295 
298 
     | 
    
         
             
            - db/migrate/20110812111934_groups_nested_set.rb
         
     | 
| 
       296 
299 
     | 
    
         
             
            - db/migrate/20110814070858_message_has_many_groups.rb
         
     | 
| 
       297 
300 
     | 
    
         
             
            - db/migrate/20110905194602_group_ancestry.rb
         
     | 
| 
      
 301 
     | 
    
         
            +
            - db/migrate/20110908194602_membership_attributes.rb
         
     | 
| 
       298 
302 
     | 
    
         
             
            - lib/controller_extensions.rb
         
     | 
| 
       299 
303 
     | 
    
         
             
            - lib/group_tags.rb
         
     | 
| 
       300 
304 
     | 
    
         
             
            - lib/grouped_model.rb
         
     | 
| 
         @@ -349,7 +353,7 @@ has_rdoc: true 
     | 
|
| 
       349 
353 
     | 
    
         
             
            homepage: http://radiant.spanner.org/reader
         
     | 
| 
       350 
354 
     | 
    
         
             
            licenses: []
         
     | 
| 
       351 
355 
     | 
    
         | 
| 
       352 
     | 
    
         
            -
            post_install_message: "\n  Add this to your radiant project with:\n\n    config.gem 'radiant-reader-extension', :version => '~> 3.0. 
     | 
| 
      
 356 
     | 
    
         
            +
            post_install_message: "\n  Add this to your radiant project with:\n\n    config.gem 'radiant-reader-extension', :version => '~> 3.0.4'\n\n  and if you haven't already, remember to enable ActionMailer in your\n  project's config/environment.rb.\n  "
         
     | 
| 
       353 
357 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       354 
358 
     | 
    
         | 
| 
       355 
359 
     | 
    
         
             
            require_paths: 
         
     |