diff --git a/app/components/users.rb b/app/components/users.rb index 846b5fa..37c8f33 100644 --- a/app/components/users.rb +++ b/app/components/users.rb @@ -1,4 +1,13 @@ class Users < Netzke::Basepack::Grid + include Netzke::Basepack::ActionColumn + + column :reset do |c| + c.type = :action + c.actions = [{name: :reset_password, icon: :lock_break}] + c.header = "" + c.width = 20 + end + def configure(c) super c.header = false @@ -11,6 +20,8 @@ class Users < Netzke::Basepack::Grid :email, :bike__shop_id ] + + c.columns << :reset if can? :manage, User end #override with nil to remove actions diff --git a/app/components/users/javascripts/init_component.js b/app/components/users/javascripts/init_component.js index d330667..de240a6 100644 --- a/app/components/users/javascripts/init_component.js +++ b/app/components/users/javascripts/init_component.js @@ -4,8 +4,32 @@ this.callParent(); this.getView().on('itemclick', function(view, record){ // The beauty of using Ext.Direct: calling 3 endpoints in a row, which results in a single call to the server! - console.log("user: " + record.get('id') ); this.selectCustomer({customer_id: record.get('id'), customer_type: 'User'}); }, this); + }, + onResetPassword: function(record){ + user = record.data; + Ext.Msg.confirm( + "Reset Password", + "Are you sure you want to reset "+user.first_name+" "+user.last_name+"'s password?", + function(butt_id){ + if( butt_id === "yes" ){ + $.ajax({ + type: 'POST', + url: '/api/v1/reset', + dataType: 'json', + contentType: 'application/json', + processData: false, + data: JSON.stringify({"user_id": user.id}), + complete: function() { }, + success: function(data) { + Ext.Msg.alert("Success", "New Password: "+data.password); + }, + error: function(data,textStatus) { + Ext.Msg.alert( "Error", JSON.parse(data.responseText)["error"]); + } + }); + } + }); } } diff --git a/app/components/users_and_profiles_border.rb b/app/components/users_and_profiles_border.rb index e91cb5a..afb31b4 100644 --- a/app/components/users_and_profiles_border.rb +++ b/app/components/users_and_profiles_border.rb @@ -9,7 +9,7 @@ class UsersAndProfilesBorder < Netzke::Base super c.header = false c.items = [ - { netzke_component: :users, header: "Users", region: :center, width: 300, split: true }, + { netzke_component: :users, header: "Users", region: :center, width: 350, split: true }, { netzke_component: :user_profiles, region: :south, height: 150, split: true}, { netzke_component: :user_logs, region: :east, split: true} ] @@ -25,5 +25,5 @@ class UsersAndProfilesBorder < Netzke::Base # store selected boss id in the session for this component's instance session[:selected_user_id] = params[:user_id] end - + end