caboose-cms 0.3.88 → 0.3.89
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 +8 -8
- data/app/controllers/caboose/roles_controller.rb +16 -0
- data/app/controllers/caboose/users_controller.rb +16 -0
- data/app/views/caboose/roles/edit.html.erb +51 -73
- data/app/views/caboose/users/edit.html.erb +23 -0
- data/config/routes.rb +6 -0
- data/lib/caboose/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                ZmYwNzdhZTIzMjlhMzhjMzg0MGZlNTMwODk2M2RkNjc1NDg3MTM4Nw==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                MzZmMTAxMWUyZjA2YWVmNGE5MTNlYTEyMzI0NjJhOTdjNmFlMmYxZQ==
         | 
| 7 7 | 
             
            !binary "U0hBNTEy":
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                Zjk2ZTY3MTFjYmRkZTM4MTg2N2Q3YTk0NWFlY2FjYWY4YWZjMGQ3MzRkMDM5
         | 
| 10 | 
            +
                NzdiZWM3YjJlYWY4OGFkMTk5MTFiMDM0ZDY4ZWM0NDIxOWEwY2YzM2NjOTIx
         | 
| 11 | 
            +
                OTQ2ZjIxYmJmN2U5M2NlZjYzYzcyYjRmZWViODRmN2VmZGQ5MWY=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                MTY3NGU0M2U2Yzc4MDc3YTkzMjk2YjY3ZjdkNDE0Y2FlODJiZWQ3MzgxYjFi
         | 
| 14 | 
            +
                NDk0M2U5ZTA1YzczMjdiNzhkYThjZDUwNzhlZmFiMjg1NTQ3ZmFkMWY1N2Fh
         | 
| 15 | 
            +
                OTk4MTJkNzAwZDc0MDhkOGFjZjNhMWQ4NzhiNWQzNGMxM2M5Yzg=
         | 
| @@ -95,6 +95,22 @@ module Caboose | |
| 95 95 | 
             
                  render json: { 'redirect' => '/admin/roles' }
         | 
| 96 96 | 
             
                end
         | 
| 97 97 |  | 
| 98 | 
            +
                # POST /admin/roles/:id/permissions/:permission_id
         | 
| 99 | 
            +
                def add_permission
         | 
| 100 | 
            +
                  return if !user_is_allowed('roles', 'edit')
         | 
| 101 | 
            +
                  if !RolePermission.where(:role_id => params[:id], :permission_id => params[:permission_id], ).exists?
         | 
| 102 | 
            +
                    RolePermission.create(:role_id => params[:id], :permission_id => params[:permission_id])
         | 
| 103 | 
            +
                  end
         | 
| 104 | 
            +
                  render :json => true
         | 
| 105 | 
            +
                end
         | 
| 106 | 
            +
                
         | 
| 107 | 
            +
                # DELETE /admin/roles/:id/permissions/:permission_id
         | 
| 108 | 
            +
                def remove_permission
         | 
| 109 | 
            +
                  return if !user_is_allowed('roles', 'edit')
         | 
| 110 | 
            +
                  RolePermission.where(:role_id => params[:id], :permission_id => params[:permission_id]).destroy_all        
         | 
| 111 | 
            +
                  render :json => true
         | 
| 112 | 
            +
                end
         | 
| 113 | 
            +
                
         | 
| 98 114 | 
             
                # GET /admin/roles/options
         | 
| 99 115 | 
             
                def options
         | 
| 100 116 | 
             
                  return unless user_is_allowed('roles', 'view')
         | 
| @@ -270,6 +270,22 @@ module Caboose | |
| 270 270 | 
             
                  render :json => resp
         | 
| 271 271 | 
             
                end
         | 
| 272 272 |  | 
| 273 | 
            +
                # POST /admin/users/:id/roles/:role_id
         | 
| 274 | 
            +
                def add_to_role
         | 
| 275 | 
            +
                  return if !user_is_allowed('users', 'edit')
         | 
| 276 | 
            +
                  if !RoleMembership.where(:user_id => params[:id], :role_id => params[:role_id]).exists?
         | 
| 277 | 
            +
                    RoleMembership.create(:user_id => params[:id], :role_id => params[:role_id])
         | 
| 278 | 
            +
                  end
         | 
| 279 | 
            +
                  render :json => true
         | 
| 280 | 
            +
                end
         | 
| 281 | 
            +
                
         | 
| 282 | 
            +
                # DELETE /admin/users/:id/roles/:role_id
         | 
| 283 | 
            +
                def remove_from_role
         | 
| 284 | 
            +
                  return if !user_is_allowed('users', 'edit')
         | 
| 285 | 
            +
                  RoleMembership.where(:user_id => params[:id], :role_id => params[:role_id]).destroy_all        
         | 
| 286 | 
            +
                  render :json => true
         | 
| 287 | 
            +
                end
         | 
| 288 | 
            +
                
         | 
| 273 289 | 
             
                # GET /admin/users/options
         | 
| 274 290 | 
             
                def options
         | 
| 275 291 | 
             
                  return if !user_is_allowed('users', 'view')
         | 
| @@ -3,10 +3,41 @@ | |
| 3 3 | 
             
            <div id="role_<%= @role.id %>_name"></div>
         | 
| 4 4 | 
             
            <div id="role_<%= @role.id %>_parent_id"></div>
         | 
| 5 5 | 
             
            <div id="role_<%= @role.id %>_description"></div>
         | 
| 6 | 
            +
            <h3>Members</h3>
         | 
| 7 | 
            +
            <div id='members'>
         | 
| 8 | 
            +
              <table class='data'>
         | 
| 9 | 
            +
                <% Caboose::User.reorder("last_name, first_name").all.each do |u| %>
         | 
| 10 | 
            +
                  <% is_member = Caboose::RoleMembership.where(:role_id => @role.id, :user_id => u.id).exists? %>
         | 
| 11 | 
            +
                  <tr>
         | 
| 12 | 
            +
                    <td><input type='checkbox' name='user<%= u.id %>' <%= raw is_member ? "checked='true'" : '' %> onclick="toggle_role(<%= u.id %>, <%= @role.id %>, $(this).prop('checked'));" /></td>
         | 
| 13 | 
            +
                    <td><%= u.first_name %> <%= u.last_name %> (<%= u.email %>)</td>
         | 
| 14 | 
            +
                  </tr>
         | 
| 15 | 
            +
                <% end %>
         | 
| 16 | 
            +
              </table>
         | 
| 17 | 
            +
            </div>
         | 
| 18 | 
            +
            <h3>Permissions</h3>
         | 
| 19 | 
            +
            <div id='permissions'>
         | 
| 20 | 
            +
              <table class='data'>
         | 
| 21 | 
            +
                <% Caboose::Permission.reorder("resource, action").all.each do |p| %>
         | 
| 22 | 
            +
                  <% has_permission = Caboose::RolePermission.where(:role_id => @role.id, :permission_id => p.id).exists? %>
         | 
| 23 | 
            +
                  <tr>
         | 
| 24 | 
            +
                    <td><input type='checkbox' name='perm<%= p.id %>' <%= raw has_permission ? "checked='true'" : '' %> onclick="toggle_permission(<%= p.id %>, <%= @role.id %>, $(this).prop('checked'));" /></td>
         | 
| 25 | 
            +
                    <td><%= p.resource %> - <%= p.action %></td>
         | 
| 26 | 
            +
                  </tr>
         | 
| 27 | 
            +
                <% end %>
         | 
| 28 | 
            +
              </table>
         | 
| 29 | 
            +
            </div>
         | 
| 6 30 | 
             
            <div id="role_<%= @role.id %>_members"></div>
         | 
| 7 31 | 
             
            <div id="role_<%= @role.id %>_permissions"></div>
         | 
| 8 32 | 
             
            <div id="message"></div>
         | 
| 9 33 |  | 
| 34 | 
            +
            <% content_for :caboose_css do %>
         | 
| 35 | 
            +
            <style type='text/css'>
         | 
| 36 | 
            +
            #content input[type=checkbox] { position: relative; }
         | 
| 37 | 
            +
            #members { height: 400px; overflow-y: scroll; margin-bottom: 20px; }
         | 
| 38 | 
            +
            #permissions { height: 400px; overflow-y: scroll; margin-bottom: 20px; }
         | 
| 39 | 
            +
            </style>
         | 
| 40 | 
            +
            <% end %>
         | 
| 10 41 | 
             
            <% content_for :caboose_js do %>
         | 
| 11 42 | 
             
            <%= javascript_include_tag "caboose/model/all" %>
         | 
| 12 43 | 
             
            <script type="text/javascript">
         | 
| @@ -25,84 +56,31 @@ $(document).ready(function() { | |
| 25 56 | 
             
                delete_url: 'delete /admin/roles/<%= @role.id %>',
         | 
| 26 57 | 
             
                authenticity_token: '<%= form_authenticity_token %>',
         | 
| 27 58 | 
             
                attributes: [
         | 
| 28 | 
            -
                  { 
         | 
| 29 | 
            -
                    name: 'parent_id',
         | 
| 30 | 
            -
                    nice_name: 'Parent',
         | 
| 31 | 
            -
                    type: 'select',
         | 
| 32 | 
            -
                    value: <%= @role.parent_id %>,
         | 
| 33 | 
            -
                    text: "<%= @role.parent.nil? ? '[No parent]' : @role.parent.name %>",
         | 
| 34 | 
            -
                    show_controls: true,
         | 
| 35 | 
            -
                    loading_message: 'Getting roles...',
         | 
| 36 | 
            -
                    options_url: '/admin/roles/options',
         | 
| 37 | 
            -
                    width: 590,
         | 
| 38 | 
            -
                    message: 'message'
         | 
| 39 | 
            -
                  },    
         | 
| 59 | 
            +
                  { name: 'parent_id'   , nice_name: 'Parent'      , type: 'select', value: <%= @role.parent_id %>, text: "<%= @role.parent.nil? ? '[No parent]' : @role.parent.name %>", show_controls: true, loading_message: 'Getting roles...', options_url: '/admin/roles/options', width: 590, message: 'message' },    
         | 
| 40 60 | 
             
                  { name: 'name'        , nice_name: 'Name'        , type: 'text' , value: "<%= @role.name %>"        , width: 590 , message: 'message' },
         | 
| 41 | 
            -
                  { name: 'description' , nice_name: 'Description' , type: 'text' , value: "<%= @role.description %>" , width: 590 , message: 'message' } | 
| 42 | 
            -
                  { 
         | 
| 43 | 
            -
                    name: 'members',
         | 
| 44 | 
            -
                    nice_name: 'Members',
         | 
| 45 | 
            -
                    type: 'checkbox-multiple',
         | 
| 46 | 
            -
                    value: <%= @role.users.collect{|u| u.id}.to_json %>,
         | 
| 47 | 
            -
                    text: "<%= raw @role.users.order('last_name, first_name').collect{|u| "#{u.first_name} #{u.last_name}"}.join('<br />') %>",
         | 
| 48 | 
            -
                    loading_message: 'Getting users...',
         | 
| 49 | 
            -
                    options_url: '/admin/users/options',
         | 
| 50 | 
            -
                    width: 590,
         | 
| 51 | 
            -
                    message: 'message'
         | 
| 52 | 
            -
                  },
         | 
| 53 | 
            -
                  { 
         | 
| 54 | 
            -
                    name: 'permissions',
         | 
| 55 | 
            -
                    nice_name: 'Permissions',
         | 
| 56 | 
            -
                    type: 'checkbox-multiple',
         | 
| 57 | 
            -
                    value: <%= @role.permissions.collect{|p| p.id}.to_json %>,
         | 
| 58 | 
            -
                    text: "<%= raw @role.permissions.order('resource, action').collect{|p| "#{p.resource}_#{p.action}"}.join('<br />') %>",
         | 
| 59 | 
            -
                    loading_message: 'Getting permissions...',
         | 
| 60 | 
            -
                    options_url: '/admin/permissions/options',
         | 
| 61 | 
            -
                    width: 590,
         | 
| 62 | 
            -
                    message: 'message'
         | 
| 63 | 
            -
                  }
         | 
| 61 | 
            +
                  { name: 'description' , nice_name: 'Description' , type: 'text' , value: "<%= @role.description %>" , width: 590 , message: 'message' }      
         | 
| 64 62 | 
             
                ],
         | 
| 65 63 | 
             
                on_load: function() { modal.autosize(); }
         | 
| 64 | 
            +
              });  
         | 
| 65 | 
            +
            });
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            function toggle_role(user_id, role_id, checked)
         | 
| 68 | 
            +
            {
         | 
| 69 | 
            +
              $.ajax({
         | 
| 70 | 
            +
                url: '/admin/users/' + user_id +'/roles/' + role_id,
         | 
| 71 | 
            +
                type: checked ? 'post' : 'delete',    
         | 
| 72 | 
            +
                success: function(resp) { }
         | 
| 66 73 | 
             
              });
         | 
| 74 | 
            +
            }
         | 
| 67 75 |  | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 71 | 
            -
                 | 
| 72 | 
            -
                 | 
| 73 | 
            -
                 | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
                    name: 'parent_id',
         | 
| 77 | 
            -
                    nice_name: 'Parent',
         | 
| 78 | 
            -
                    type: 'select',
         | 
| 79 | 
            -
                    value: <%= @role.parent_id %>,
         | 
| 80 | 
            -
                    text: "<%= @role.parent.nil? ? '[No parent]' : @role.parent.name %>",
         | 
| 81 | 
            -
                    show_controls: true,
         | 
| 82 | 
            -
                    loading_message: 'Getting roles...',
         | 
| 83 | 
            -
                    options_url: '/admin/roles/options' 
         | 
| 84 | 
            -
                  },    
         | 
| 85 | 
            -
                  { name: 'name'        , type: 'text' , value: "<%= @role.name %>" },
         | 
| 86 | 
            -
                  { name: 'description' , type: 'text' , value: "<%= @role.description %>" },
         | 
| 87 | 
            -
                  { 
         | 
| 88 | 
            -
                    name: 'members',
         | 
| 89 | 
            -
                    type: 'checkbox-multiple',
         | 
| 90 | 
            -
                    value: <%= @role.users.collect{|u| u.id}.to_json %>,
         | 
| 91 | 
            -
                    text: "<%= raw @role.users.order('last_name, first_name').collect{|u| "#{u.first_name} #{u.last_name}"}.join('<br />') %>",
         | 
| 92 | 
            -
                    loading_message: 'Getting users...',
         | 
| 93 | 
            -
                    options_url: '/admin/users/options',
         | 
| 94 | 
            -
                  },
         | 
| 95 | 
            -
                  { 
         | 
| 96 | 
            -
                    name: 'permissions',
         | 
| 97 | 
            -
                    type: 'checkbox-multiple',
         | 
| 98 | 
            -
                    value: <%= @role.permissions.collect{|p| p.id}.to_json %>,
         | 
| 99 | 
            -
                    text: "<%= raw @role.permissions.order('resource, action').collect{|p| "#{p.resource}_#{p.action}"}.join('<br />') %>",
         | 
| 100 | 
            -
                    loading_message: 'Getting permissions...',
         | 
| 101 | 
            -
                    options_url: '/admin/permissions/options',
         | 
| 102 | 
            -
                  }
         | 
| 103 | 
            -
                ]
         | 
| 104 | 
            -
              });*/
         | 
| 105 | 
            -
            });
         | 
| 76 | 
            +
            function toggle_permission(permission_id, role_id, checked)
         | 
| 77 | 
            +
            {
         | 
| 78 | 
            +
              $.ajax({
         | 
| 79 | 
            +
                url: '/admin/roles/' + role_id +'/permissions/' + permission_id,
         | 
| 80 | 
            +
                type: checked ? 'post' : 'delete',    
         | 
| 81 | 
            +
                success: function(resp) { }
         | 
| 82 | 
            +
              });
         | 
| 83 | 
            +
            }
         | 
| 106 84 |  | 
| 107 85 | 
             
            </script>
         | 
| 108 86 | 
             
            <% end %>
         | 
| @@ -8,6 +8,14 @@ pic = "http://gravatar.com/avatar/#{gravatar_id}.png?s=150" #&d=/assets/caboose/ | |
| 8 8 | 
             
            <p><div id='user_<%= @edituser.id %>_last_name'  ></div></p>
         | 
| 9 9 | 
             
            <p><div id='user_<%= @edituser.id %>_username'   ></div></p>
         | 
| 10 10 | 
             
            <p><div id='user_<%= @edituser.id %>_email'      ></div></p>
         | 
| 11 | 
            +
            <div id='roles'>
         | 
| 12 | 
            +
            <table class='data'>
         | 
| 13 | 
            +
            <% Caboose::Role.flat_tree.each do |r| %>
         | 
| 14 | 
            +
            <% is_member = Caboose::RoleMembership.where(:role_id => r.id, :user_id => @edituser.id).exists? %>
         | 
| 15 | 
            +
            <tr><td><input type='checkbox' name='role<%= r.id %>' <%= is_member ? "checked='true'" : '' %> onclick="toggle_role(<%= @edituser.id %>, <%= r.id %>, $(this).prop('checked'));" /></td><td><%= r.name %></td></tr>
         | 
| 16 | 
            +
            <% end %>
         | 
| 17 | 
            +
            </table>
         | 
| 18 | 
            +
            </div>
         | 
| 11 19 | 
             
            <div id='message'></div>
         | 
| 12 20 | 
             
            <div id='controls'>
         | 
| 13 21 | 
             
            <input type='button' value='Back'           onclick="window.location='/admin/users';" />
         | 
| @@ -15,6 +23,12 @@ pic = "http://gravatar.com/avatar/#{gravatar_id}.png?s=150" #&d=/assets/caboose/ | |
| 15 23 | 
             
            <input type='button' value='Delete User'    onclick="delete_user(<%= @edituser.id %>);" />
         | 
| 16 24 | 
             
            </div>
         | 
| 17 25 |  | 
| 26 | 
            +
            <% content_for :caboose_css do %>
         | 
| 27 | 
            +
            <style type='text/css'>
         | 
| 28 | 
            +
            #content input[type=checkbox] { position: relative; }
         | 
| 29 | 
            +
            #roles { height: 200px; overflow-y: scroll; margin-bottom: 20px; }
         | 
| 30 | 
            +
            </style>
         | 
| 31 | 
            +
            <% end %>
         | 
| 18 32 | 
             
            <% content_for :caboose_js do %>
         | 
| 19 33 | 
             
            <%= javascript_include_tag "caboose/model/all" %>
         | 
| 20 34 | 
             
            <script type="text/javascript">
         | 
| @@ -61,6 +75,15 @@ function delete_user(user_id, confirm) | |
| 61 75 | 
             
              });
         | 
| 62 76 | 
             
            }
         | 
| 63 77 |  | 
| 78 | 
            +
            function toggle_role(user_id, role_id, checked)
         | 
| 79 | 
            +
            {
         | 
| 80 | 
            +
              $.ajax({
         | 
| 81 | 
            +
                url: '/admin/users/' + user_id +'/roles/' + role_id,
         | 
| 82 | 
            +
                type: checked ? 'post' : 'delete',    
         | 
| 83 | 
            +
                succes: function(resp) { }
         | 
| 84 | 
            +
              });
         | 
| 85 | 
            +
            }
         | 
| 86 | 
            +
             | 
| 64 87 | 
             
            </script>
         | 
| 65 88 | 
             
            <% end %>
         | 
| 66 89 |  | 
    
        data/config/routes.rb
    CHANGED
    
    | @@ -33,6 +33,9 @@ Caboose::Engine.routes.draw do | |
| 33 33 | 
             
              post    "admin/users"                     => "users#create"
         | 
| 34 34 | 
             
              delete  "admin/users/:id"                 => "users#destroy"
         | 
| 35 35 |  | 
| 36 | 
            +
              post    "admin/users/:id/roles/:role_id"  => "users#add_to_role"  
         | 
| 37 | 
            +
              delete  "admin/users/:id/roles/:role_id"  => "users#remove_from_role"
         | 
| 38 | 
            +
              
         | 
| 36 39 | 
             
              get     "admin/roles"                   => "roles#index"
         | 
| 37 40 | 
             
              get     "admin/roles/options"           => "roles#options"
         | 
| 38 41 | 
             
              get     "admin/roles/new"               => "roles#new"
         | 
| @@ -41,6 +44,9 @@ Caboose::Engine.routes.draw do | |
| 41 44 | 
             
              post    "admin/roles"                   => "roles#create"
         | 
| 42 45 | 
             
              delete  "admin/roles/:id"               => "roles#destroy"
         | 
| 43 46 |  | 
| 47 | 
            +
              post    "admin/roles/:id/permissions/:permission_id"  => "roles#add_permission"  
         | 
| 48 | 
            +
              delete  "admin/roles/:id/permissions/:permission_id"  => "roles#remove_permission"
         | 
| 49 | 
            +
              
         | 
| 44 50 | 
             
              get     "admin/permissions"             => "permissions#index"
         | 
| 45 51 | 
             
              get     "admin/permissions/options"     => "permissions#options"
         | 
| 46 52 | 
             
              get     "admin/permissions/new"         => "permissions#new"
         | 
    
        data/lib/caboose/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: caboose-cms
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.89
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - William Barry
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014-04- | 
| 11 | 
            +
            date: 2014-04-09 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         |