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:
-rw-r--r--Gemfile1
-rw-r--r--Gemfile.lock2
-rw-r--r--app/assets/javascripts/dashboard.js.coffee3
-rw-r--r--app/assets/javascripts/issues.js.coffee3
-rw-r--r--app/assets/javascripts/profile.js.coffee3
-rw-r--r--app/assets/javascripts/projects.js1
-rw-r--r--app/assets/stylesheets/projects.css.scss4
-rw-r--r--app/controllers/issues_controller.rb10
-rw-r--r--app/models/issue.rb2
-rw-r--r--app/models/project.rb2
-rw-r--r--app/views/issues/_show.html.haml2
-rw-r--r--app/views/issues/index.html.haml26
-rw-r--r--app/views/issues/index.js.haml1
-rw-r--r--config/initializers/rails_footnotes.rb6
-rw-r--r--config/routes.rb6
-rw-r--r--db/schema.rb3
16 files changed, 59 insertions, 16 deletions
diff --git a/Gemfile b/Gemfile
index 374b50318b9..523793e7ca5 100644
--- a/Gemfile
+++ b/Gemfile
@@ -19,6 +19,7 @@ gem "albino", :git => "git://github.com/gitlabhq/albino.git"
gem "kaminari"
gem "thin"
gem "git"
+gem "acts_as_list"
group :assets do
gem 'sass-rails', " ~> 3.1.0"
diff --git a/Gemfile.lock b/Gemfile.lock
index c02ad3cdc18..2aa894aa87f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -61,6 +61,7 @@ GEM
activesupport (= 3.1.0)
activesupport (3.1.0)
multi_json (~> 1.0)
+ acts_as_list (0.1.4)
addressable (2.2.6)
ansi (1.3.0)
archive-tar-minitar (0.5.2)
@@ -240,6 +241,7 @@ PLATFORMS
ruby
DEPENDENCIES
+ acts_as_list
albino!
annotate!
autotest
diff --git a/app/assets/javascripts/dashboard.js.coffee b/app/assets/javascripts/dashboard.js.coffee
deleted file mode 100644
index 761567942fc..00000000000
--- a/app/assets/javascripts/dashboard.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/issues.js.coffee b/app/assets/javascripts/issues.js.coffee
deleted file mode 100644
index 761567942fc..00000000000
--- a/app/assets/javascripts/issues.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/profile.js.coffee b/app/assets/javascripts/profile.js.coffee
deleted file mode 100644
index 761567942fc..00000000000
--- a/app/assets/javascripts/profile.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 dc13d006077..74f0e643c21 100644
--- a/app/assets/javascripts/projects.js
+++ b/app/assets/javascripts/projects.js
@@ -34,6 +34,7 @@ $(document).ready(function(){
e.preventDefault();
}
});
+
});
function focusSearch() {
diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss
index 0ee40f512ac..fdfd2b8653b 100644
--- a/app/assets/stylesheets/projects.css.scss
+++ b/app/assets/stylesheets/projects.css.scss
@@ -539,3 +539,7 @@ tbody tr:nth-child(2n) td, tbody tr.even td {
float:left;
}
}
+
+.handle:hover{
+ cursor: move;
+}
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index f8b4719809b..3e5f2898228 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -69,4 +69,14 @@ class IssuesController < ApplicationController
format.js { render :nothing => true }
end
end
+
+ def sort
+ @issues = @project.issues.all
+ @issues.each do |issue|
+ issue.position = params['issue'].index(issue.id.to_s) + 1
+ issue.save
+ end
+
+ render :nothing => true
+ end
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 0399607efe6..9b1b923eaa0 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -21,6 +21,8 @@ class Issue < ActiveRecord::Base
scope :opened, where(:closed => false)
scope :closed, where(:closed => true)
scope :assigned, lambda { |u| where(:assignee_id => u.id)}
+
+ acts_as_list
end
# == Schema Information
#
diff --git a/app/models/project.rb b/app/models/project.rb
index 17b556c3471..06a36a275b9 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -3,7 +3,7 @@ require "grit"
class Project < ActiveRecord::Base
belongs_to :owner, :class_name => "User"
- has_many :issues, :dependent => :destroy
+ has_many :issues, :dependent => :destroy, :order => "position"
has_many :users_projects, :dependent => :destroy
has_many :users, :through => :users_projects
has_many :notes, :dependent => :destroy
diff --git a/app/views/issues/_show.html.haml b/app/views/issues/_show.html.haml
index 131d0d4c8a2..cf01020806a 100644
--- a/app/views/issues/_show.html.haml
+++ b/app/views/issues/_show.html.haml
@@ -1,6 +1,6 @@
%tr{ :id => dom_id(issue), :class => "issue", :url => project_issue_path(@project, issue) }
%td
- = image_tag gravatar_icon(issue.assignee.email), :class => "left", :width => 40, :style => "padding:0 5px;"
+ = image_tag gravatar_icon(issue.assignee.email), :class => ["left", "handle"], :width => 40, :style => "padding:0 5px;"
= truncate issue.assignee.name, :lenght => 20
%td ##{issue.id}
%td= html_escape issue.title
diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml
index 7157d2c385d..6f4548a8066 100644
--- a/app/views/issues/index.html.haml
+++ b/app/views/issues/index.html.haml
@@ -22,3 +22,29 @@
:javascript
$('.delete-issue').live('ajax:success', function() {
$(this).closest('tr').fadeOut(); });
+
+ function setSortable(){
+ $('#issues-table>tbody').sortable({
+ axis: 'y',
+ dropOnEmpty: false,
+ handle: '.handle',
+ cursor: 'crosshair',
+ items: 'tr',
+ opacity: 0.4,
+ scroll: true,
+ update: function(){
+ $.ajax({
+ type: 'post',
+ data: $('#issues-table>tbody').sortable('serialize'),
+ dataType: 'script',
+ complete: function(request){
+ $('#issues-table>tbody').effect('highlight');
+ },
+ url: "#{sort_project_issues_path(@project)}"})
+ }
+ });
+ }
+
+ $(function(){
+ setSortable();
+ });
diff --git a/app/views/issues/index.js.haml b/app/views/issues/index.js.haml
index 1f051309233..bc18ac15151 100644
--- a/app/views/issues/index.js.haml
+++ b/app/views/issues/index.js.haml
@@ -1,2 +1,3 @@
:plain
$('#issues-table-holder').html("#{escape_javascript(render('issues'))}");
+ setSortable();
diff --git a/config/initializers/rails_footnotes.rb b/config/initializers/rails_footnotes.rb
index da9d58e4acb..db71e39c608 100644
--- a/config/initializers/rails_footnotes.rb
+++ b/config/initializers/rails_footnotes.rb
@@ -1,5 +1,5 @@
-if defined?(Footnotes) && Rails.env.development?
- Footnotes.run! # first of all
+#if defined?(Footnotes) && Rails.env.development?
+ #Footnotes.run! # first of all
# ... other init code
-end
+#end
diff --git a/config/routes.rb b/config/routes.rb
index 00106b119a6..bdfdff5ffd1 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -40,7 +40,11 @@ Gitlab::Application.routes.draw do
end
resources :commits
resources :team_members
- resources :issues
+ resources :issues do
+ collection do
+ post :sort
+ end
+ end
resources :notes, :only => [:create, :destroy]
end
root :to => "projects#index"
diff --git a/db/schema.rb b/db/schema.rb
index befe0b2a518..ed37dbbb923 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20111009111204) do
+ActiveRecord::Schema.define(:version => 20111015154310) do
create_table "issues", :force => true do |t|
t.string "title"
@@ -22,6 +22,7 @@ ActiveRecord::Schema.define(:version => 20111009111204) do
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "closed", :default => false, :null => false
+ t.integer "position", :default => 0
end
create_table "keys", :force => true do |t|