Commit 29b5aa2c76924ad9d307bd932bfd4e5674781dcd
1 parent
7f6e41fa
Exists in
master
and in
4 other branches
Bootstrap: Issues restyled
Showing
14 changed files
with
145 additions
and
123 deletions
Show diff stats
app/assets/javascripts/issues.js
| 1 | 1 | function switchToNewIssue(form){ |
| 2 | - $("#issues-table").hide("slide", { direction: "left" }, 150, function(){ | |
| 3 | - $("#issues-table").after(form); | |
| 2 | + $(".issues_content").hide("fade", { direction: "left" }, 150, function(){ | |
| 3 | + $(".issues_content").after(form); | |
| 4 | 4 | $('select#issue_assignee_id').chosen(); |
| 5 | - $("#new_issue_dialog").show("slide", { direction: "right" }, 150); | |
| 5 | + $("#new_issue_dialog").show("fade", { direction: "right" }, 150); | |
| 6 | 6 | $('.top-tabs .add_new').hide(); |
| 7 | 7 | }); |
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | function switchToEditIssue(form){ |
| 11 | - $("#issues-table").hide("slide", { direction: "left" }, 150, function(){ | |
| 12 | - $("#issues-table").after(form); | |
| 11 | + $(".issues_content").hide("fade", { direction: "left" }, 150, function(){ | |
| 12 | + $(".issues_content").after(form); | |
| 13 | 13 | $('select#issue_assignee_id').chosen(); |
| 14 | - $("#edit_issue_dialog").show("slide", { direction: "right" }, 150); | |
| 14 | + $("#edit_issue_dialog").show("fade", { direction: "right" }, 150); | |
| 15 | 15 | $('.add_new').hide(); |
| 16 | 16 | }); |
| 17 | 17 | } |
| ... | ... | @@ -25,8 +25,8 @@ function switchFromEditIssue(){ |
| 25 | 25 | } |
| 26 | 26 | |
| 27 | 27 | function backToIssues(){ |
| 28 | - $("#edit_issue_dialog, #new_issue_dialog").hide("slide", { direction: "right" }, 150, function(){ | |
| 29 | - $("#issues-table").show("slide", { direction: "left" }, 150, function() { | |
| 28 | + $("#edit_issue_dialog, #new_issue_dialog").hide("fade", { direction: "right" }, 150, function(){ | |
| 29 | + $(".issues_content").show("fade", { direction: "left" }, 150, function() { | |
| 30 | 30 | $("#edit_issue_dialog").remove(); |
| 31 | 31 | $("#new_issue_dialog").remove(); |
| 32 | 32 | $('.add_new').show(); | ... | ... |
app/assets/stylesheets/common.scss
app/assets/stylesheets/issues.css.scss
app/assets/stylesheets/top_panel.scss
| 1 | 1 | .main_links { |
| 2 | - width:130px; | |
| 2 | + width:155px; | |
| 3 | 3 | float:left; |
| 4 | 4 | |
| 5 | 5 | a { |
| ... | ... | @@ -68,10 +68,7 @@ body header { |
| 68 | 68 | min-width:$min_app_width; |
| 69 | 69 | max-width:$max_app_width; |
| 70 | 70 | position:relative; |
| 71 | - | |
| 72 | - .top_panel_content { | |
| 73 | - padding:10px $app_padding; | |
| 74 | - } | |
| 71 | + padding:10px $app_padding; | |
| 75 | 72 | } |
| 76 | 73 | |
| 77 | 74 | .project_name { | ... | ... |
app/controllers/application_controller.rb
app/controllers/refs_controller.rb
app/views/issues/_form.html.haml
| 1 | 1 | %div.issue-form-holder |
| 2 | 2 | = form_for [@project, @issue], :remote => request.xhr? do |f| |
| 3 | - %div | |
| 4 | - %span.entity-info | |
| 5 | - - if request.xhr? | |
| 6 | - = link_to "#back", :onclick => "backToIssues();" do | |
| 7 | - .entity-button | |
| 8 | - Issues | |
| 9 | - %i | |
| 10 | - - else | |
| 11 | - - if @issue.new_record? | |
| 12 | - = link_to project_issues_path(@project) do | |
| 13 | - .entity-button | |
| 14 | - Issues | |
| 15 | - %i | |
| 16 | - - else | |
| 17 | - = link_to project_issue_path(@project, @issue) do | |
| 18 | - .entity-button | |
| 19 | - Show Issue | |
| 20 | - %i | |
| 21 | - | |
| 22 | - %h2= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}" | |
| 23 | - %hr | |
| 3 | + %h3= @issue.new_record? ? "New Issue" : "Edit Issue ##{@issue.id}" | |
| 4 | + %hr | |
| 24 | 5 | -if @issue.errors.any? |
| 25 | - %ul.errors_holder | |
| 26 | - - @issue.errors.full_messages.each do |msg| | |
| 27 | - %li= msg | |
| 6 | + .alert-message.block-message.error | |
| 7 | + %ul | |
| 8 | + - @issue.errors.full_messages.each do |msg| | |
| 9 | + %li= msg | |
| 28 | 10 | |
| 29 | - %table.no-borders | |
| 30 | - %tr | |
| 31 | - %td= f.label :assignee_id | |
| 32 | - %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }) | |
| 11 | + .clearfix | |
| 12 | + = f.label :assignee_id | |
| 13 | + .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }) | |
| 33 | 14 | |
| 34 | - %tr | |
| 35 | - %td= f.label :critical, "Critical" | |
| 36 | - %td= f.check_box :critical | |
| 37 | - | |
| 38 | - - unless @issue.new_record? | |
| 39 | - %tr | |
| 40 | - %td= f.label :closed | |
| 41 | - %td= f.check_box :closed | |
| 15 | + .clearfix | |
| 16 | + = f.label :critical, "Critical" | |
| 17 | + .input= f.check_box :critical | |
| 42 | 18 | |
| 43 | - = f.text_area :title, :style => "width:718px; height:100px", :maxlength => 255 | |
| 44 | - %br | |
| 45 | - %br | |
| 46 | - .merge-tabs | |
| 19 | + - unless @issue.new_record? | |
| 20 | + .clearfix | |
| 21 | + = f.label :closed | |
| 22 | + .input= f.check_box :closed | |
| 23 | + | |
| 24 | + .clearfix | |
| 25 | + = f.label :title | |
| 26 | + .input= f.text_area :title, :maxlength => 255, :class => "xlarge" | |
| 27 | + .clearfix | |
| 47 | 28 | = f.submit 'Save', :class => "primary btn" |
| 48 | - | |
| 49 | - - unless @issue.new_record? | |
| 29 | + | |
| 30 | + - if request.xhr? | |
| 31 | + = link_to "Cancel", "#back", :onclick => "backToIssues();", :class => "btn" | |
| 32 | + - else | |
| 33 | + - if @issue.new_record? | |
| 34 | + = link_to "Cancel", project_issues_path(@project), :class => "btn" | |
| 35 | + - else | |
| 36 | + = link_to "Cancel", project_issue_path(@project, @issue), :class => "btn" | |
| 37 | + | |
| 38 | + | |
| 39 | + -#- unless @issue.new_record? | |
| 50 | 40 | .right |
| 51 | 41 | = link_to 'Remove', [@project, @issue], :confirm => 'Are you sure?', :method => :delete, :class => "red-button" | ... | ... |
app/views/issues/_head.html.haml
| ... | ... | @@ -2,14 +2,3 @@ |
| 2 | 2 | %li{:class => "#{'active' if current_page?(project_issues_path(@project))}"} |
| 3 | 3 | = link_to project_issues_path(@project), :class => "tab" do |
| 4 | 4 | Issues |
| 5 | - | |
| 6 | - -#= link_to project_issues_path(@project), :class => "tab" do | |
| 7 | - %span | |
| 8 | - Milestones | |
| 9 | - | |
| 10 | - - if current_page?(project_issues_path(@project)) | |
| 11 | - - if can? current_user, :write_issue, @project | |
| 12 | - %li | |
| 13 | - = link_to new_project_issue_path(@project), :class => "add_new", :title => "New Issue", :remote => true do | |
| 14 | - Add new | |
| 15 | - | ... | ... |
app/views/issues/_show.html.haml
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | %td |
| 3 | 3 | = image_tag gravatar_icon(issue.assignee_email), :class => "left", :width => 40, :style => "padding-right:5px;" |
| 4 | 4 | %span |
| 5 | - = truncate(html_escape(issue.title), :length => 100) | |
| 5 | + = truncate(html_escape(issue.title), :length => 50) | |
| 6 | 6 | %div.note-author |
| 7 | 7 | %strong= issue.assignee.name |
| 8 | 8 | %cite.cgray |
| ... | ... | @@ -15,10 +15,10 @@ |
| 15 | 15 | .right.action-links |
| 16 | 16 | - if can? current_user, :write_issue, issue |
| 17 | 17 | - if issue.closed |
| 18 | - = link_to 'Reopen', project_issue_path(issue.project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "cgray", :remote => true | |
| 18 | + = link_to 'Reopen', project_issue_path(issue.project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "btn small", :remote => true | |
| 19 | 19 | - else |
| 20 | - = link_to 'Resolve', project_issue_path(issue.project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "cgray", :remote => true | |
| 20 | + = link_to 'Resolve', project_issue_path(issue.project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "success btn small", :remote => true | |
| 21 | 21 | - if can? current_user, :write_issue, issue |
| 22 | - = link_to 'Edit', edit_project_issue_path(issue.project, issue), :class => "cgray edit-issue-link", :remote => true | |
| 22 | + = link_to 'Edit', edit_project_issue_path(issue.project, issue), :class => "btn small edit-issue-link", :remote => true | |
| 23 | 23 | - if can?(current_user, :admin_issue, @project) || issue.author == current_user |
| 24 | - = link_to 'Remove', [issue.project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "cred delete-issue negative", :id => "destroy_issue_#{issue.id}" | |
| 24 | + = link_to 'Remove', [issue.project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "danger btn small delete-issue", :id => "destroy_issue_#{issue.id}" | ... | ... |
app/views/issues/index.html.haml
| 1 | -= render "issues/head" | |
| 1 | +- if can? current_user, :write_issue, @project | |
| 2 | + = content_for :sidebar_top_block do | |
| 3 | + - if current_user.can_create_project? | |
| 4 | + .alert-message.block-message.error | |
| 5 | + You are able to create an issue. Click on button to add a new one | |
| 6 | + = link_to new_project_issue_path(@project), :class => "btn small", :title => "New Issue", :remote => true do | |
| 7 | + New Issue | |
| 8 | + | |
| 2 | 9 | - if current_user.private_token |
| 3 | 10 | = content_for :rss_icon do |
| 4 | 11 | .rss-icon |
| 5 | 12 | = link_to project_issues_path(@project, :atom, { :private_token => current_user.private_token }) do |
| 6 | 13 | = image_tag "Rss-UI.PNG", :width => 22, :title => "feed" |
| 7 | 14 | |
| 8 | -%div#issues-table-holder | |
| 9 | - .well | |
| 10 | - = form_tag project_issues_path(@project), :method => :get, :class => :left do | |
| 11 | - = label_tag "open_issues" do | |
| 12 | - = radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "setIssueFilter(this.form, 0)", :id => "open_issues", :class => "status" | |
| 13 | - %span.tag.open Open | |
| 14 | - = label_tag "closed_issues" do | |
| 15 | - = radio_button_tag :f, 2, params[:f] == "2", :onclick => "setIssueFilter(this.form, 2)", :id => "closed_issues", :class => "status" | |
| 16 | - %span.tag.closed Closed | |
| 17 | - = label_tag "my_issues" do | |
| 18 | - = radio_button_tag :f, 3, params[:f] == "3", :onclick => "setIssueFilter(this.form, 3)", :id => "my_issues", :class => "status" | |
| 19 | - %span To Me | |
| 20 | - = label_tag "all_issues" do | |
| 21 | - = radio_button_tag :f, 1, params[:f] == "1", :onclick => "setIssueFilter(this.form, 1)", :id => "all_issues", :class => "status" | |
| 22 | - %span All | |
| 15 | + | |
| 16 | +.issues_content | |
| 17 | + %h3 Issues | |
| 18 | + %hr | |
| 19 | + %div#issues-table-holder | |
| 20 | + %ul.pills.left | |
| 21 | + %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} | |
| 22 | + = link_to project_issues_path(@project, :f => 0) do | |
| 23 | + Open | |
| 24 | + %li{:class => ("active" if params[:f] == "2")} | |
| 25 | + = link_to project_issues_path(@project, :f => 2) do | |
| 26 | + Closed | |
| 27 | + %li{:class => ("active" if params[:f] == "3")} | |
| 28 | + = link_to project_issues_path(@project, :f => 3) do | |
| 29 | + To Me | |
| 30 | + %li{:class => ("active" if params[:f] == "1")} | |
| 31 | + = link_to project_issues_path(@project, :f => 1) do | |
| 32 | + All | |
| 33 | + | |
| 23 | 34 | = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :id => "issue_search_form", :class => :right do |
| 24 | 35 | = hidden_field_tag :project_id, @project.id, { :id => 'project_id' } |
| 25 | 36 | = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' } |
| 26 | 37 | |
| 27 | - %table#issues-table | |
| 28 | - = render "issues" | |
| 29 | - %br | |
| 38 | + %table#issues-table= render "issues" | |
| 39 | + | |
| 30 | 40 | :javascript |
| 31 | 41 | var href = $('.issue_search').parent().attr('action'); |
| 32 | 42 | var last_terms = ''; |
| 33 | 43 | |
| 34 | - var setIssueFilter = function(form, value){ | |
| 35 | - $.cookie('issue_filter', value, { expires: 140 }); | |
| 36 | - form.submit(); | |
| 37 | - } | |
| 38 | - | |
| 39 | 44 | $('.issue_search').keyup(function() { |
| 40 | 45 | var terms = $(this).val(); |
| 41 | 46 | var project_id = $('#project_id').val(); | ... | ... |
| ... | ... | @@ -0,0 +1,38 @@ |
| 1 | +%aside.project-right | |
| 2 | + - if content_for? :sidebar_top_block | |
| 3 | + = yield :sidebar_top_block | |
| 4 | + - else | |
| 5 | + - if current_user.can_create_project? | |
| 6 | + .alert-message.block-message.info | |
| 7 | + You can create at least | |
| 8 | + = current_user.projects_limit | |
| 9 | + projects. Click on button to add a new one | |
| 10 | + = link_to new_project_path, :class => "btn small" do | |
| 11 | + New Project | |
| 12 | + | |
| 13 | + %h4 | |
| 14 | + Recent Projects: | |
| 15 | + %ul | |
| 16 | + - current_user.projects.order("id DESC").limit(5).each do |project| | |
| 17 | + %li | |
| 18 | + = link_to project_path(project) do | |
| 19 | + = project.name | |
| 20 | + | |
| 21 | + %h4 | |
| 22 | + Recent Issues: | |
| 23 | + %ul | |
| 24 | + - current_user.assigned_issues.order("id DESC").limit(5).each do |issue| | |
| 25 | + %li | |
| 26 | + = link_to project_issue_path(issue.project, issue) do | |
| 27 | + = truncate issue.title | |
| 28 | + | |
| 29 | + | |
| 30 | + %h4 | |
| 31 | + Recent Requests: | |
| 32 | + %ul | |
| 33 | + - current_user.assigned_merge_requests.order("id DESC").limit(5).each do |issue| | |
| 34 | + %li | |
| 35 | + = link_to project_merge_request_path(issue.project, issue) do | |
| 36 | + = truncate issue.title | |
| 37 | + | |
| 38 | + | ... | ... |
app/views/layouts/project.html.haml
| ... | ... | @@ -18,4 +18,11 @@ |
| 18 | 18 | = render :partial => "layouts/head_panel" |
| 19 | 19 | .container-fluid |
| 20 | 20 | .sidebar= render :partial => "layouts/project_side" |
| 21 | - .content= yield | |
| 21 | + .content | |
| 22 | + - if @full_content | |
| 23 | + = yield | |
| 24 | + - else | |
| 25 | + .row | |
| 26 | + .span10= yield | |
| 27 | + .span4= render "layouts/project_side_right" | |
| 28 | + | ... | ... |
app/views/notes/_form.html.haml
| ... | ... | @@ -10,7 +10,7 @@ |
| 10 | 10 | = f.text_area :note, :size => 255 |
| 11 | 11 | |
| 12 | 12 | .row |
| 13 | - .span6 | |
| 13 | + .span4 | |
| 14 | 14 | %h5 Notify via email: |
| 15 | 15 | .clearfix |
| 16 | 16 | = label_tag :notify do |
| ... | ... | @@ -21,7 +21,7 @@ |
| 21 | 21 | = label_tag :notify_author do |
| 22 | 22 | = check_box_tag :notify_author, 1 , @note.noteable_type == "Commit" |
| 23 | 23 | %span Commit author |
| 24 | - .span6 | |
| 24 | + .span4.right | |
| 25 | 25 | %h5 Attachment: |
| 26 | 26 | .clearfix |
| 27 | 27 | = f.label :attachment, "Any file, < 10 MB" | ... | ... |
app/views/projects/_feed.html.haml
| 1 | 1 | - if update.kind_of?(Note) |
| 2 | 2 | %a.project-update.titled{:href => dashboard_feed_path(project, update)} |
| 3 | - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 | |
| 4 | - %span.update-title | |
| 3 | + = image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32 | |
| 4 | + %div | |
| 5 | 5 | = dashboard_feed_title(update) |
| 6 | 6 | %span.update-author |
| 7 | 7 | %strong= update.author_name |
| ... | ... | @@ -10,7 +10,7 @@ |
| 10 | 10 | - noteable = update.target |
| 11 | 11 | - if noteable.kind_of?(MergeRequest) |
| 12 | 12 | .title-block |
| 13 | - %span.update-title | |
| 13 | + %div | |
| 14 | 14 | %span.commit.tag |
| 15 | 15 | Merge Request # |
| 16 | 16 | = noteable.id |
| ... | ... | @@ -21,7 +21,7 @@ |
| 21 | 21 | |
| 22 | 22 | - elsif noteable.kind_of?(Issue) |
| 23 | 23 | .title-block |
| 24 | - %span.update-title | |
| 24 | + %div | |
| 25 | 25 | %span.commit.tag |
| 26 | 26 | Issue # |
| 27 | 27 | = noteable.id |
| ... | ... | @@ -30,29 +30,29 @@ |
| 30 | 30 | |
| 31 | 31 | - elsif noteable.kind_of?(Commit) |
| 32 | 32 | .title-block |
| 33 | - %span.update-title | |
| 33 | + %div | |
| 34 | 34 | %span.commit.tag |
| 35 | 35 | commit |
| 36 | 36 | %span.update-author |
| 37 | 37 | .left= truncate noteable.id |
| 38 | 38 | - else |
| 39 | 39 | .title-block |
| 40 | - %span.update-title | |
| 40 | + %div | |
| 41 | 41 | %span.commit.tag |
| 42 | 42 | Project Wall |
| 43 | 43 | |
| 44 | 44 | |
| 45 | 45 | - elsif update.kind_of?(MergeRequest) |
| 46 | 46 | %a.project-update.titled{:href => project_merge_request_path(project, update)} |
| 47 | - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 | |
| 48 | - %span.update-title | |
| 47 | + = image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32 | |
| 48 | + %div | |
| 49 | 49 | Opened merge request |
| 50 | 50 | %span.update-author |
| 51 | 51 | %strong= update.author_name |
| 52 | 52 | = time_ago_in_words(update.created_at) |
| 53 | 53 | ago |
| 54 | 54 | .title-block |
| 55 | - %span.update-title | |
| 55 | + %div | |
| 56 | 56 | %span.commit.tag |
| 57 | 57 | Merge Request # |
| 58 | 58 | = update.id |
| ... | ... | @@ -63,15 +63,15 @@ |
| 63 | 63 | |
| 64 | 64 | - elsif update.kind_of?(Issue) |
| 65 | 65 | %a.project-update.titled{:href => dashboard_feed_path(project, update)} |
| 66 | - = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 | |
| 67 | - %span.update-title | |
| 66 | + = image_tag gravatar_icon(update.author_email), :class => "avatar", :width => 32 | |
| 67 | + %div | |
| 68 | 68 | Created new Issue |
| 69 | 69 | %span.update-author |
| 70 | 70 | %strong= update.author_name |
| 71 | 71 | = time_ago_in_words(update.created_at) |
| 72 | 72 | ago |
| 73 | 73 | .title-block |
| 74 | - %span.update-title | |
| 74 | + %div | |
| 75 | 75 | %span.commit.tag |
| 76 | 76 | Issue # |
| 77 | 77 | = update.id | ... | ... |