Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-01-06 01:09:38 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-01-06 01:09:38 +0400
commite142ebde5cb9600f25dd844030318c51dcadb54b (patch)
treeccdbd1a6d28859bd037f7520870d50144988adc3
parentd5642d3098f33fc5128cb53a52ce80a2ade4b83e (diff)
parenteded4bfa95320974a0a2f52da2ce0f46974734bb (diff)
Merge branch 'koenpunt-mergerequest-to-coffee'
-rw-r--r--app/assets/javascripts/merge_requests.js132
-rw-r--r--app/assets/javascripts/merge_requests.js.coffee97
-rw-r--r--app/assets/stylesheets/common.scss2
-rw-r--r--app/assets/stylesheets/sections/merge_requests.scss4
-rw-r--r--app/controllers/merge_requests_controller.rb2
-rw-r--r--app/views/merge_requests/_form.html.haml7
-rw-r--r--app/views/merge_requests/_show.html.haml57
-rw-r--r--app/views/merge_requests/automerge.js.haml2
-rw-r--r--app/views/merge_requests/commits.js.haml2
-rw-r--r--app/views/merge_requests/diffs.js.haml6
-rw-r--r--app/views/merge_requests/index.html.haml4
-rw-r--r--app/views/merge_requests/show.js.haml2
-rw-r--r--app/views/merge_requests/show/_commits.html.haml8
-rw-r--r--app/views/merge_requests/show/_mr_accept.html.haml7
-rw-r--r--lib/gitlab/satellite/satellite.rb12
15 files changed, 158 insertions, 186 deletions
diff --git a/app/assets/javascripts/merge_requests.js b/app/assets/javascripts/merge_requests.js
deleted file mode 100644
index ee714f9cabb..00000000000
--- a/app/assets/javascripts/merge_requests.js
+++ /dev/null
@@ -1,132 +0,0 @@
-var MergeRequest = {
- diffs_loaded: false,
- commits_loaded: false,
- opts: false,
-
- init:
- function(opts) {
- var self = this;
- self.opts = opts;
-
- self.initTabs();
- self.initMergeWidget();
-
- $(".mr_show_all_commits").bind("click", function() {
- self.showAllCommits();
- });
- },
-
- initMergeWidget:
- function() {
- var self = this;
- self.showState(self.opts.current_state);
-
- if($(".automerge_widget").length && self.opts.check_enable){
- $.get(self.opts.url_to_automerge_check, function(data){
- self.showState(data.state);
- }, "json");
- }
-
- if(self.opts.ci_enable){
- $.get(self.opts.url_to_ci_check, function(data){
- self.showCiState(data.status);
- }, "json");
- }
- },
-
- initTabs:
- function() {
- $(".mr_nav_tabs a").live("click", function() {
- $(".mr_nav_tabs a").parent().removeClass("active");
- $(this).parent().addClass("active");
- });
-
- var current_tab;
- if(this.opts.action == "diffs") {
- current_tab = $(".mr_nav_tabs .merge-diffs-tab");
- } else {
- current_tab = $(".mr_nav_tabs .merge-notes-tab");
- }
- current_tab.parent().addClass("active");
-
- this.initNotesTab();
- this.initDiffTab();
- },
-
- initNotesTab:
- function() {
- $(".mr_nav_tabs a.merge-notes-tab").live("click", function(e) {
- $(".merge-request-diffs").hide();
- $(".merge_request_notes").show();
- var mr_path = $(".merge-notes-tab").attr("data-url");
- history.pushState({ path: mr_path }, '', mr_path);
- e.preventDefault();
- });
- },
-
- initDiffTab:
- function() {
- $(".mr_nav_tabs a.merge-diffs-tab").live("click", function(e) {
- if(!MergeRequest.diffs_loaded) {
- MergeRequest.loadDiff();
- }
- $(".merge_request_notes").hide();
- $(".merge-request-diffs").show();
- var mr_diff_path = $(".merge-diffs-tab").attr("data-url");
- history.pushState({ path: mr_diff_path }, '', mr_diff_path);
- e.preventDefault();
- });
-
- },
-
- showState:
- function(state){
- $(".automerge_widget").hide();
- $(".automerge_widget." + state).show();
- },
-
- showCiState:
- function(state){
- $(".ci_widget").hide();
- $(".ci_widget.ci-" + state).show();
- },
-
- loadDiff:
- function() {
- $(".dashboard-loader").show();
- $.ajax({
- type: "GET",
- url: $(".merge-diffs-tab").attr("data-url"),
- beforeSend: function(){ $('.status').addClass("loading")},
- complete: function(){
- MergeRequest.diffs_loaded = true;
- $(".merge_request_notes").hide();
- $('.status').removeClass("loading");
- },
- dataType: "script"});
- },
-
- showAllCommits:
- function() {
- $(".first_mr_commits").remove();
- $(".all_mr_commits").removeClass("hide");
- },
-
- already_cannot_be_merged:
- function(){
- $(".automerge_widget").hide();
- $(".merge_in_progress").hide();
- $(".automerge_widget.already_cannot_be_merged").show();
- }
-};
-
-/*
- * Filter merge requests
- */
-function merge_requestsPage() {
- $("#assignee_id").chosen();
- $("#milestone_id").chosen();
- $("#milestone_id, #assignee_id").on("change", function(){
- $(this).closest("form").submit();
- });
-}
diff --git a/app/assets/javascripts/merge_requests.js.coffee b/app/assets/javascripts/merge_requests.js.coffee
new file mode 100644
index 00000000000..a73d04580af
--- /dev/null
+++ b/app/assets/javascripts/merge_requests.js.coffee
@@ -0,0 +1,97 @@
+#
+# * Filter merge requests
+#
+@merge_requestsPage = ->
+ $('#assignee_id').chosen()
+ $('#milestone_id').chosen()
+ $('#milestone_id, #assignee_id').on 'change', ->
+ $(this).closest('form').submit()
+
+class MergeRequest
+
+ constructor: (@opts) ->
+ this.$el = $('.merge-request')
+ @diffs_loaded = false
+ @commits_loaded = false
+
+ this.activateTab(@opts.action)
+
+ this.bindEvents()
+
+ this.initMergeWidget()
+ this.$('.show-all-commits').on 'click', =>
+ this.showAllCommits()
+
+ # Local jQuery finder
+ $: (selector) ->
+ this.$el.find(selector)
+
+ initMergeWidget: ->
+ this.showState( @opts.current_state )
+
+ if this.$('.automerge_widget').length and @opts.check_enable
+ $.get @opts.url_to_automerge_check, (data) =>
+ this.showState( data.state )
+ , 'json'
+
+ if @opts.ci_enable
+ $.get self.opts.url_to_ci_check, (data) =>
+ this.showCiState data.status
+ , 'json'
+
+ bindEvents: ->
+ this.$('.nav-tabs').on 'click', 'a', (event) =>
+ a = $(event.currentTarget)
+
+ href = a.attr('href')
+ History.replaceState {path: href}, document.title, href
+
+ event.preventDefault()
+
+ this.$('.nav-tabs').on 'click', 'li', (event) =>
+ this.activateTab($(event.currentTarget).data('action'))
+
+ activateTab: (action) ->
+ this.$('.nav-tabs li').removeClass 'active'
+ this.$('.tab-content').hide()
+ switch action
+ when 'diffs'
+ this.$('.nav-tabs .diffs-tab').addClass 'active'
+ this.loadDiff() unless @diffs_loaded
+ this.$('.diffs').show()
+ else
+ this.$('.nav-tabs .notes-tab').addClass 'active'
+ this.$('.notes').show()
+
+ showState: (state) ->
+ $('.automerge_widget').hide()
+ $('.automerge_widget.' + state).show()
+
+ showCiState: (state) ->
+ $('.ci_widget').hide()
+ $('.ci_widget.ci-' + state).show()
+
+ loadDiff: (event) ->
+ $('.dashboard-loader').show()
+ $.ajax
+ type: 'GET'
+ url: this.$('.nav-tabs .diffs-tab a').attr('href')
+ beforeSend: =>
+ this.$('.status').addClass 'loading'
+
+ complete: =>
+ @diffs_loaded = true
+ this.$('.status').removeClass 'loading'
+
+ dataType: 'script'
+
+ showAllCommits: ->
+ this.$('.first-commits').remove()
+ this.$('.all-commits').removeClass 'hide'
+
+ alreadyOrCannotBeMerged: ->
+ this.$('.automerge_widget').hide()
+ this.$('.merge-in-progress').hide()
+ this.$('.automerge_widget.already_cannot_be_merged').show()
+
+this.MergeRequest = MergeRequest \ No newline at end of file
diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss
index dcdfcdb289c..62adb777c04 100644
--- a/app/assets/stylesheets/common.scss
+++ b/app/assets/stylesheets/common.scss
@@ -425,7 +425,7 @@ li.note {
.supp_diff_link,
-.mr_show_all_commits {
+.show-all-commits {
cursor: pointer;
}
diff --git a/app/assets/stylesheets/sections/merge_requests.scss b/app/assets/stylesheets/sections/merge_requests.scss
index 66ec642e057..93d40bf9202 100644
--- a/app/assets/stylesheets/sections/merge_requests.scss
+++ b/app/assets/stylesheets/sections/merge_requests.scss
@@ -43,7 +43,7 @@
}
}
-.mr_nav_tabs {
+.merge-request .nav-tabs{
li {
a {
font-weight: bold;
@@ -65,7 +65,7 @@ li.merge_request {
}
}
-.merge_in_progress {
+.merge-in-progress {
@extend .padded;
@extend .append-bottom-10;
}
diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb
index d2d92e60585..6ead406aac5 100644
--- a/app/controllers/merge_requests_controller.rb
+++ b/app/controllers/merge_requests_controller.rb
@@ -69,6 +69,8 @@ class MergeRequestsController < ProjectResourceController
@merge_request.check_if_can_be_merged
end
render json: {state: @merge_request.human_state}
+ rescue Gitlab::SatelliteNotExistError
+ render json: {state: :no_satellite}
end
def automerge
diff --git a/app/views/merge_requests/_form.html.haml b/app/views/merge_requests/_form.html.haml
index 67444dad5de..0aaf6566d46 100644
--- a/app/views/merge_requests/_form.html.haml
+++ b/app/views/merge_requests/_form.html.haml
@@ -1,4 +1,4 @@
-= form_for [@project, @merge_request], html: { class: "new_merge_request form-horizontal" } do |f|
+= form_for [@project, @merge_request], html: { class: "#{controller.action_name}-merge-request form-horizontal" } do |f|
-if @merge_request.errors.any?
.alert-message.block-message.error
%ul
@@ -61,8 +61,9 @@
:javascript
$(function(){
disableButtonIfEmptyField("#merge_request_title", ".save-btn");
- var source_branch = $("#merge_request_source_branch");
- var target_branch = $("#merge_request_target_branch");
+
+ var source_branch = $("#merge_request_source_branch")
+ , target_branch = $("#merge_request_target_branch");
$.get("#{branch_from_project_merge_requests_path(@project)}", {ref: source_branch.val() });
$.get("#{branch_to_project_merge_requests_path(@project)}", {ref: target_branch.val() });
diff --git a/app/views/merge_requests/_show.html.haml b/app/views/merge_requests/_show.html.haml
index 20ba991e79a..b65d1596f53 100644
--- a/app/views/merge_requests/_show.html.haml
+++ b/app/views/merge_requests/_show.html.haml
@@ -1,33 +1,35 @@
-= render "merge_requests/show/mr_title"
-= render "merge_requests/show/how_to_merge"
-= render "merge_requests/show/mr_box"
-= render "merge_requests/show/mr_accept"
-- if @project.gitlab_ci?
- = render "merge_requests/show/mr_ci"
-= render "merge_requests/show/commits"
+.merge-request
+ = render "merge_requests/show/mr_title"
+ = render "merge_requests/show/how_to_merge"
+ = render "merge_requests/show/mr_box"
+ = render "merge_requests/show/mr_accept"
+ - if @project.gitlab_ci?
+ = render "merge_requests/show/mr_ci"
+ = render "merge_requests/show/commits"
-- if @commits.present?
- %ul.nav.nav-tabs.mr_nav_tabs
- %li
- = link_to "#notes", "data-url" => project_merge_request_path(@project, @merge_request), class: "merge-notes-tab tab" do
- %i.icon-comment
- Comments
- %li
- = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), class: "merge-diffs-tab tab" do
- %i.icon-list-alt
- Diff
+ - if @commits.present?
+ %ul.nav.nav-tabs
+ %li.notes-tab{data: {action: 'notes'}}
+ = link_to project_merge_request_path(@project, @merge_request) do
+ %i.icon-comment
+ Comments
+ %li.diffs-tab{data: {action: 'diffs'}}
+ = link_to diffs_project_merge_request_path(@project, @merge_request) do
+ %i.icon-list-alt
+ Diff
-.merge_request_notes.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" }
- = render("notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")
-.merge-request-diffs
- = render "merge_requests/show/diffs" if @diffs
-.status
+ .notes.tab-content.voting_notes#notes{ class: (controller.action_name == 'show') ? "" : "hide" }
+ = render("notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")
+ .diffs.tab-content
+ = render "merge_requests/show/diffs" if @diffs
+ .status
-= render "notes/per_line_form"
+ = render "notes/per_line_form"
:javascript
+ var merge_request;
$(function(){
- MergeRequest.init({
+ merge_request = new MergeRequest({
url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}",
check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"},
url_to_ci_check: "#{ci_status_project_merge_request_path(@project, @merge_request)}",
@@ -35,10 +37,5 @@
current_state: "#{@merge_request.human_state}",
action: "#{controller.action_name}"
});
-
- $(".edit_merge_request").live("ajax:beforeSend", function() {
- $('.can_be_merged').hide();
- $('.merge_in_progress').show();
- })
- })
+ });
diff --git a/app/views/merge_requests/automerge.js.haml b/app/views/merge_requests/automerge.js.haml
index 93e184455af..e01ff662e7d 100644
--- a/app/views/merge_requests/automerge.js.haml
+++ b/app/views/merge_requests/automerge.js.haml
@@ -3,5 +3,5 @@
location.reload();
-else
:plain
- MergeRequest.already_cannot_be_merged()
+ merge_request.alreadyOrCannotBeMerged()
diff --git a/app/views/merge_requests/commits.js.haml b/app/views/merge_requests/commits.js.haml
index 76322bdb210..923b1ea032f 100644
--- a/app/views/merge_requests/commits.js.haml
+++ b/app/views/merge_requests/commits.js.haml
@@ -1,4 +1,4 @@
:plain
- $(".merge-request-commits").html("#{escape_javascript(render(partial: "commits"))}");
+ merge_request.$(".commits").html("#{escape_javascript(render(partial: "commits"))}");
diff --git a/app/views/merge_requests/diffs.js.haml b/app/views/merge_requests/diffs.js.haml
index 98539985324..1d92f1a6fb8 100644
--- a/app/views/merge_requests/diffs.js.haml
+++ b/app/views/merge_requests/diffs.js.haml
@@ -1,7 +1,5 @@
:plain
- $(".merge-request-diffs").html("#{escape_javascript(render(partial: "merge_requests/show/diffs"))}");
+ merge_request.$(".diffs").html("#{escape_javascript(render(partial: "merge_requests/show/diffs"))}");
- $(function(){
- PerLineNotes.init();
- });
+ PerLineNotes.init();
diff --git a/app/views/merge_requests/index.html.haml b/app/views/merge_requests/index.html.haml
index f23dd46c98a..c80c034e513 100644
--- a/app/views/merge_requests/index.html.haml
+++ b/app/views/merge_requests/index.html.haml
@@ -44,6 +44,4 @@
%span.cgray.right #{@merge_requests.total_count} merge requests for this filter
:javascript
- $(function() {
- merge_requestsPage();
- })
+ $(merge_requestsPage);
diff --git a/app/views/merge_requests/show.js.haml b/app/views/merge_requests/show.js.haml
index f44ccbb5127..a2a79307453 100644
--- a/app/views/merge_requests/show.js.haml
+++ b/app/views/merge_requests/show.js.haml
@@ -1,2 +1,2 @@
:plain
- $(".merge-request-notes").html("#{escape_javascript(render notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")}");
+ merge_request.$(".notes").html("#{escape_javascript(render "notes/notes_with_form", tid: @merge_request.id, tt: "merge_request")}");
diff --git a/app/views/merge_requests/show/_commits.html.haml b/app/views/merge_requests/show/_commits.html.haml
index 40d85db0262..5e27b6dc25a 100644
--- a/app/views/merge_requests/show/_commits.html.haml
+++ b/app/views/merge_requests/show/_commits.html.haml
@@ -3,16 +3,16 @@
%h5.title
%i.icon-list
Commits (#{@commits.count})
- .merge-request-commits
+ .commits
- if @commits.count > 8
- %ul.first_mr_commits.well-list
+ %ul.first-commits.well-list
- @commits.first(8).each do |commit|
= render "commits/commit", commit: commit
%li.bottom
8 of #{@commits.count} commits displayed.
%strong
- %a.mr_show_all_commits Click here to show all
- %ul.all_mr_commits.hide.well-list
+ %a.show-all-commits Click here to show all
+ %ul.all-commits.hide.well-list
- @commits.each do |commit|
= render "commits/commit", commit: commit
diff --git a/app/views/merge_requests/show/_mr_accept.html.haml b/app/views/merge_requests/show/_mr_accept.html.haml
index b7e68937131..128ffe76782 100644
--- a/app/views/merge_requests/show/_mr_accept.html.haml
+++ b/app/views/merge_requests/show/_mr_accept.html.haml
@@ -23,6 +23,11 @@
.clearfix
+ .automerge_widget.no_satellite{style: "display:none"}
+ .alert.alert-error
+ %span
+ %strong This repository does not have satellite. Ask administrator to fix this issue
+
.automerge_widget.cannot_be_merged{style: "display:none"}
.alert.alert-info
%span
@@ -40,6 +45,6 @@
.alert.alert-info
%strong This merge request already can not be merged. Try to reload page.
- .merge_in_progress.hide
+ .merge-in-progress.hide
%span.cgray Merge is in progress. Please wait. Page will be automatically reloaded. &nbsp;
= image_tag "ajax_loader.gif"
diff --git a/lib/gitlab/satellite/satellite.rb b/lib/gitlab/satellite/satellite.rb
index 784b146b98a..a0abf1918ca 100644
--- a/lib/gitlab/satellite/satellite.rb
+++ b/lib/gitlab/satellite/satellite.rb
@@ -1,4 +1,6 @@
module Gitlab
+ class SatelliteNotExistError < StandardError; end
+
module Satellite
class Satellite
PARKING_BRANCH = "__parking_branch"
@@ -9,8 +11,12 @@ module Gitlab
@project = project
end
+ def raise_no_satellite
+ raise SatelliteNotExistError.new("Satellite doesn't exist")
+ end
+
def clear_and_update!
- raise "Satellite doesn't exist" unless exists?
+ raise_no_satellite unless exists?
delete_heads!
clear_working_dir!
@@ -35,7 +41,7 @@ module Gitlab
# * Changes the current directory to the satellite's working dir
# * Yields
def lock
- raise "Satellite doesn't exist" unless exists?
+ raise_no_satellite unless exists?
File.open(lock_file, "w+") do |f|
f.flock(File::LOCK_EX)
@@ -55,7 +61,7 @@ module Gitlab
end
def repo
- raise "Satellite doesn't exist" unless exists?
+ raise_no_satellite unless exists?
@repo ||= Grit::Repo.new(path)
end