From 2599c7bac06ee55d58e492a47e09ee163e9582ba Mon Sep 17 00:00:00 2001 From: jessib Date: Tue, 8 Jan 2013 13:20:34 -0800 Subject: Adding show view for users. --- users/app/controllers/users_controller.rb | 2 +- users/app/helpers/users_helper.rb | 6 ++++++ users/app/models/user.rb | 4 ++++ users/app/views/users/_user.html.haml | 2 +- users/app/views/users/show.html.haml | 32 +++++++++++++++++++++++++++++++ 5 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 users/app/views/users/show.html.haml diff --git a/users/app/controllers/users_controller.rb b/users/app/controllers/users_controller.rb index 79de630..eb93fcb 100644 --- a/users/app/controllers/users_controller.rb +++ b/users/app/controllers/users_controller.rb @@ -2,7 +2,7 @@ class UsersController < ApplicationController skip_before_filter :verify_authenticity_token, :only => [:create] - before_filter :fetch_user, :only => [:edit, :update, :destroy] + before_filter :fetch_user, :only => [:show, :edit, :update, :destroy] before_filter :set_anchor, :only => [:edit, :update] before_filter :authorize_admin, :only => [:index] diff --git a/users/app/helpers/users_helper.rb b/users/app/helpers/users_helper.rb index 45ca0e9..5f68085 100644 --- a/users/app/helpers/users_helper.rb +++ b/users/app/helpers/users_helper.rb @@ -30,4 +30,10 @@ module UsersHelper classes.compact end + def user_field(field) + value = @user.send(field) + value = value.to_s(:long) if field.end_with? '_at' + value || 'not set' + end + end diff --git a/users/app/models/user.rb b/users/app/models/user.rb index 1798ea4..4b6b06c 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -100,6 +100,10 @@ class User < CouchRest::Model::Base email_aliases.build(attrs.values.first) if attrs end + def most_recent_tickets(count=3) + Ticket.for_user(self).limit(count) #defaults to having most recent updated first + end + protected ## diff --git a/users/app/views/users/_user.html.haml b/users/app/views/users/_user.html.haml index 7db0041..ca03d34 100644 --- a/users/app/views/users/_user.html.haml +++ b/users/app/views/users/_user.html.haml @@ -1,5 +1,5 @@ %tr - %td= user.login + %td= link_to user.login, user %td= time_ago_in_words(user.created_at) + " ago" %td = link_to edit_user_path(user), :class => "btn btn-mini btn-primary" do diff --git a/users/app/views/users/show.html.haml b/users/app/views/users/show.html.haml new file mode 100644 index 0000000..9df029e --- /dev/null +++ b/users/app/views/users/show.html.haml @@ -0,0 +1,32 @@ +.span8.offset1 + %h2= @user.login + %dl.offset1 + - fields = ['login', 'email', 'created_at', 'updated_at', 'email_forward'] + - fields.each do |field| + %dt + = field.titleize + %dd + = user_field(field) + %dt + =t :email_aliases + %dd + - aliases = @user.email_aliases + - if aliases.empty? + none set + - else + %ul.unstyled + - aliases.each do |al| + %li + = al.email + %dt + =t :most_recently_updated_tickets + %dd + %ul + - @user.most_recent_tickets.each do |ticket| + %li + = link_to ticket.title, ticket + %small + updated: + = ticket.updated_at.to_s(:long) + + -- cgit v1.2.3 From d81bf00ecd8bdfcddf50e4881428c917253326fe Mon Sep 17 00:00:00 2001 From: jessib Date: Thu, 10 Jan 2013 11:06:09 -0800 Subject: Add test for showing user. --- users/test/functional/users_controller_test.rb | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/users/test/functional/users_controller_test.rb b/users/test/functional/users_controller_test.rb index 1fa1462..1f6c868 100644 --- a/users/test/functional/users_controller_test.rb +++ b/users/test/functional/users_controller_test.rb @@ -9,12 +9,31 @@ class UsersControllerTest < ActionController::TestCase assert_response :success end + test "failed show without login" do + user = find_record User + get :show, :id => user.id + assert_response :redirect + assert_redirected_to login_path + end + + test "user can see user" do + user = find_record User, + :email => nil, + :email_forward => nil, + :email_aliases => [], + :created_at => Time.now, + :updated_at => Time.now, + :most_recent_tickets => [] + login user + get :show, :id => user.id + assert_response :success + end + test "should create new user" do user = stub_record User User.expects(:create).with(user.params).returns(user) post :create, :user => user.params, :format => :json - assert_nil session[:user_id] assert_json_response user assert_response :success -- cgit v1.2.3 From 8141876126aa25d713cf4b2c76c3ecff837c4ba7 Mon Sep 17 00:00:00 2001 From: jessib Date: Mon, 14 Jan 2013 12:39:59 -0800 Subject: Use partials for displaying details shown when viewing a user. Some of these partials have specific CSS for another use, so we will likely want to tweak this. --- help/app/views/tickets/_ticket.html.haml | 5 +++-- users/app/models/user.rb | 2 +- users/app/views/emails/_email.html.haml | 5 +++-- users/app/views/users/show.html.haml | 21 ++++++++------------- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/help/app/views/tickets/_ticket.html.haml b/help/app/views/tickets/_ticket.html.haml index 3edfa8b..e02aaeb 100644 --- a/help/app/views/tickets/_ticket.html.haml +++ b/help/app/views/tickets/_ticket.html.haml @@ -1,3 +1,4 @@ += # TODO---this is now used in 2 places, and not sure we want the same CSS in both places %tr %td %b @@ -5,9 +6,9 @@ %br %small created: - = ticket.created_at.to_s(:short) + = ticket.created_at.to_s(:short) #todo doesn't show year updated: - = ticket.updated_at.to_s(:short) + = ticket.updated_at.to_s(:short) # doesn't show year %small.pull-right comments by: = ticket.commenters diff --git a/users/app/models/user.rb b/users/app/models/user.rb index 42900ea..1e8ee0e 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -95,7 +95,7 @@ class User < CouchRest::Model::Base end def most_recent_tickets(count=3) - Ticket.for_user(self).limit(count) #defaults to having most recent updated first + Ticket.for_user(self).limit(count).all #defaults to having most recent updated first end protected diff --git a/users/app/views/emails/_email.html.haml b/users/app/views/emails/_email.html.haml index 3feb6f0..948d847 100644 --- a/users/app/views/emails/_email.html.haml +++ b/users/app/views/emails/_email.html.haml @@ -1,6 +1,7 @@ - if email.valid? %li.pull-right %code= email - = link_to(user_email_alias_path(@user, email), :method => :delete) do - %i.icon-remove + - if params[:action] == 'edit' + = link_to(user_email_alias_path(@user, email), :method => :delete) do + %i.icon-remove .clearfix diff --git a/users/app/views/users/show.html.haml b/users/app/views/users/show.html.haml index 9df029e..2b59c66 100644 --- a/users/app/views/users/show.html.haml +++ b/users/app/views/users/show.html.haml @@ -1,5 +1,7 @@ .span8.offset1 %h2= @user.login + .small + = link_to 'edit', edit_user_path(@user) %dl.offset1 - fields = ['login', 'email', 'created_at', 'updated_at', 'email_forward'] - fields.each do |field| @@ -14,19 +16,12 @@ - if aliases.empty? none set - else - %ul.unstyled - - aliases.each do |al| - %li - = al.email + .pull-left + = render aliases + .clearfix %dt =t :most_recently_updated_tickets %dd - %ul - - @user.most_recent_tickets.each do |ticket| - %li - = link_to ticket.title, ticket - %small - updated: - = ticket.updated_at.to_s(:long) - - + %table + %tbody + = render @user.most_recent_tickets \ No newline at end of file -- cgit v1.2.3 From e7d36df945792b292732e25e879a90577050a6c1 Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 15 Jan 2013 11:06:46 +0100 Subject: minor: put emails in unstyled ul and simplify Just found out that render(@collection) returns nil for emtpy collections. So that is usefull for putting messages about the emtpy collection in an or clause. --- users/app/views/users/show.html.haml | 10 +++------- users/config/locales/en.yml | 1 + 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/users/app/views/users/show.html.haml b/users/app/views/users/show.html.haml index 2b59c66..d8b51e9 100644 --- a/users/app/views/users/show.html.haml +++ b/users/app/views/users/show.html.haml @@ -12,16 +12,12 @@ %dt =t :email_aliases %dd - - aliases = @user.email_aliases - - if aliases.empty? - none set - - else - .pull-left - = render aliases + %ul.pull-left.unstyled + = render(@user.email_aliases) || t(:none_set) .clearfix %dt =t :most_recently_updated_tickets %dd %table %tbody - = render @user.most_recent_tickets \ No newline at end of file + = render @user.most_recent_tickets diff --git a/users/config/locales/en.yml b/users/config/locales/en.yml index 3c71e7e..7aa23f1 100644 --- a/users/config/locales/en.yml +++ b/users/config/locales/en.yml @@ -1,4 +1,5 @@ en: + none_set: "None set." signup: "Sign up" signup_message: "Please create an account." cancel: "Cancel" -- cgit v1.2.3 From be8ee9fa669bc5554796be1fc99867fc99ba21bc Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 15 Jan 2013 11:28:37 +0100 Subject: reverted simplification - not good to have 'none set' in a %ul --- users/app/views/users/show.html.haml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/users/app/views/users/show.html.haml b/users/app/views/users/show.html.haml index d8b51e9..ec5cea6 100644 --- a/users/app/views/users/show.html.haml +++ b/users/app/views/users/show.html.haml @@ -12,8 +12,12 @@ %dt =t :email_aliases %dd - %ul.pull-left.unstyled - = render(@user.email_aliases) || t(:none_set) + - aliases = @user.email_aliases + - if aliases.present? + %ul.pull-left.unstyled + = render aliases + - else + =t :none_set .clearfix %dt =t :most_recently_updated_tickets -- cgit v1.2.3 From 9d53f7b2d1b34da6b6103e97bd6c931cedb23e9b Mon Sep 17 00:00:00 2001 From: jessib Date: Tue, 15 Jan 2013 11:03:02 -0800 Subject: Show different ticket characteristics when viewing the users versus when listing the tickets. Give a message if a user has no tickets. --- help/app/views/tickets/_ticket.html.haml | 23 +++++++++++++---------- users/app/views/users/show.html.haml | 12 ++++++++---- users/config/locales/en.yml | 2 +- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/help/app/views/tickets/_ticket.html.haml b/help/app/views/tickets/_ticket.html.haml index e02aaeb..7b37652 100644 --- a/help/app/views/tickets/_ticket.html.haml +++ b/help/app/views/tickets/_ticket.html.haml @@ -1,14 +1,17 @@ -= # TODO---this is now used in 2 places, and not sure we want the same CSS in both places +- updated_at_text = 'updated: ' + ticket.updated_at.to_s(:long) %tr %td %b = link_to ticket.title, ticket - %br - %small - created: - = ticket.created_at.to_s(:short) #todo doesn't show year - updated: - = ticket.updated_at.to_s(:short) # doesn't show year - %small.pull-right - comments by: - = ticket.commenters + - if params[:controller] == 'tickets' + %br + %small + created: + = ticket.created_at.to_s(:long) + = updated_at_text + %small.pull-right + comments by: + = ticket.commenters + - else + %small + = updated_at_text \ No newline at end of file diff --git a/users/app/views/users/show.html.haml b/users/app/views/users/show.html.haml index ec5cea6..a1eeccb 100644 --- a/users/app/views/users/show.html.haml +++ b/users/app/views/users/show.html.haml @@ -17,11 +17,15 @@ %ul.pull-left.unstyled = render aliases - else - =t :none_set + =t :none .clearfix %dt =t :most_recently_updated_tickets %dd - %table - %tbody - = render @user.most_recent_tickets + - tix = @user.most_recent_tickets + - if tix.present? + %table + %tbody + = render @user.most_recent_tickets + - else + =t :none \ No newline at end of file diff --git a/users/config/locales/en.yml b/users/config/locales/en.yml index 7aa23f1..7a6ab90 100644 --- a/users/config/locales/en.yml +++ b/users/config/locales/en.yml @@ -1,5 +1,5 @@ en: - none_set: "None set." + none: "None." signup: "Sign up" signup_message: "Please create an account." cancel: "Cancel" -- cgit v1.2.3