From 94db8a1c334b9ff5a0c28c89cb87ffa882095261 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Sat, 18 Feb 2012 14:12:48 +0200 Subject: [PATCH] Usability & design improvements --- app/assets/stylesheets/common.scss | 57 +++++++++++++++++-- app/assets/stylesheets/tree.scss | 13 ++++- app/controllers/merge_requests_controller.rb | 2 + app/models/commit.rb | 2 +- app/models/user.rb | 6 +- app/views/issues/_show.html.haml | 2 +- app/views/issues/index.html.haml | 44 +++++++------- app/views/issues/show.html.haml | 5 ++ app/views/keys/index.html.haml | 2 +- app/views/layouts/_project_menu.html.haml | 2 +- app/views/layouts/_projects_side.html.haml | 12 ++-- app/views/layouts/profile.html.haml | 2 +- .../merge_requests/_merge_request.html.haml | 2 +- app/views/merge_requests/index.html.haml | 25 +++++--- app/views/merge_requests/show.html.haml | 3 + app/views/projects/show.html.haml | 10 +++- app/views/repositories/show.html.haml | 30 +++++----- app/views/team_members/show.html.haml | 23 +++++--- app/views/widgets/_project_member.html.haml | 33 +++++++---- app/views/widgets/_recent_projects.html.haml | 3 +- spec/requests/snippets_spec.rb | 1 - 21 files changed, 190 insertions(+), 89 deletions(-) diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index bc72689e..d92a5bb3 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -10,8 +10,12 @@ a { color: $link_color !important; } +.pills a:hover { + background-color:#ccc; +} + .pills .active a { - background-color: #474D57; + background-color: #aaa; } .label { @@ -83,7 +87,7 @@ a { } .container .sidebar { - width: 250px; + width: 220px; height:100%; min-height:450px; float:right; @@ -131,6 +135,15 @@ nav.main_menu { margin: 0; float:left; text-shadow:0 1px 1px white; + + &.home { + padding:7px 35px; + + img { + position:relative; + top:4px; + } + } &.current { background:#DDD; } @@ -182,7 +195,7 @@ img.lil_av { p { padding-top:5px; margin:0; color:$style_color;} .author { color: #999; } p { - color:$style_color; + color:#222; margin-bottom: 0; img { position:relative; @@ -230,6 +243,27 @@ img.lil_av { .widget { padding:20px; margin-bottom:20px; + background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #fff), to(#f1f1f1)); + background-image: -webkit-linear-gradient(#fff 6.6%, #f1f1f1); + background-image: -moz-linear-gradient(#fff 6.6%, #f1f1f1); + background-image: -o-linear-gradient(#fff 6.6%, #f1f1f1); + border: 1px solid #DDD; + border-radius: 5px; + + .link_holder { + background:#eee; + position:relative; + left:-20px; + top:20px; + padding:10px 20px; + width:100%; + border-top:1px solid #ccc; + + a { + font-size:14px; + color:#666; + } + } } @@ -242,15 +276,20 @@ img.lil_av { margin:0; } - h5 { + h5, .title { padding: 0 10px; background:#f5f5f5; border-bottom: 1px solid #ccc; @include round-borders-top(4px); border-top:none; + + form { + padding-top:16px; + } } - li { + + li, .wll { padding:10px; &:first-child { @include round-borders-top(4px); @@ -266,3 +305,11 @@ img.lil_av { } .help li { color:#111 } + +.back_link { + text-decoration:underline; + font-size:14px; + font-weight:bold; + padding:10px 0; + padding-bottom:0; +} diff --git a/app/assets/stylesheets/tree.scss b/app/assets/stylesheets/tree.scss index b023dd77..6a3428a7 100644 --- a/app/assets/stylesheets/tree.scss +++ b/app/assets/stylesheets/tree.scss @@ -130,14 +130,21 @@ table.highlighttable .linenodiv pre { } } -.breadcrumb a { - color:$style_color; - font-weight:bold; +.breadcrumb { + background:white; + border:none; + + a { + color:$link_color; + font-weight:bold; + font-size:13px; + } } #tree-slider { td { padding:7px; + border-color:#f1f1f1; } th { diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 7a456a0b..02c8246e 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -24,7 +24,9 @@ class MergeRequestsController < ApplicationController @merge_requests = @project.merge_requests @merge_requests = case params[:f].to_i + when 1 then @merge_requests when 2 then @merge_requests.closed + when 2 then @merge_requests.opened.assigned(current_user) else @merge_requests.opened end diff --git a/app/models/commit.rb b/app/models/commit.rb index 0d45c645..281e3f03 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -42,7 +42,7 @@ class Commit end def author_name - author.name + author.name.force_encoding("UTF-8") end def committer_name diff --git a/app/models/user.rb b/app/models/user.rb index fbac0510..b309d2d3 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -65,7 +65,11 @@ class User < ActiveRecord::Base def self.generate_random_password (0...8).map{ ('a'..'z').to_a[rand(26)] }.join - end + end + + def first_name + name.split(" ").first unless name.blank? + end def self.find_for_ldap_auth(omniauth) username = omniauth.sAMAccountName[0] diff --git a/app/views/issues/_show.html.haml b/app/views/issues/_show.html.haml index ef9e1560..a1f48383 100644 --- a/app/views/issues/_show.html.haml +++ b/app/views/issues/_show.html.haml @@ -12,7 +12,7 @@ = image_tag gravatar_icon(issue.assignee_email), :class => "avatar" %span.update-author assigned to - %strong= link_to_issue_assignee(issue) + %strong= issue.assignee_name - if issue.critical %span.label.important critical - if issue.today? diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index b83c4f47..7a8f4873 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -9,30 +9,30 @@ = link_to new_project_issue_path(@project), :class => "right btn small", :title => "New Issue", :remote => true do New Issue %hr - %div#issues-table-holder - .row - .span8 - %ul.pills.left - %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} - = link_to project_issues_path(@project, :f => 0) do - Open - %li{:class => ("active" if params[:f] == "2")} - = link_to project_issues_path(@project, :f => 2) do - Closed - %li{:class => ("active" if params[:f] == "3")} - = link_to project_issues_path(@project, :f => 3) do - To Me - %li{:class => ("active" if params[:f] == "1")} - = link_to project_issues_path(@project, :f => 1) do - All + %div#issues-table-holder.ui-box + .title + .row + .span8 + %ul.pills.left + %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} + = link_to project_issues_path(@project, :f => 0) do + Open + %li{:class => ("active" if params[:f] == "2")} + = link_to project_issues_path(@project, :f => 2) do + Closed + %li{:class => ("active" if params[:f] == "3")} + = link_to project_issues_path(@project, :f => 3) do + To Me + %li{:class => ("active" if params[:f] == "1")} + = link_to project_issues_path(@project, :f => 1) do + All - .span2.right - = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :id => "issue_search_form", :class => :right do - = hidden_field_tag :project_id, @project.id, { :id => 'project_id' } - = hidden_field_tag :status, params[:f] - = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' } + .span3.right + = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :id => "issue_search_form", :class => :right do + = hidden_field_tag :project_id, @project.id, { :id => 'project_id' } + = hidden_field_tag :status, params[:f] + = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' } - %hr %ul#issues-table.unstyled= render "issues" :javascript diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml index abf5fc11..170d6831 100644 --- a/app/views/issues/show.html.haml +++ b/app/views/issues/show.html.haml @@ -14,6 +14,11 @@ = link_to edit_project_issue_path(@project, @issue), :class => "btn small" do Edit +.back_link + = link_to project_issues_path(@project) do + ← To issues list + + %hr - if @issue.closed .alert-message.error Closed diff --git a/app/views/keys/index.html.haml b/app/views/keys/index.html.haml index e6979f5e..002089a0 100644 --- a/app/views/keys/index.html.haml +++ b/app/views/keys/index.html.haml @@ -4,7 +4,7 @@ %hr -%div#keys-table{ :class => "update-data ui-box ui-box-small ui-box-big" } +%div#keys-table %ul.unstyled - @keys.each do |key| = render(:partial => 'show', :locals => {:key => key}) diff --git a/app/views/layouts/_project_menu.html.haml b/app/views/layouts/_project_menu.html.haml index 6d12f30f..c47a1863 100644 --- a/app/views/layouts/_project_menu.html.haml +++ b/app/views/layouts/_project_menu.html.haml @@ -1,5 +1,5 @@ %nav.main_menu - = link_to project_path(@project), :class => project_tab_class do + = link_to project_path(@project), :class => "#{project_tab_class}", :title => "Project" do Project - if @project.repo_exists? diff --git a/app/views/layouts/_projects_side.html.haml b/app/views/layouts/_projects_side.html.haml index 2edd99f5..3b567044 100644 --- a/app/views/layouts/_projects_side.html.haml +++ b/app/views/layouts/_projects_side.html.haml @@ -4,16 +4,16 @@ You can create at least = current_user.projects_limit projects. Click on button to add a new one - %hr - = link_to new_project_path, :class => "btn small" do - New Project » + .link_holder + = link_to new_project_path, :class => "" do + New Project » - if current_user.is_admin? .widget You have administrator privilegies. You can configure application following this button: - %hr - = link_to admin_root_path, :class => "btn small", :title => "Admin" do - Visit Admin Area » + .link_holder + = link_to admin_root_path, :class => "", :title => "Admin" do + Visit Admin Area » - if current_user.projects.count > 0 = render "widgets/recent_projects" diff --git a/app/views/layouts/profile.html.haml b/app/views/layouts/profile.html.haml index 8db7af75..dd7030f4 100644 --- a/app/views/layouts/profile.html.haml +++ b/app/views/layouts/profile.html.haml @@ -10,7 +10,7 @@ = link_to "Password & token", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil = link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil = link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do - Keys + SSH Keys .content .row .span12= yield diff --git a/app/views/merge_requests/_merge_request.html.haml b/app/views/merge_requests/_merge_request.html.haml index 5852c18c..033c8cf7 100644 --- a/app/views/merge_requests/_merge_request.html.haml +++ b/app/views/merge_requests/_merge_request.html.haml @@ -1,7 +1,7 @@ %li.wll = image_tag gravatar_icon(merge_request.author_email), :class => "avatar" %span.update-author - %strong= link_to_merge_request_author(merge_request) + %strong= merge_request.author_name authored = time_ago_in_words(merge_request.created_at) ago diff --git a/app/views/merge_requests/index.html.haml b/app/views/merge_requests/index.html.haml index ea2f2433..3a23d673 100644 --- a/app/views/merge_requests/index.html.haml +++ b/app/views/merge_requests/index.html.haml @@ -6,14 +6,21 @@ %hr -%ul.pills - %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} - = link_to project_merge_requests_path(@project, :f => 0) do - Open - %li{:class => ("active" if params[:f] == "2")} - = link_to project_merge_requests_path(@project, :f => 2) do - Closed +.ui-box + .title + %ul.pills + %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} + = link_to project_merge_requests_path(@project, :f => 0) do + Open + %li{:class => ("active" if params[:f] == "2")} + = link_to project_merge_requests_path(@project, :f => 2) do + Closed + %li{:class => ("active" if params[:f] == "3")} + = link_to project_merge_requests_path(@project, :f => 3) do + To Me + %li{:class => ("active" if params[:f] == "1")} + = link_to project_merge_requests_path(@project, :f => 1) do + All -%hr -%ul.unstyled= render @merge_requests + %ul.unstyled= render @merge_requests diff --git a/app/views/merge_requests/show.html.haml b/app/views/merge_requests/show.html.haml index 132f2063..b270175d 100644 --- a/app/views/merge_requests/show.html.haml +++ b/app/views/merge_requests/show.html.haml @@ -19,6 +19,9 @@ = link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small" do Edit +.back_link + = link_to project_merge_requests_path(@project) do + ← To merge requests %hr - if @merge_request.closed .alert-message.error Closed diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 7886daec..91828006 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -1,6 +1,11 @@ = render "project_head" %h3 = @project.name + - if can? current_user, :download_code, @project + = link_to "Download", archive_project_repository_path(@project), :class => "btn small right" +.back_link + = link_to projects_path do + ← To projects list %hr .alert-message.block-message.warning .input @@ -10,7 +15,8 @@ = simple_format @project.description -%h5.cgray Recent Activity -.content_list= render "feed" +.ui-box + %h5.cgray Recent Activity + .content_list= render "feed" diff --git a/app/views/repositories/show.html.haml b/app/views/repositories/show.html.haml index 6f71ae7c..e73db6f0 100644 --- a/app/views/repositories/show.html.haml +++ b/app/views/repositories/show.html.haml @@ -6,6 +6,16 @@ %hr +.entry + %p + Last commit was + %small + %code= @activities.first.commit.id.to_s[0..10] + + = time_ago_in_words(@activities.first.commit.committed_date) + ago to + = link_to project_commits_path(@project, :ref => @activities.first.head.name), :class => "visible_link" do + %span.label= @activities.first.head.name .alert-message.block-message.warning .input .input-prepend @@ -13,20 +23,12 @@ = text_field_tag :project_clone, @project.url_to_repo, :class => "xlarge one_click_select git_clone_url" -%p - Last commit was - %small - %code= @activities.first.commit.id.to_s[0..10] - = time_ago_in_words(@activities.first.commit.committed_date) - ago to - = link_to project_commits_path(@project, :ref => @activities.first.head.name), :class => "visible_link" do - %span.label= @activities.first.head.name +.ui-box + %h5.cgray + Recent Branches -%h4.cgray - Recent Branches - -%ul.unstyled - - @activities.each do |update| - = render "repositories/feed", :update => update, :project => @project + %ul.unstyled + - @activities.each do |update| + = render "repositories/feed", :update => update, :project => @project diff --git a/app/views/team_members/show.html.haml b/app/views/team_members/show.html.haml index 57f00ea1..fcf2db9b 100644 --- a/app/views/team_members/show.html.haml +++ b/app/views/team_members/show.html.haml @@ -1,14 +1,18 @@ - allow_admin = can? current_user, :admin_project, @project - user = @team_member.user -%div - = link_to team_project_path(@project), :class => "btn right" do - Team » +.media-grid + = link_to "#" do + = image_tag gravatar_icon(user.email, 60), :class => "thumbnail", :width => 60 + %h3.media_h + = user.name + %br + %small= user.email - .media-grid - = link_to "#" do - = image_tag gravatar_icon(user.email, 90), :class => "thumbnail" - %h3.media_h= user.name +.back_link + = link_to team_project_path(@project), :class => "" do + ← To team list +%hr %table.no-borders %tr %td Name @@ -23,7 +27,10 @@ %td= @team_member.created_at.stamp("Aug 21, 2011") %tr - %td Project Access + %td + Project Access + (#{link_to "read more", help_permissions_path, :class => "vlink"}) + %td = form_for(@team_member, :as => :team_member, :url => project_team_member_path(@project, @team_member)) do |f| = f.select :project_access, options_for_select(Project.access_options, @team_member.project_access), {}, :class => "project-access-select", :disabled => !allow_admin diff --git a/app/views/widgets/_project_member.html.haml b/app/views/widgets/_project_member.html.haml index ac217b37..911af951 100644 --- a/app/views/widgets/_project_member.html.haml +++ b/app/views/widgets/_project_member.html.haml @@ -3,20 +3,31 @@ .media-grid %li = link_to project_team_member_path(@project, member), :title => current_user.name do - = image_tag gravatar_icon(current_user.email, 90), :class => "thumbnail" - .row - .span4 - %h4 - = truncate(current_user.name, :lenght => 24) - - if @project.owner == current_user - %span.label Project Owner + = image_tag gravatar_icon(current_user.email, 60), :class => "thumbnail", :width => 60 + %h4 + Hi, + = truncate current_user.first_name, :lenght => 24 + ! + %p + - if @project.issues_enabled + Assigned issues: + = current_user.assigned_issues.count + %br + - if @project.merge_requests_enabled + Assigned merge request: + = current_user.assigned_merge_requests.count + %br + Your merge requests: + = current_user.assigned_merge_requests.count + .link_holder + = link_to project_team_member_path(@project, member), :title => current_user.name do + = "Access: #{member.project_access_human} »" - .span3 - %span.label= member.project_access_human - - if can? current_user, :write_project, @project + +-#- if can? current_user, :write_project, @project + .widget - if @project.issues_enabled && @project.merge_requests_enabled - %hr .span3 %p You have access to create new issue or merge request. %div diff --git a/app/views/widgets/_recent_projects.html.haml b/app/views/widgets/_recent_projects.html.haml index 394aa1ad..7f1028bc 100644 --- a/app/views/widgets/_recent_projects.html.haml +++ b/app/views/widgets/_recent_projects.html.haml @@ -7,4 +7,5 @@ %li = link_to project_path(project) do = project.name - = link_to "More » ", projects_path + .link_holder + = link_to "Projects » ", projects_path diff --git a/spec/requests/snippets_spec.rb b/spec/requests/snippets_spec.rb index 95aa030f..9b9bb0e9 100644 --- a/spec/requests/snippets_spec.rb +++ b/spec/requests/snippets_spec.rb @@ -21,7 +21,6 @@ describe "Snippets" do it { should have_content(@snippet.title[0..10]) } it { should have_content(@snippet.project.name) } - it { should have_content(@snippet.author.name) } describe "Destroy" do before do