Read about our upcoming Code of Conduct on this issue

Commit dd833d28 authored by VSizov's avatar VSizov
Browse files

Sortable issues

parent 79411e2ad76d
......@@ -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"
......
......@@ -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
......
# 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/
# 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/
# 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/
......@@ -34,6 +34,7 @@ $(document).ready(function(){
e.preventDefault();
}
});
});
function focusSearch() {
......
......@@ -539,3 +539,7 @@ tbody tr:nth-child(2n) td, tbody tr.even td {
float:left;
}
}
.handle:hover{
cursor: move;
}
......@@ -69,4 +69,14 @@ def destroy
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
......@@ -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
#
......
......@@ -3,7 +3,7 @@
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
......
%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
......
......@@ -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();
});
:plain
$('#issues-table-holder').html("#{escape_javascript(render('issues'))}");
setSortable();
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
......@@ -40,7 +40,11 @@
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"
......
......@@ -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 @@
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|
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment