diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss index 33d70e30..6916d65c 100644 --- a/app/assets/stylesheets/projects.css.scss +++ b/app/assets/stylesheets/projects.css.scss @@ -561,6 +561,7 @@ h4.middle-panel { display:none; } + .merge-tabs { margin: 0; border: 1px solid #ccc; @@ -572,11 +573,10 @@ h4.middle-panel { .tab { font-weight: bold; - text-transform: uppercase; border-right: 1px solid #ddd; background:none; padding: 10px; - width:60px; + min-width:60px; float:left; position:relative; top:-5px; @@ -598,6 +598,11 @@ h4.middle-panel { } } } +.activities-tab span { background: url("images.png") no-repeat -161px -1px; } +.stat-tab span, +.team-tab span, +.snippets-tab span { background: url("images.png") no-repeat -38px -77px; } +.files-tab span { background: url("images.png") no-repeat -112px -23px; } .merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; } .merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; } diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 4b4f748f..1e859cea 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -57,7 +57,7 @@ class ProjectsController < ApplicationController def update respond_to do |format| if project.update_attributes(params[:project]) - format.html { redirect_to project, :notice => 'Project was successfully updated.' } + format.html { redirect_to info_project_path(project), :notice => 'Project was successfully updated.' } format.js else format.html { render action: "edit" } @@ -72,6 +72,13 @@ class ProjectsController < ApplicationController @activities = @project.cached_updates(limit) end + def files + @notes = @project.notes.where("attachment != 'NULL'").order("created_at DESC").limit(100) + end + + def info + end + # # Wall # diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 5acda509..cc1d69d4 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -16,12 +16,21 @@ module ProjectsHelper nil end - # expires in 360 days - def switch_colorscheme_link(opts) - if cookies[:colorschema].blank? - link_to_function "paint it black!", "$.cookie('colorschema','black', {expires:360}); window.location.reload()", opts - else - link_to_function "paint it white!", "$.cookie('colorschema','', {expires:360}); window.location.reload()", opts + def project_tab_class + [:show, :files, :team, :edit, :update, :info].each do |action| + return "current" if current_page?(:controller => "projects", :action => action, :id => @project) + end + + if controller.controller_name == "snippets" || + controller.controller_name == "team_members" + "current" end end + + def tree_tab_class + current_page?(:controller => "refs", + :action => "tree", + :project_id => @project, + :id => @ref || @project.root_ref ) ? "current" : nil + end end diff --git a/app/views/layouts/project.html.haml b/app/views/layouts/project.html.haml index 5de97b52..1c9b5884 100644 --- a/app/views/layouts/project.html.haml +++ b/app/views/layouts/project.html.haml @@ -23,14 +23,10 @@ .project-sidebar .fixed %aside - = link_to "Activities", project_path(@project), :class => current_page?(:controller => "projects", :action => "show", :id => @project) ? "current" : nil - = link_to "Tree", tree_project_ref_path(@project, @project.root_ref), :class => current_page?(:controller => "refs", :action => "tree", :project_id => @project, :id => @ref || @project.root_ref ) ? "current" : nil + = link_to "Project", project_path(@project), :class => project_tab_class + = link_to "Tree", tree_project_ref_path(@project, @project.root_ref), :class => tree_tab_class = link_to "Commits", project_commits_path(@project), :class => current_page?(:controller => "commits", :action => "index", :project_id => @project) ? "current" : nil = link_to "Network graph", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil - = link_to team_project_path(@project), :class => (current_page?(:controller => "projects", :action => "team", :id => @project) || controller.controller_name == "team_members") ? "current" : nil do - Team - - if @project.users_projects.count > 0 - %span{ :class => "number" }= @project.users_projects.count = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do Issues - if @project.issues.open_for(current_user).count > 0 @@ -43,13 +39,7 @@ Merge Requests - if @project.merge_requests.opened.count > 0 %span{ :class => "number" }= @project.merge_requests.opened.count - = link_to project_snippets_path(@project), :class => (controller.controller_name == "snippets") ? "current" : nil do - Snippets - - if @project.snippets.non_expired.count > 0 - %span{ :class => "number" }= @project.snippets.non_expired.count - - if can? current_user, :admin_project, @project - = link_to "Admin", edit_project_path(@project), :class => (current_page?(edit_project_path(@project))) ? "current" : nil .medium-tags{:style => 'padding: 10px 0 0 10px; width: 210px;'}= tag_list @project diff --git a/app/views/projects/_project_head.html.haml b/app/views/projects/_project_head.html.haml new file mode 100644 index 00000000..0a9e3094 --- /dev/null +++ b/app/views/projects/_project_head.html.haml @@ -0,0 +1,18 @@ +.merge-tabs + = link_to project_path(@project), :class => "activities-tab tab #{'active' if current_page?(project_path(@project)) }" do + %span + Activities + = link_to info_project_path(@project), :class => "stat-tab tab #{'active' if current_page?(info_project_path(@project)) || current_page?(edit_project_path(@project)) }" do + %span + Info + = link_to team_project_path(@project), :class => "team-tab tab #{'active' if current_page?(team_project_path(@project)) }" do + %span + Team + = link_to files_project_path(@project), :class => "files-tab tab #{'active' if current_page?(files_project_path(@project)) }" do + %span + Files + = link_to project_snippets_path(@project), :class => "snippets-tab tab #{'active' if current_page?(project_snippets_path(@project)) }" do + %span + Snippets + + diff --git a/app/views/projects/_team.html.haml b/app/views/projects/_team.html.haml index 7c647e33..6cda3b9b 100644 --- a/app/views/projects/_team.html.haml +++ b/app/views/projects/_team.html.haml @@ -1,9 +1,7 @@ -%h2.icon - %span> - Team - if can? current_user, :admin_team_member, @project %div#new-member-holder .right= link_to "Add new", new_project_team_member_path(@project), :remote => true, :class => "grey-button" + .clear %br %table.round-borders#team-table %thead diff --git a/app/views/projects/edit.html.erb b/app/views/projects/edit.html.erb deleted file mode 100644 index 2d343636..00000000 --- a/app/views/projects/edit.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= render 'form' %> diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml new file mode 100644 index 00000000..69e0f218 --- /dev/null +++ b/app/views/projects/edit.html.haml @@ -0,0 +1,69 @@ += render "project_head" + += form_for(@project, :remote => true) do |f| + %div + %span.entity-info + = link_to info_project_path(@project) do + .entity-button + Info + %i + %h2= @project.name + %hr + %table.no-borders + -if @project.errors.any? + %tr + %td{:colspan => 2} + #error_explanation + - @project.errors.full_messages.each do |msg| + %span= msg + %br + + %tr + %td= f.label :name + %td= f.text_field :name, :placeholder => "Example Project" + %tr + %td + .left= f.label :path + %cite.right= "git@#{GIT_HOST["host"]}:" + %td + = f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record? + %tr + %td + .left= f.label :code + %cite.right= "http://#{GIT_HOST["host"]}/" + %td= f.text_field :code, :placeholder => "example" + + - unless @project.new_record? || @project.heads.empty? + %tr + %td= f.label :default_branch, "Default Branch" + %td= f.select(:default_branch, @project.heads.map(&:name), {}, :style => "width:300px;") + + %tr + %td= f.label :description + %td= f.text_area :description, :placeholder => "project description", :style => "height:50px" + + %br + + .merge-tabs + = f.submit 'Save', :class => "grey-button" +   + - unless @project.new_record? + .right + = link_to 'Remove', @project, :confirm => 'Are you sure?', :method => :delete, :class => "red-button" + +%div{ :class => "ajax_loader", :style => "display:none;height:200px;"} + %center + = image_tag "ajax-loader.gif", :class => "append-bottom" + %h3.prepend-top Updating project & repository. Please wait for few minutes + +:javascript + $('.edit_project').bind('ajax:before', function() { + $(".edit_project").hide(); + $('.ajax_loader').show(); + }); + +:javascript + $(function(){ + $('#project_default_branch').chosen(); + }) + diff --git a/app/views/projects/files.html.haml b/app/views/projects/files.html.haml new file mode 100644 index 00000000..0d1ba8e8 --- /dev/null +++ b/app/views/projects/files.html.haml @@ -0,0 +1,17 @@ += render "project_head" +- unless @notes.empty? + %div.update-data.ui-box.ui-box-small + .data + - @notes.each do |note| + %a.update-item{:href => note.attachment.url} + = image_tag gravatar_icon(note.author_email), :class => "left", :width => 16 + %span.update-title{:style => "margin-bottom:0px;"} + = note.attachment_identifier + %span.update-author.right + Added + = time_ago_in_words(note.created_at) + ago +- else + %h3 All files attached to project wall, issues etc will be displayed here + + diff --git a/app/views/projects/info.html.haml b/app/views/projects/info.html.haml new file mode 100644 index 00000000..787ad06d --- /dev/null +++ b/app/views/projects/info.html.haml @@ -0,0 +1,28 @@ += render "project_head" + +%div + %span.entity-info + = link_to edit_project_path(@project) do + .entity-button + Edit + %i + %h2= @project.name + %hr + +%table.no-borders + %tr + %td Name + %td= @project.name + + %tr + %td Slug + %td= @project.code + + %tr + %td Created + %td= @project.created_at.stamp("Aug 21, 2011") + + %tr + %td{:colspan => 2}= simple_format @project.description + + diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 0530736f..bbc31a59 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -1,9 +1,7 @@ - content_for(:body_class, "project-page dashboard") += render "project_head" #news-feed.news-feed - %h2.icon - %span> - Activities .project-box.project-updates.ui-box.ui-box-small.ui-box-big - @activities.each do |update| = render "projects/feed", :update => update, :project => @project diff --git a/app/views/projects/team.html.haml b/app/views/projects/team.html.haml index 3b2c4b3e..41afc451 100644 --- a/app/views/projects/team.html.haml +++ b/app/views/projects/team.html.haml @@ -1,3 +1,4 @@ += render "project_head" %div = render :partial => "team", :locals => {:project => @project} diff --git a/app/views/projects/update.js.haml b/app/views/projects/update.js.haml index 0188f083..70d8490e 100644 --- a/app/views/projects/update.js.haml +++ b/app/views/projects/update.js.haml @@ -1,6 +1,6 @@ - if @project.valid? :plain - location.href = "#{project_path(@project, :notice => 'Project was successfully updated.')}"; + location.href = "#{info_project_path(@project, :notice => 'Project was successfully updated.')}"; - else :plain $(".edit_project").replaceWith("#{escape_javascript(render('form'))}"); diff --git a/app/views/snippets/index.html.haml b/app/views/snippets/index.html.haml index f08a3d1d..9af12f74 100644 --- a/app/views/snippets/index.html.haml +++ b/app/views/snippets/index.html.haml @@ -1,6 +1,4 @@ -%h2.icon - %span> - Snippets += render "projects/project_head" - if can? current_user, :write_snippet, @project .right= link_to 'New Snippet', new_project_snippet_path(@project), :class => "grey-button append-bottom-10" diff --git a/config/routes.rb b/config/routes.rb index bf9fe954..58880966 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -42,6 +42,8 @@ Gitlab::Application.routes.draw do get "team" get "wall" get "graph" + get "info" + get "files" end resources :refs, :only => [], :path => "/" do diff --git a/spec/requests/projects_spec.rb b/spec/requests/projects_spec.rb index b0a52dcb..391bc3e5 100644 --- a/spec/requests/projects_spec.rb +++ b/spec/requests/projects_spec.rb @@ -140,7 +140,7 @@ describe "Projects" do end it "should be correct path" do - current_path.should == project_path(@project) + current_path.should == info_project_path(@project) end it "should show project" do