From 1b6fb006ca6a57ae381608ff23ab464d7498ee26 Mon Sep 17 00:00:00 2001 From: Artiom Lunev Date: Mon, 12 Dec 2011 00:18:51 +0200 Subject: [PATCH 01/10] fix merge request note link --- app/helpers/dashboard_helper.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb index 78cc2343..5cf10278 100644 --- a/app/helpers/dashboard_helper.rb +++ b/app/helpers/dashboard_helper.rb @@ -10,6 +10,7 @@ module DashboardHelper when "Issue" then project_issue_path(project, note.noteable_id) when "Snippet" then project_snippet_path(project, note.noteable_id) when "Commit" then project_commit_path(project, :id => note.noteable_id) + when "MergeRequest" then project_merge_request_path(project, note.noteable_id) else wall_project_path(project) end else wall_project_path(project) From f615c877bcb36aa2e4bc399545376671b55f167e Mon Sep 17 00:00:00 2001 From: Saito Date: Tue, 13 Dec 2011 00:41:31 +0800 Subject: [PATCH 02/10] fix can not guess problem --- app/helpers/application_helper.rb | 1 + app/helpers/commits_helper.rb | 2 -- lib/utils.rb | 3 ++- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 47067083..ed065bc4 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,5 +1,6 @@ require 'digest/md5' module ApplicationHelper + include Utils::CharEncode def gravatar_icon(user_email) gravatar_host = request.ssl? ? "https://secure.gravatar.com" : "http://www.gravatar.com" diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb index ae782671..98ec9936 100644 --- a/app/helpers/commits_helper.rb +++ b/app/helpers/commits_helper.rb @@ -1,6 +1,4 @@ module CommitsHelper - include Utils::CharEncode - def old_line_number(line, i) end diff --git a/lib/utils.rb b/lib/utils.rb index 17c9dfe3..2de14761 100644 --- a/lib/utils.rb +++ b/lib/utils.rb @@ -18,13 +18,14 @@ module Utils module CharEncode def encode(string) + return '' unless string cd = CharDet.detect(string) if cd.confidence > 0.6 string.force_encoding(cd.encoding) end string.encode("utf-8", :undef => :replace, :replace => "?", :invalid => :replace) rescue - "Invalid code encoding" + "Invalid Encoding" end end From 7b7549bea6ab59676e85460bb9ab83b8403d66f2 Mon Sep 17 00:00:00 2001 From: Saito Date: Tue, 13 Dec 2011 00:42:07 +0800 Subject: [PATCH 03/10] tree view readme support --- app/assets/stylesheets/projects.css.scss | 35 ++++++++++++++++-------- app/views/refs/_tree.html.haml | 8 +++++- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss index a456d64d..a68c00f0 100644 --- a/app/assets/stylesheets/projects.css.scss +++ b/app/assets/stylesheets/projects.css.scss @@ -67,8 +67,8 @@ a { } } -.view_file .view_file_header, -.diff_file .diff_file_header { +.view_file .view_file_header, +.diff_file .diff_file_header { background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); @@ -116,7 +116,7 @@ td.code { word-wrap:normal; } -table.highlighttable { +table.highlighttable { border: none; background: #F7F7F7; } @@ -331,7 +331,7 @@ body.project-page table .commit { border:none; text-shadow:none; - &.inline { + &.inline { display:inline; } @@ -430,28 +430,28 @@ body.projects-page input.text.git-url.project_list_url { width:165px; } body.project-page table.no-borders tr, -body.project-page table.no-borders td{ +body.project-page table.no-borders td{ border:none; } -#gitlab-tabs { +#gitlab-tabs { .ui-tabs-nav { border-bottom: 1px solid #DEDFE1; - li { + li { background: none; border:none; font-size: 16px; margin: 0; padding: 0; - a { + a { margin: 0; padding: 10px 16px; width:150px; } - &.ui-tabs-selected { + &.ui-tabs-selected { background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); @@ -466,17 +466,28 @@ body.project-page table.no-borders td{ border-top-left-radius: 5px; border-top-right-radius: 5px; } - } - } + } + } } -.ajax-tab-loading { +.ajax-tab-loading { padding:40px; display:none; } #tree-content-holder { float:left; width:100%; } +#tree-readme-holder { + float:left; + width:100%; + + .readme { + @include round-borders-all(4px); + padding: 4px 15px; + background:#F7F7F7; + } +} + /* Commit Page */ diff --git a/app/views/refs/_tree.html.haml b/app/views/refs/_tree.html.haml index 502a6a41..4ed70f34 100644 --- a/app/views/refs/_tree.html.haml +++ b/app/views/refs/_tree.html.haml @@ -22,7 +22,7 @@ %th Last commit = link_to "history", tree.history_path, :class => "right" - + - if tree.up_dir? %tr{ :class => "tree-item", :url => tree.up_dir_path } %td.tree-item-file-name @@ -36,6 +36,12 @@ - contents.select{ |i| i.is_a?(Grit::Blob)}.each do |content| = render :partial => "refs/tree_item", :locals => { :content => content } + - if content = contents.select{ |c| c.is_a?(Grit::Blob) and c.name =~ /^readme\.(md|markdown)$/i }.first + #tree-readme-holder + %h3= content.name + .readme + = markdown(encode content.data) + :javascript $(function(){ $('select#branch').selectmenu({style:'popup', width:200}); From faf7c79eb2d0c380b692be413953d206f2984b0b Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 12 Dec 2011 20:08:04 +0200 Subject: [PATCH 04/10] lil js refactoring --- app/assets/javascripts/merge_requests.js | 0 .../javascripts/merge_requests.js.coffee | 3 --- app/assets/javascripts/projects.js | 13 ------------ app/assets/javascripts/tree.js | 21 +++++++++++++++++++ app/views/refs/tree.html.haml | 5 +++++ 5 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 app/assets/javascripts/merge_requests.js delete mode 100644 app/assets/javascripts/merge_requests.js.coffee create mode 100644 app/assets/javascripts/tree.js diff --git a/app/assets/javascripts/merge_requests.js b/app/assets/javascripts/merge_requests.js new file mode 100644 index 00000000..e69de29b diff --git a/app/assets/javascripts/merge_requests.js.coffee b/app/assets/javascripts/merge_requests.js.coffee deleted file mode 100644 index 76156794..00000000 --- a/app/assets/javascripts/merge_requests.js.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# Place all the behaviors and hooks related to the matching controller here. -# All this logic will automatically be available in application.js. -# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/javascripts/projects.js b/app/assets/javascripts/projects.js index 4ffbd140..7d21f061 100644 --- a/app/assets/javascripts/projects.js +++ b/app/assets/javascripts/projects.js @@ -1,17 +1,4 @@ $(document).ready(function(){ - $('#tree-slider td.tree-item-file-name a, #tree-breadcrumbs a').live("click", function() { - history.pushState({ path: this.path }, '', this.href) - }) - - $("#tree-slider tr.tree-item").live('click', function(e){ - if(e.target.nodeName != "A") { - e.stopPropagation(); - link = $(this).find("td.tree-item-file-name a") - link.click(); - return false; - } - }); - $("#projects-list .project").live('click', function(e){ if(e.target.nodeName != "A" && e.target.nodeName != "INPUT") { location.href = $(this).attr("url"); diff --git a/app/assets/javascripts/tree.js b/app/assets/javascripts/tree.js new file mode 100644 index 00000000..6edd7e49 --- /dev/null +++ b/app/assets/javascripts/tree.js @@ -0,0 +1,21 @@ +/** + * Tree slider for code browse + * + */ +var Tree = { + init: + function() { + $('#tree-slider td.tree-item-file-name a, #tree-breadcrumbs a').live("click", function() { + history.pushState({ path: this.path }, '', this.href) + }) + + $("#tree-slider tr.tree-item").live('click', function(e){ + if(e.target.nodeName != "A") { + e.stopPropagation(); + link = $(this).find("td.tree-item-file-name a"); + link.click(); + return false; + } + }); + } +} diff --git a/app/views/refs/tree.html.haml b/app/views/refs/tree.html.haml index e59bbf05..46eeb6f5 100644 --- a/app/views/refs/tree.html.haml +++ b/app/views/refs/tree.html.haml @@ -1 +1,6 @@ #tree-holder= render :partial => "tree", :locals => {:repo => @repo, :commit => @commit, :tree => @tree} + +:javascript + $(function() { + Tree.init(); + }); From 926f3013c25645543fb1c91f7346585fdcb7a3a6 Mon Sep 17 00:00:00 2001 From: Jeremy Mack Date: Mon, 12 Dec 2011 13:13:11 -0500 Subject: [PATCH 05/10] Updated validations and routes to support dots in project names --- app/models/project.rb | 4 ++-- config/routes.rb | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/models/project.rb b/app/models/project.rb index a5361313..85d5416b 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -25,7 +25,7 @@ class Project < ActiveRecord::Base validates :path, :uniqueness => true, :presence => true, - :format => { :with => /^[a-zA-Z0-9_\-]*$/, + :format => { :with => /^[a-zA-Z0-9_\-\.]*$/, :message => "only letters, digits & '_' '-' allowed" }, :length => { :within => 0..255 } @@ -35,7 +35,7 @@ class Project < ActiveRecord::Base validates :code, :presence => true, :uniqueness => true, - :format => { :with => /^[a-zA-Z0-9_\-]*$/, + :format => { :with => /^[a-zA-Z0-9_\-\.]*$/, :message => "only letters, digits & '_' '-' allowed" }, :length => { :within => 3..255 } diff --git a/config/routes.rb b/config/routes.rb index 27d0612d..1fbbbfd5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,7 +6,7 @@ Gitlab::Application.routes.draw do namespace :admin do resources :users - resources :projects + resources :projects, :constraints => { :id => /[^\/]+/ } resources :team_members get 'emails', :to => 'mailer#preview' get 'mailer/preview_note' @@ -28,12 +28,12 @@ Gitlab::Application.routes.draw do #get "profile/:id", :to => "profile#show" - resources :projects, :only => [:new, :create, :index] + resources :projects, :constraints => { :id => /[^\/]+/ }, :only => [:new, :create, :index] resources :keys devise_for :users - resources :projects, :except => [:new, :create, :index], :path => "/" do + resources :projects, :constraints => { :id => /[^\/]+/ }, :except => [:new, :create, :index], :path => "/" do member do get "team" get "wall" From a3b6a3ed3552cbbdc74971a1261c668d1365412f Mon Sep 17 00:00:00 2001 From: Jeremy Mack Date: Mon, 12 Dec 2011 13:32:35 -0500 Subject: [PATCH 06/10] Updated error messages to include dot as valid character --- app/models/project.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/project.rb b/app/models/project.rb index 85d5416b..d1eb2793 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -26,7 +26,7 @@ class Project < ActiveRecord::Base :uniqueness => true, :presence => true, :format => { :with => /^[a-zA-Z0-9_\-\.]*$/, - :message => "only letters, digits & '_' '-' allowed" }, + :message => "only letters, digits & '_' '-' '.' allowed" }, :length => { :within => 0..255 } validates :description, @@ -36,7 +36,7 @@ class Project < ActiveRecord::Base :presence => true, :uniqueness => true, :format => { :with => /^[a-zA-Z0-9_\-\.]*$/, - :message => "only letters, digits & '_' '-' allowed" }, + :message => "only letters, digits & '_' '-' '.' allowed" }, :length => { :within => 3..255 } validates :owner, From 02e827283d905477e816fbb940d8a4489df94826 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 12 Dec 2011 22:12:37 +0200 Subject: [PATCH 07/10] increased breadcrumbs with & commit messages --- app/assets/stylesheets/projects.css.scss | 8 ++++++-- app/views/commits/_commits.html.haml | 2 +- app/views/issues/_show.html.haml | 2 +- app/views/refs/_tree.html.haml | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss index d487e581..b26ffcf2 100644 --- a/app/assets/stylesheets/projects.css.scss +++ b/app/assets/stylesheets/projects.css.scss @@ -358,8 +358,12 @@ body.project-page table .commit { color:white; } &.note { - background: #2c5c66; - color:white; + background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); + background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); + background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); + background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8); + color: #777; + border: 1px solid #DEDFE1; } &.issue { background: #D12F19; diff --git a/app/views/commits/_commits.html.haml b/app/views/commits/_commits.html.haml index 4721d119..108d1b4c 100644 --- a/app/views/commits/_commits.html.haml +++ b/app/views/commits/_commits.html.haml @@ -17,7 +17,7 @@ = image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;" %span.commit-title %strong - = truncate(commit.safe_message, :length => 60) + = truncate(commit.safe_message, :length => 70) %span.commit-author %strong= commit.author_name = time_ago_in_words(commit.committed_date) diff --git a/app/views/issues/_show.html.haml b/app/views/issues/_show.html.haml index 904b1895..8c095268 100644 --- a/app/views/issues/_show.html.haml +++ b/app/views/issues/_show.html.haml @@ -2,7 +2,7 @@ %td %strong.issue-number{:class => sort_class}= "##{issue.id}" %span - = truncate(html_escape(issue.title), :length => 40) + = truncate(html_escape(issue.title), :length => 100) %br %br %div.note-author diff --git a/app/views/refs/_tree.html.haml b/app/views/refs/_tree.html.haml index 0fad2452..0c44df58 100644 --- a/app/views/refs/_tree.html.haml +++ b/app/views/refs/_tree.html.haml @@ -4,7 +4,7 @@ %d = link_to tree_project_ref_path(@project, @ref, :path => nil), :remote => true do = @project.code - - tree.breadcrumbs(2) do |link| + - tree.breadcrumbs(3) do |link| \/ = link   From 8426846d6dd018b16c7193ef1bea4527ea08360b Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 12 Dec 2011 23:17:28 +0200 Subject: [PATCH 08/10] fix default branch --- app/assets/stylesheets/projects.css.scss | 3 +-- app/controllers/projects_controller.rb | 1 - app/helpers/application_helper.rb | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss index b26ffcf2..dd897ed3 100644 --- a/app/assets/stylesheets/projects.css.scss +++ b/app/assets/stylesheets/projects.css.scss @@ -548,9 +548,8 @@ h4.dash-tabs { h4.middle-panel { margin: 0; border-bottom: 1px solid #ccc; - padding: 10px 10px; + padding: 10px 20px; font-size: 11px; - padding-left:20px; background: #F7F7F7; height:30px; diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 8d9adedf..1f1da559 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -9,7 +9,6 @@ class ProjectsController < ApplicationController before_filter :authorize_read_project!, :except => [:index, :new, :create] before_filter :authorize_admin_project!, :only => [:edit, :update, :destroy] before_filter :require_non_empty_project, :only => [:blob, :tree, :graph] - before_filter :load_refs, :only => :tree # load @branch, @tag & @ref def index source = current_user.projects diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 2f982dac..76323b27 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -53,7 +53,7 @@ module ApplicationHelper [ "Tag", @project.tags ] ] - grouped_options_for_select(options, @ref) + grouped_options_for_select(options, @ref || @project.default_branch) end def markdown(text) From 3dc94ba8eb74caa6f4eae29970fe261f51e1942e Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 13 Dec 2011 00:08:15 +0200 Subject: [PATCH 09/10] ajax-loader for dashboard --- app/assets/images/ajax-loader-facebook.gif | Bin 0 -> 723 bytes app/assets/javascripts/loader.js | 11 +++++++++++ app/assets/stylesheets/projects.css.scss | 6 ++++++ app/views/dashboard/_menu.html.haml | 12 ++++++++++-- 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 app/assets/images/ajax-loader-facebook.gif create mode 100644 app/assets/javascripts/loader.js diff --git a/app/assets/images/ajax-loader-facebook.gif b/app/assets/images/ajax-loader-facebook.gif new file mode 100644 index 0000000000000000000000000000000000000000..6350e5f45b6ca1b85adf013a46d2f258b2f1928e GIT binary patch literal 723 zcmZ?wbhEHb6kyE<)vMU#?3B#H;E1HBPoDv~r_Y?5Hgn$UbsG!IYA;{8 zx^wrw36p28SiL^Kxcb7y%g>)b-@bECSaeE!N{(+(%+X^fV-mCcLSjoQ8=BgB(sN1z z!r~cVK=D7fpKD04vtxj(k)8oFBT!uNpOkY^YGO%hib8p2NrpmVR$@g?eqxGVW?ou8 zgW^vXPHvzo9gqniM>4SLDk$`&WX@Z%fa}pIrgaVi%@$`&3ocjRyS-yRANv!*_AQSb zPVndzue-+Ox^|iqHWO455+zs@=B>z-X`i_7z^y|o-&|VW`~1z`*SjP1HRiB3S_^hc zFk#bZ2DG|6QRi`o3a643Px6waMH(li&u{5{Z6tMII`e_1z0n^}cndb3y?A+tu;0u> zq1;*`)BFwzU^B`TXw(u8SHTdb-p3|MDxMc#+4KvaFRgrTJ&Sia^NAL_qz&%BMElQ7 zEVg8ks$6}odzaSSAVq8@89~D1+NOwSE`gJGcw9;f3UxiXCH9e3+}mll8Pg8O2fk2d z>^<@91Z(mK7e88+X z-B+c5h6z)=E`yob=>_{91aV+wj;TDVWavt?S6F c!d97Iak>m9Y|fGEmtYMblFhINB@r+H0L=sflK=n! literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/loader.js b/app/assets/javascripts/loader.js new file mode 100644 index 00000000..6fa0b525 --- /dev/null +++ b/app/assets/javascripts/loader.js @@ -0,0 +1,11 @@ +var Loader = { + img_src: "/assets/ajax-loader.gif", + + html: + function(width) { + img = $(""); + img.attr("width", width); + img.attr("src", this.img_src); + return img; + } +} diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss index dd897ed3..f923deb2 100644 --- a/app/assets/stylesheets/projects.css.scss +++ b/app/assets/stylesheets/projects.css.scss @@ -581,3 +581,9 @@ h4.middle-panel { } } } + +.dashboard-loader { + float:right; + margin-right:30px; + display:none; +} diff --git a/app/views/dashboard/_menu.html.haml b/app/views/dashboard/_menu.html.haml index 2cb45fa7..0d04899c 100644 --- a/app/views/dashboard/_menu.html.haml +++ b/app/views/dashboard/_menu.html.haml @@ -2,12 +2,20 @@ = link_to "Activities", dashboard_path, :remote => true, :class => "button-small dash-button #{"active" if current_page?(dashboard_path) || current_page?(root_path) }", :id => "activities_slide" = link_to "Issues", dashboard_issues_path, :remote => true, :class => "button-small dash-button #{"active" if current_page?(dashboard_issues_path)}", :id => "issues_slide" = link_to "Merge Requests", dashboard_merge_requests_path, :remote => true, :class => "button-small dash-button #{"active" if current_page?(dashboard_merge_requests_path)}", :id => "merge_requests_slide" - + %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} :javascript $(function(){ $(".dash-button").live("click", function() { $(".dash-button").removeClass("active"); $(this).addClass("active"); - }) + }); + + $(".dash-button").live("ajax:before", function() { + $(".dashboard-loader").show(); + }); + + $(".dash-button").live("ajax:complete", function() { + $(".dashboard-loader").hide(); + }); }); From 713802fdf317593f1201cf5dd4c34238ffccca0a Mon Sep 17 00:00:00 2001 From: Saito Date: Tue, 13 Dec 2011 19:25:58 +0800 Subject: [PATCH 10/10] add plain text support,keep markdown and plain text in readme --- app/views/refs/_tree.html.haml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/views/refs/_tree.html.haml b/app/views/refs/_tree.html.haml index 0c44df58..07bab212 100644 --- a/app/views/refs/_tree.html.haml +++ b/app/views/refs/_tree.html.haml @@ -35,11 +35,14 @@ - contents.select{ |i| i.is_a?(Grit::Blob)}.each do |content| = render :partial => "refs/tree_item", :locals => { :content => content } - - if content = contents.select{ |c| c.is_a?(Grit::Blob) and c.name =~ /^readme\.(md|markdown)$/i }.first + - if content = contents.select{ |c| c.is_a?(Grit::Blob) and c.name =~ /^readme/i }.first #tree-readme-holder %h3= content.name .readme - = markdown(encode content.data) + - if content.name =~ /\.(md|markdown)$/i + = markdown(encode content.data) + - else + = simple_format(encode content.data) :javascript $(function(){